{"version":3,"sources":["webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/canvg/lib/index.es.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/cookie/index.js","webpack:///./node_modules/clsx/dist/clsx.m.js"],"names":["exports","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","start","end","num","output","compressSpaces","str","replace","trimLeft","trimRight","toNumbers","matches","match","call","allUppercase","normalizeAttributeName","name","test","toLowerCase","parseExternalUrl","url","urlMatch","normalizeColor","color","rgbParts","isFloat","String","Math","round","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","_findSelectorMatch","_findSelectorMatch2","_findSelectorMatch3","_findSelectorMatch4","_findSelectorMatch5","_findSelectorMatch6","_findSelectorMatch7","_findSelectorMatch8","_findSelectorMatch9","_findSelectorMatch10","_findSelectorMatch11","_findSelectorMatch12","_findSelectorMatch13","_findSelectorMatch14","PSEUDO_ZERO","vectorMagnitude","v","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","value","this","isNormalizedColor","key","_context","_context2","separator","arguments","undefined","getString","split","zeroIsValue","regexp","result","isString","hasValue","asString","def","n","rootEmSize","emSize","axisOrIsFontSize","processPercent","_ref","_ref2","axis","isFontSize","viewPort","screen","getNumber","min","computeSize","max","getRem","getEm","getDpi","PI","definitions","element","opacity","getDefinition","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","setValue","textBaselineMapping","getColor","commas","ok","alpha","toRGBA","ViewPort","viewPorts","width","height","pop","d","get","getCurrent","Point","x","y","point","atan2","transform","xp","yp","defaultValue","_toNumbers","_toNumbers2","_toNumbers2$","_toNumbers2$2","scale","_toNumbers3","_toNumbers4","_toNumbers4$","_toNumbers4$2","path","points","pathPoints","Mouse","working","events","eventElements","onClick","onMouseMove","canvas","onclick","onmousemove","style","cursor","run","parent","isPointInPath","boundingBox","_ref3","isPointInBox","_this$screen","window","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","evt","_this$mapXY","mapXY","event","clientX","clientY","type","_this$mapXY2","defaultWindow","defaultFetch","fetch","Screen","_ref$fetch","_ref$window","FRAMERATE","MAX_VIRTUAL_PIXELS","CLIENT_WIDTH","CLIENT_HEIGHT","mouse","animations","waits","frameDuration","isReadyLock","isFirstRender","intervalId","checker","readyPromise","resolve","_","resolveReady","strokeStyle","lineCap","lineJoin","miterLimit","aspectRatio","desiredWidth","desiredHeight","_ref2$minX","minX","_ref2$minY","minY","refX","refY","_ref2$clip","clip","_ref2$clipX","clipX","_ref2$clipY","clipY","_cleanAspectRatio$spl","_cleanAspectRatio$spl2","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","translate","getPixels","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","_this","_ref3$enableRedraw","enableRedraw","_ref3$ignoreMouse","ignoreMouse","_ref3$ignoreAnimation","ignoreAnimation","_ref3$ignoreDimension","ignoreDimensions","_ref3$ignoreClear","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","isReady","render","now","then","tick","shouldUpdate","runEvents","cancel","stop","animation","update","hasEvents","clear","setCurrent","widthStyle","getStyle","heightStyle","concat","cWidth","clientWidth","cHeight","clientHeight","_context3","_context4","viewBox","xRatio","yRatio","_widthStyle","isNaN","_heightStyle","transformStyle","clearRect","defaultFetch$1","DefaultDOMParser","DOMParser","Parser","_ref$DOMParser","_load","_parse","mark","_callee","resource","wrap","prev","next","abrupt","parseFromString","load","_x","apply","xml","parser","checkDocument","err","parserError","getElementsByTagName","textContent","_callee2","response","sent","text","_x2","Translate","parse","_this$point","_this$point2","_this$point3","applyTransform","Rotate","rotate","transformOrigin","angle","originX","originY","cx","cy","numbers","getRadians","rad","cos","sin","Scale","scaleSize","parseScale","_this$scale","_this$scale2","_this$scale3","Matrix","matrix","a","b","c","e","f","det","_createSuper","Derived","hasNativeReflectConstruct","Reflect","sham","Proxy","Date","prototype","toString","_isNativeReflectConstruct","Super","NewTarget","constructor","Skew","_Matrix","_super","skew","_createSuper$1","_isNativeReflectConstruct$1","SkewX","_Skew","tan","_createSuper$2","_isNativeReflectConstruct$2","SkewY","Transform","transforms","data","parseTransforms","_parseTransform","_transform$split","_transform$split2","parseTransform","_parseTransform2","TransformType","transformTypes","unapply","applyToPoint","_element$getStyle$spl","_element$getStyle$spl2","transformOriginXProperty","_element$getStyle$spl3","skewX","skewY","Element","node","captureTextNodes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","nodeType","attribute","nodeName","addStylesFromStyleDefinition","_style$split$map","_style$split$map2","id","getValue","childNodes","childNode","addChild","textNode","createTextNode","getText","createIfNotExists","attr","_attr","empty","skipAncestors","parentStyle","_style","save","mask","applyEffects","filter","setContext","renderChildren","clearContext","restore","fromElement","clipPathStyleProp","_context5","child","_context6","createElement","ignoreChildTypes","_context7","styleClasses","styleClass","_this$document","matchesSelector","existingSpecificity","ignoreStyles","toRestore","_context8","styleProp","_createSuper$3","_isNativeReflectConstruct$3","UnknownElement","_Element","wrapFontFamily","fontFamily","trimmed","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","fontVariant","fontSize","inherit","inheritFont","process","font","set","part","variants","weights","_part$split","_part$split2","BoundingBox","x1","Number","NaN","y1","x2","y2","addPoint","p0","p1","p2","p3","forX","b2ac","t1","addX","sumCubic","addY","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","bezierCurveAdd","cp1x","cp1y","cp2x","cp2y","addBezierCurve","_createSuper$4","_isNativeReflectConstruct$4","RenderedElement","modifiedEmSizeStack","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","isUrlDefinition","fillStyle","getFillStyleDefinition","_fillStyle","_fillStyle2","addOpacity","_strokeStyle","_strokeStyle2","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","pointOrderStyleProp","strokeDasharrayStyleProp","strokeDashoffsetProp","paintOrder","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","isPixels","globalAlpha","calculateOpacity","popEmSize","_createSuper$5","_isNativeReflectConstruct$5","TextElement","_RenderedElement","measureCache","textBaseline","getTextBaseline","dxAttr","dyAttr","getAnchorDelta","_this2","getTElementBoundingBox","initializeCoordinates","childBoundingBox","getChildBoundingBox","addBoundingBox","inheritFontSize","getFontSize","measureText","char","glyph","isArabic","prevChar","nextChar","arabicForm","glyphs","missingGlyph","parentNode","index","lastIndex","_this3","renderChild","isWorking","checkBoundingBox","getBoundingBox","renderTElementChildren","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","dx","getGlyph","lw","horizAdvX","strokeText","fillText","startI","textAnchor","measureTextRecursive","textParent","xAttr","yAttr","_width","adjustChildCoordinates","measure","measureTargetText","targetText","_measure","_createSuper$6","_isNativeReflectConstruct$6","TSpanElement","_TextElement","getTextFromNode","_createSuper$7","_isNativeReflectConstruct$7","TextNode","_TSpanElement","_createSuper$8","_isNativeReflectConstruct$8","PathParser","_SVGPathData","control","current","command","commands","previousCommand","angles","xProp","yProp","makeAbsolute","getPoint","CURVE_TO","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","_this$current","_this$control","ox","oy","relative","_this$current2","from","priorTo","angleTo","addMarkerAngle","j","_createSuper$9","_isNativeReflectConstruct$9","PathElement","pathParser","reset","isEnd","MOVE_TO","pathM","LINE_TO","pathL","HORIZ_LINE_TO","pathH","VERT_LINE_TO","pathV","pathC","pathS","pathQ","pathT","ARC","pathA","CLOSE_PATH","pathZ","getMarkerPoints","getMarkerAngles","checkPath","fillRuleStyleProp","stroke","markers","getMarkers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","_markers$","_marker","_markers$i","_point","_angle","_marker2","_markers$markersLastI","_point2","_angle2","addMarker","_PathElement$pathL","_PathElement$pathH","_PathElement$pathV","_PathElement$pathC","controlPoint","currentPoint","bezierCurveTo","_PathElement$pathS","_PathElement$pathQ","addQuadraticCurve","quadraticCurveTo","_PathElement$pathT","_PathElement$pathA","rX","rY","sweepFlag","xAxisRotation","centp","a1","ad","dir","ah","halfWay","r","sx","sy","arc","Boolean","getAsCurrentPoint","getAsControlPoint","getReflectedControlPoint","xRot","lArcFlag","currp","l","s","cpp","_createSuper$a","_isNativeReflectConstruct$a","SVGElement","root","setDefaults","getComputedStyle","getPropertyValue","fontSizeProp","_screen$viewPort","refXAttr","refYAttr","viewBoxAttr","setViewBox","removeCurrent","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","_createSuper$b","_isNativeReflectConstruct$b","RectElement","_PathElement","rxAttr","ryAttr","rx","ry","KAPPA","_createSuper$c","_isNativeReflectConstruct$c","CircleElement","_createSuper$d","_isNativeReflectConstruct$d","EllipseElement","_createSuper$e","_isNativeReflectConstruct$e","LineElement","_this$getPoints","getPoints","_this$getPoints2","_this$getPoints2$","x0","y0","_this$getPoints2$2","_this$getPoints3","_this$getPoints4","_createSuper$f","_isNativeReflectConstruct$f","PolylineElement","parsePath","_points$","_createSuper$g","_isNativeReflectConstruct$g","PolygonElement","_PolylineElement","_this$points$","_createSuper$h","_isNativeReflectConstruct$h","PatternElement","parentOpacityProp","patternSvg","patternCanvas","createCanvas","patternCtx","getContext","_createSuper$i","_isNativeReflectConstruct$i","MarkerElement","orient","markerUnits","markerSvg","overflow","fill","_createSuper$j","_isNativeReflectConstruct$j","DefsElement","_createSuper$k","_isNativeReflectConstruct$k","GElement","_createSuper$l","_isNativeReflectConstruct$l","GradientElement","attributesToInherit","stops","_assertThisInitialize","stopsContainer","inheritStopContainer","gradient","getGradient","addParentOpacity","addColorStop","_document$screen","rootView","rect","group","attributeToInherit","_createSuper$m","_isNativeReflectConstruct$m","LinearGradientElement","_GradientElement","isBoundingBoxUnits","getGradientUnits","createLinearGradient","_createSuper$n","_isNativeReflectConstruct$n","RadialGradientElement","fx","fy","fr","createRadialGradient","_createSuper$o","_isNativeReflectConstruct$o","StopElement","stopOpacity","stopColor","_createSuper$p","_isNativeReflectConstruct$p","AnimateElement","duration","initialValue","initialUnits","removed","frozen","begin","getMilliseconds","maxDuration","to","values","attributeType","attributeName","_this$getProgress","getProgress","progress","newValue","prop","getProperty","getUnits","updated","calcValue","typeAttr","p","lb","floor","ub","ceil","_createSuper$q","_isNativeReflectConstruct$q","AnimateColorElement","_AnimateElement","colorFrom","colorTo","g","_createSuper$r","_isNativeReflectConstruct$r","AnimateTransformElement","transformFrom","transformTo","_createForOfIteratorHelper","o","allowArrayLike","it","minLen","_arrayLikeToArray","Object","_unsupportedIterableToArray","F","done","_e","TypeError","normalCompletion","didErr","step","_e2","return","arr2","_createSuper$s","_isNativeReflectConstruct$s","FontElement","_step","_iterator","fontFamilyStyle","unicode","_createSuper$t","_isNativeReflectConstruct$t","FontFaceElement","ascent","descent","_createSuper$u","_isNativeReflectConstruct$u","MissingGlyphElement","_createSuper$v","_isNativeReflectConstruct$v","GlyphElement","_createSuper$w","_isNativeReflectConstruct$w","TRefElement","firstChild","_createSuper$x","_isNativeReflectConstruct$x","AElement","hasText","open","_createForOfIteratorHelper$1","_arrayLikeToArray$1","_unsupportedIterableToArray$1","ownKeys","object","enumerableOnly","keys","symbols","sym","enumerable","_objectSpread","target","source","_createSuper$y","_isNativeReflectConstruct$y","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","letterSpacingCache","measuresCache","pathElement","dataArray","parsePathData","_points","theta","dTheta","psi","fs","setTextData","textDecoration","rotation","partialText","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","getLetterSpacingAt","splineStep","getEquidistantPointOnPath","segment","dyX","dyY","has","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","_this2$findSegmentToF","findSegmentToFitChar","nextOffset","pathCommands","startX","startY","nextCommandType","calcLength","_PathElement$pathM$po","_PathElement$pathL$po","_PathElement$pathH$po","_PathElement$pathV$po","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","inc","abs","getPointOnEllipticalArc","dist","P1x","P1y","P2x","P2y","fromX","fromY","m","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","getPointOnLine","pct","P3x","P3y","P4x","P4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","equidistantCache","getPointOnPath","targetDistance","buildEquidistantCache","_createSuper$z","_isNativeReflectConstruct$z","ImageElement","_loadSvg","_loadImage","loaded","href","isSvg","images","loadSvg","loadImage","image","createImage","t0","console","error","svg","canvg","forkString","_image","complete","drawImage","_createSuper$A","_isNativeReflectConstruct$A","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","_createSuper$B","_isNativeReflectConstruct$B","StyleElement","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","substr","srcs","src","_createSuper$C","_isNativeReflectConstruct$C","UseElement","tempSvg","oldParent","_element","_createSuper$D","_isNativeReflectConstruct$D","imGet","img","rgba","imSet","val","m1","m2","m3","FeColorMatrixElement","includeOpacity","__","srcData","getImageData","nr","ng","nb","na","putImageData","_createSuper$E","_isNativeReflectConstruct$E","MaskElement","ignoredStyles","removeStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","restoreStyles","_createSuper$F","_isNativeReflectConstruct$F","noop","ClipPathElement","contextProto","elementTransform","_createSuper$G","_isNativeReflectConstruct$G","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","_createSuper$H","_isNativeReflectConstruct$H","FeDropShadowElement","___","____","_____","_createSuper$I","_isNativeReflectConstruct$I","FeMorphologyElement","_createSuper$J","_isNativeReflectConstruct$J","FeCompositeElement","_createSuper$K","_isNativeReflectConstruct$K","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","appendChild","removeChild","_createSuper$L","_isNativeReflectConstruct$L","TitleElement","_createSuper$M","_isNativeReflectConstruct$M","DescElement","elementTypes","ownKeys$1","_createImage","anonymousCrossOrigin","_args","crossOrigin","reject","onload","onerror","Document","_ref$rootEmSize","_ref$emSize","_ref$createCanvas","_ref$createImage","emSizeStack","uniqueId","bindCreateImage","wait","isImagesLoaded","isFontsLoaded","forceAnonymousCrossOrigin","documentElement","elementType","ElementType","config","_objectSpread$1","ownKeys$2","_objectSpread$2","Canvg","options","createDocumentElement","_from","_render","fromString","ready","baseOptions","resize","_args2","freeze","__proto__","offscreen","DOMParserFallback","preset","OffscreenCanvas","blob","createImageBitmap","hasOwn","hasOwnProperty","classNames","classes","arg","argType","isArray","inner","module","default","obj","opt","pairs","pairSplitRegExp","dec","decode","pair","eq_idx","trim","slice","tryDecode","serialize","enc","encode","fieldContentRegExp","maxAge","isFinite","domain","expires","toUTCString","httpOnly","secure","sameSite","decodeURIComponent","encodeURIComponent","toVal","mix","k"],"mappings":"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","file":"vendors~7274e1de.61af5da32d67ad0a76bf.bundle.js","sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","import _startsWithInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/starts-with';\nimport _parseFloat from '@babel/runtime-corejs3/core-js-stable/parse-float';\nimport _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';\nimport _slicedToArray from '@babel/runtime-corejs3/helpers/slicedToArray';\nimport _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';\nimport _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';\nimport _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';\nimport _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';\nimport _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';\nimport _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';\nimport _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';\nimport _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';\nimport _regeneratorRuntime from '@babel/runtime-corejs3/regenerator';\nimport _asyncToGenerator from '@babel/runtime-corejs3/helpers/asyncToGenerator';\nimport _defineProperty from '@babel/runtime-corejs3/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime-corejs3/helpers/classCallCheck';\nimport _createClass from '@babel/runtime-corejs3/helpers/createClass';\nimport _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';\nimport _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';\nimport _Date$now from '@babel/runtime-corejs3/core-js-stable/date/now';\nimport _everyInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/every';\nimport _Promise from '@babel/runtime-corejs3/core-js-stable/promise';\nimport _bindInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/bind';\nimport requestAnimationFrame from 'raf';\nimport _trimInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/trim';\nimport RGBColor from 'rgbcolor';\nimport _Reflect$construct from '@babel/runtime-corejs3/core-js-stable/reflect/construct';\nimport _inherits from '@babel/runtime-corejs3/helpers/inherits';\nimport _possibleConstructorReturn from '@babel/runtime-corejs3/helpers/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime-corejs3/helpers/getPrototypeOf';\nimport _toConsumableArray from '@babel/runtime-corejs3/helpers/toConsumableArray';\nimport _someInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/some';\nimport _includesInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/includes';\nimport _Array$from from '@babel/runtime-corejs3/core-js-stable/array/from';\nimport _reverseInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reverse';\nimport _indexOfInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/index-of';\nimport _get from '@babel/runtime-corejs3/helpers/get';\nimport _fillInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/fill';\nimport { SVGPathData } from 'svg-pathdata';\nimport _Reflect$deleteProperty from '@babel/runtime-corejs3/core-js-stable/reflect/delete-property';\nimport _assertThisInitialized from '@babel/runtime-corejs3/helpers/assertThisInitialized';\nimport _valuesInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/values';\nimport _parseInt from '@babel/runtime-corejs3/core-js-stable/parse-int';\nimport _getIterator from '@babel/runtime-corejs3/core-js/get-iterator';\nimport _Array$isArray from '@babel/runtime-corejs3/core-js-stable/array/is-array';\nimport _getIteratorMethod from '@babel/runtime-corejs3/core-js/get-iterator-method';\nimport _Symbol from '@babel/runtime-corejs3/core-js-stable/symbol';\nimport _sliceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/slice';\nimport _Map from '@babel/runtime-corejs3/core-js-stable/map';\nimport _Reflect$apply from '@babel/runtime-corejs3/core-js-stable/reflect/apply';\nimport _Reflect$getPrototypeOf from '@babel/runtime-corejs3/core-js-stable/reflect/get-prototype-of';\nimport { canvasRGBA } from 'stackblur-canvas';\n\n/**\r\n * HTML-safe compress white-spaces.\r\n * @param str - String to compress.\r\n */\nfunction compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\r\n * HTML-safe left trim.\r\n * @param str - String to trim.\r\n */\n\nfunction trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\r\n * HTML-safe right trim.\r\n * @param str - String to trim.\r\n */\n\nfunction trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\r\n * String to numbers array.\r\n * @param str - Numbers string.\r\n */\n\nfunction toNumbers(str) {\n var matches = (str || '').match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm) || [];\n return _mapInstanceProperty(matches).call(matches, _parseFloat);\n} // Microsoft Edge fix\n\nvar allUppercase = /^[A-Z-]+$/;\n/**\r\n * Normalize attribute name.\r\n * @param name - Attribute name.\r\n */\n\nfunction normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n\n return name;\n}\n/**\r\n * Parse external URL.\r\n * @param url - CSS url string.\r\n */\n\nfunction parseExternalUrl(url) {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n var urlMatch = url.match(/url\\(('([^']+)'|\"([^\"]+)\"|([^'\"\\)]+))\\)/) || [];\n return urlMatch[2] || urlMatch[3] || urlMatch[4];\n}\n/**\r\n * Transform floats to integers in rgb colors.\r\n * @param color - Color to normalize.\r\n */\n\nfunction normalizeColor(color) {\n if (!_startsWithInstanceProperty(color).call(color, 'rgb')) {\n return color;\n }\n\n var rgbParts = 3;\n var normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, function (num, isFloat) {\n return rgbParts-- && isFloat ? String(Math.round(_parseFloat(num))) : num;\n });\n return normalizedColor;\n}\n\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nvar attributeRegex = /(\\[[^\\]]+\\])/g;\nvar idRegex = /(#[^\\s\\+>~\\.\\[:]+)/g;\nvar classRegex = /(\\.[^\\s\\+>~\\.\\[:]+)/g;\nvar pseudoElementRegex = /(::[^\\s\\+>~\\.\\[:]+|:first-line|:first-letter|:before|:after)/gi;\nvar pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^\\)]*\\))/gi;\nvar pseudoClassRegex = /(:[^\\s\\+>~\\.\\[:]+)/g;\nvar elementRegex = /([^\\s\\+>~\\.\\[:]+)/g;\n\nfunction findSelectorMatch(selector, regex) {\n var matches = selector.match(regex);\n\n if (!matches) {\n return [selector, 0];\n }\n\n return [selector.replace(regex, ' '), matches.length];\n}\n/**\r\n * Measure selector specificity.\r\n * @param selector - Selector to measure.\r\n */\n\n\nfunction getSelectorSpecificity(selector) {\n var specificity = [0, 0, 0];\n var currentSelector = selector.replace(/:not\\(([^\\)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n var delta = 0;\n\n var _findSelectorMatch = findSelectorMatch(currentSelector, attributeRegex);\n\n var _findSelectorMatch2 = _slicedToArray(_findSelectorMatch, 2);\n\n currentSelector = _findSelectorMatch2[0];\n delta = _findSelectorMatch2[1];\n specificity[1] += delta;\n\n var _findSelectorMatch3 = findSelectorMatch(currentSelector, idRegex);\n\n var _findSelectorMatch4 = _slicedToArray(_findSelectorMatch3, 2);\n\n currentSelector = _findSelectorMatch4[0];\n delta = _findSelectorMatch4[1];\n specificity[0] += delta;\n\n var _findSelectorMatch5 = findSelectorMatch(currentSelector, classRegex);\n\n var _findSelectorMatch6 = _slicedToArray(_findSelectorMatch5, 2);\n\n currentSelector = _findSelectorMatch6[0];\n delta = _findSelectorMatch6[1];\n specificity[1] += delta;\n\n var _findSelectorMatch7 = findSelectorMatch(currentSelector, pseudoElementRegex);\n\n var _findSelectorMatch8 = _slicedToArray(_findSelectorMatch7, 2);\n\n currentSelector = _findSelectorMatch8[0];\n delta = _findSelectorMatch8[1];\n specificity[2] += delta;\n\n var _findSelectorMatch9 = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n\n var _findSelectorMatch10 = _slicedToArray(_findSelectorMatch9, 2);\n\n currentSelector = _findSelectorMatch10[0];\n delta = _findSelectorMatch10[1];\n specificity[1] += delta;\n\n var _findSelectorMatch11 = findSelectorMatch(currentSelector, pseudoClassRegex);\n\n var _findSelectorMatch12 = _slicedToArray(_findSelectorMatch11, 2);\n\n currentSelector = _findSelectorMatch12[0];\n delta = _findSelectorMatch12[1];\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[\\*\\s\\+>~]/g, ' ').replace(/[#\\.]/g, ' ');\n\n var _findSelectorMatch13 = findSelectorMatch(currentSelector, elementRegex);\n\n var _findSelectorMatch14 = _slicedToArray(_findSelectorMatch13, 2);\n\n currentSelector = _findSelectorMatch14[0];\n delta = _findSelectorMatch14[1];\n // lgtm [js/useless-assignment-to-local]\n specificity[2] += delta;\n return specificity.join('');\n}\n\nvar PSEUDO_ZERO = .00000001;\n/**\r\n * Vector magnitude.\r\n */\n\nfunction vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\r\n * Ratio between two vectors.\r\n */\n\nfunction vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\r\n * Angle between two vectors.\r\n */\n\nfunction vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nvar Property = /*#__PURE__*/function () {\n function Property(document, name, value) {\n _classCallCheck(this, Property);\n\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n\n _createClass(Property, [{\n key: \"split\",\n value: function split() {\n var _context, _context2;\n\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' ';\n var document = this.document,\n name = this.name;\n return _mapInstanceProperty(_context = _trimInstanceProperty(_context2 = compressSpaces(this.getString())).call(_context2).split(separator)).call(_context, function (value) {\n return new Property(document, name, value);\n });\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(zeroIsValue) {\n var value = this.value;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n }, {\n key: \"isString\",\n value: function isString(regexp) {\n var value = this.value;\n var result = typeof value === 'string';\n\n if (!result || !regexp) {\n return result;\n }\n\n return regexp.test(value);\n }\n }, {\n key: \"isUrlDefinition\",\n value: function isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n }, {\n key: \"isPixels\",\n value: function isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n\n var asString = this.getString();\n\n switch (true) {\n case /px$/.test(asString):\n case /^[0-9]+$/.test(asString):\n return true;\n\n default:\n return false;\n }\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n this.value = value;\n return this;\n }\n }, {\n key: \"getValue\",\n value: function getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n\n return def;\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n\n return _parseFloat(def);\n }\n\n var value = this.value;\n\n var n = _parseFloat(value);\n\n if (this.isString(/%$/)) {\n n = n / 100.0;\n }\n\n return n;\n }\n }, {\n key: \"getString\",\n value: function getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n\n return String(def);\n }\n }, {\n key: \"getColor\",\n value: function getColor(def) {\n var color = this.getString(def);\n\n if (this.isNormalizedColor) {\n return color;\n }\n\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n }, {\n key: \"getDpi\",\n value: function getDpi() {\n return 96.0; // TODO: compute?\n }\n }, {\n key: \"getRem\",\n value: function getRem() {\n return this.document.rootEmSize;\n }\n }, {\n key: \"getEm\",\n value: function getEm() {\n return this.document.emSize;\n }\n }, {\n key: \"getUnits\",\n value: function getUnits() {\n return this.getString().replace(/[0-9\\.\\-]/g, '');\n }\n }, {\n key: \"getPixels\",\n value: function getPixels(axisOrIsFontSize) {\n var processPercent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.hasValue()) {\n return 0;\n }\n\n var _ref = typeof axisOrIsFontSize === 'boolean' ? [undefined, axisOrIsFontSize] : [axisOrIsFontSize],\n _ref2 = _slicedToArray(_ref, 2),\n axis = _ref2[0],\n isFontSize = _ref2[1];\n\n var viewPort = this.document.screen.viewPort;\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber() / 100.0 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vmax$/):\n return this.getNumber() / 100.0 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n\n case this.isString(/vw$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('x');\n\n case this.isString(/vh$/):\n return this.getNumber() / 100.0 * viewPort.computeSize('y');\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2.0;\n\n case this.isString(/px$/):\n return this.getNumber();\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1.0 / 72.0);\n\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n\n default:\n {\n var n = this.getNumber();\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis);\n }\n\n return n;\n }\n }\n }\n }, {\n key: \"getMilliseconds\",\n value: function getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n\n return this.getNumber() * 1000;\n }\n }, {\n key: \"getRadians\",\n value: function getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0);\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0);\n\n case this.isString(/rad$/):\n return this.getNumber();\n\n default:\n return this.getNumber() * (Math.PI / 180.0);\n }\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition() {\n var asString = this.getString();\n var name = asString.match(/#([^\\)'\"]+)/);\n\n if (name) {\n name = name[1];\n }\n\n if (!name) {\n name = asString;\n }\n\n return this.document.definitions[name];\n }\n }, {\n key: \"getFillStyleDefinition\",\n value: function getFillStyleDefinition(element, opacity) {\n var def = this.getDefinition();\n\n if (!def) {\n return null;\n } // gradient\n\n\n if (typeof def.createGradient === 'function') {\n return def.createGradient(this.document.ctx, element, opacity);\n } // pattern\n\n\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n var patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n\n if (patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n\n return def.createPattern(this.document.ctx, element, opacity);\n }\n\n return null;\n }\n }, {\n key: \"getTextBaseline\",\n value: function getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n\n return Property.textBaselineMapping[this.getString()];\n }\n }, {\n key: \"addOpacity\",\n value: function addOpacity(opacity) {\n var value = this.getColor();\n var len = value.length;\n var commas = 0; // Simulate old RGBColor version, which can't parse rgba.\n\n for (var i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++;\n }\n\n if (commas === 3) {\n break;\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n var color = new RGBColor(value);\n\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n\n return new Property(this.document, this.name, value);\n }\n }], [{\n key: \"empty\",\n value: function empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n }]);\n\n return Property;\n}();\nProperty.textBaselineMapping = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n};\n\nvar ViewPort = /*#__PURE__*/function () {\n function ViewPort() {\n _classCallCheck(this, ViewPort);\n\n this.viewPorts = [];\n }\n\n _createClass(ViewPort, [{\n key: \"clear\",\n value: function clear() {\n this.viewPorts = [];\n }\n }, {\n key: \"setCurrent\",\n value: function setCurrent(width, height) {\n this.viewPorts.push({\n width: width,\n height: height\n });\n }\n }, {\n key: \"removeCurrent\",\n value: function removeCurrent() {\n this.viewPorts.pop();\n }\n }, {\n key: \"getCurrent\",\n value: function getCurrent() {\n var viewPorts = this.viewPorts;\n return viewPorts[viewPorts.length - 1];\n }\n }, {\n key: \"computeSize\",\n value: function computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n\n if (d === 'x') {\n return this.width;\n }\n\n if (d === 'y') {\n return this.height;\n }\n\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.getCurrent().width;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.getCurrent().height;\n }\n }]);\n\n return ViewPort;\n}();\n\nvar Point = /*#__PURE__*/function () {\n function Point(x, y) {\n _classCallCheck(this, Point);\n\n this.x = x;\n this.y = y;\n }\n\n _createClass(Point, [{\n key: \"angleTo\",\n value: function angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform(transform) {\n var x = this.x,\n y = this.y;\n var xp = x * transform[0] + y * transform[2] + transform[4];\n var yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n }], [{\n key: \"parse\",\n value: function parse(point) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var _toNumbers = toNumbers(point),\n _toNumbers2 = _slicedToArray(_toNumbers, 2),\n _toNumbers2$ = _toNumbers2[0],\n x = _toNumbers2$ === void 0 ? defaultValue : _toNumbers2$,\n _toNumbers2$2 = _toNumbers2[1],\n y = _toNumbers2$2 === void 0 ? defaultValue : _toNumbers2$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parseScale\",\n value: function parseScale(scale) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var _toNumbers3 = toNumbers(scale),\n _toNumbers4 = _slicedToArray(_toNumbers3, 2),\n _toNumbers4$ = _toNumbers4[0],\n x = _toNumbers4$ === void 0 ? defaultValue : _toNumbers4$,\n _toNumbers4$2 = _toNumbers4[1],\n y = _toNumbers4$2 === void 0 ? x : _toNumbers4$2;\n\n return new Point(x, y);\n }\n }, {\n key: \"parsePath\",\n value: function parsePath(path) {\n var points = toNumbers(path);\n var len = points.length;\n var pathPoints = [];\n\n for (var i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n\n return pathPoints;\n }\n }]);\n\n return Point;\n}();\n\nvar Mouse = /*#__PURE__*/function () {\n function Mouse(screen) {\n var _context, _context2;\n\n _classCallCheck(this, Mouse);\n\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = [];\n this.onClick = _bindInstanceProperty(_context = this.onClick).call(_context, this);\n this.onMouseMove = _bindInstanceProperty(_context2 = this.onMouseMove).call(_context2, this);\n }\n\n _createClass(Mouse, [{\n key: \"isWorking\",\n value: function isWorking() {\n return this.working;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.working) {\n return;\n }\n\n var screen = this.screen,\n onClick = this.onClick,\n onMouseMove = this.onMouseMove;\n var canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (!this.working) {\n return;\n }\n\n var canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n }, {\n key: \"hasEvents\",\n value: function hasEvents() {\n return this.working && this.events.length > 0;\n }\n }, {\n key: \"runEvents\",\n value: function runEvents() {\n if (!this.working) {\n return;\n }\n\n var document = this.screen,\n events = this.events,\n eventElements = this.eventElements;\n var style = document.ctx.canvas.style;\n\n if (style) {\n style.cursor = '';\n }\n\n _forEachInstanceProperty(events).call(events, function (_ref, i) {\n var run = _ref.run;\n var element = eventElements[i];\n\n while (element) {\n run(element);\n element = element.parent;\n }\n }); // done running, clear\n\n\n this.events = [];\n this.eventElements = [];\n }\n }, {\n key: \"checkPath\",\n value: function checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n\n _forEachInstanceProperty(events).call(events, function (_ref2, i) {\n var x = _ref2.x,\n y = _ref2.y;\n\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"checkBoundingBox\",\n value: function checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n\n var events = this.events,\n eventElements = this.eventElements;\n\n _forEachInstanceProperty(events).call(events, function (_ref3, i) {\n var x = _ref3.x,\n y = _ref3.y;\n\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n }, {\n key: \"mapXY\",\n value: function mapXY(x, y) {\n var _this$screen = this.screen,\n window = _this$screen.window,\n ctx = _this$screen.ctx;\n var point = new Point(x, y);\n var element = ctx.canvas;\n\n while (element) {\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n\n if (window.scrollX) {\n point.x += window.scrollX;\n }\n\n if (window.scrollY) {\n point.y += window.scrollY;\n }\n\n return point;\n }\n }, {\n key: \"onClick\",\n value: function onClick(evt) {\n var _this$mapXY = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY.x,\n y = _this$mapXY.y;\n\n this.events.push({\n type: 'onclick',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onClick) {\n event.onClick();\n }\n }\n });\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove(evt) {\n var _this$mapXY2 = this.mapXY((evt || event).clientX, (evt || event).clientY),\n x = _this$mapXY2.x,\n y = _this$mapXY2.y;\n\n this.events.push({\n type: 'onmousemove',\n x: x,\n y: y,\n run: function run(event) {\n if (event.onMouseMove) {\n event.onMouseMove();\n }\n }\n });\n }\n }]);\n\n return Mouse;\n}();\n\nvar defaultWindow = typeof window !== 'undefined' ? window : null;\nvar defaultFetch = typeof fetch !== 'undefined' ? _bindInstanceProperty(fetch).call(fetch, void 0) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n: null;\n\nvar Screen = /*#__PURE__*/function () {\n function Screen(ctx) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch : _ref$fetch,\n _ref$window = _ref.window,\n window = _ref$window === void 0 ? defaultWindow : _ref$window;\n\n _classCallCheck(this, Screen);\n\n this.ctx = ctx;\n this.FRAMERATE = 30;\n this.MAX_VIRTUAL_PIXELS = 30000;\n this.CLIENT_WIDTH = 800;\n this.CLIENT_HEIGHT = 600;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n this.fetch = fetch;\n }\n\n _createClass(Screen, [{\n key: \"wait\",\n value: function wait(checker) {\n this.waits.push(checker);\n }\n }, {\n key: \"ready\",\n value: function ready() {\n if (!this.readyPromise) {\n return _Promise.resolve();\n }\n\n return this.readyPromise;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n var _context;\n\n if (this.isReadyLock) {\n return true;\n }\n\n var isReadyLock = _everyInstanceProperty(_context = this.waits).call(_context, function (_) {\n return _();\n });\n\n if (isReadyLock) {\n this.waits = [];\n\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n }, {\n key: \"setDefaults\",\n value: function setDefaults(ctx) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)';\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(_ref2) {\n var document = _ref2.document,\n ctx = _ref2.ctx,\n aspectRatio = _ref2.aspectRatio,\n width = _ref2.width,\n desiredWidth = _ref2.desiredWidth,\n height = _ref2.height,\n desiredHeight = _ref2.desiredHeight,\n _ref2$minX = _ref2.minX,\n minX = _ref2$minX === void 0 ? 0 : _ref2$minX,\n _ref2$minY = _ref2.minY,\n minY = _ref2$minY === void 0 ? 0 : _ref2$minY,\n refX = _ref2.refX,\n refY = _ref2.refY,\n _ref2$clip = _ref2.clip,\n clip = _ref2$clip === void 0 ? false : _ref2$clip,\n _ref2$clipX = _ref2.clipX,\n clipX = _ref2$clipX === void 0 ? 0 : _ref2$clipX,\n _ref2$clipY = _ref2.clipY,\n clipY = _ref2$clipY === void 0 ? 0 : _ref2$clipY;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, ''); // ignore defer\n\n var _cleanAspectRatio$spl = cleanAspectRatio.split(' '),\n _cleanAspectRatio$spl2 = _slicedToArray(_cleanAspectRatio$spl, 2),\n aspectRatioAlign = _cleanAspectRatio$spl2[0],\n aspectRatioMeetOrSlice = _cleanAspectRatio$spl2[1];\n\n var align = aspectRatioAlign || 'xMidYMid';\n var meetOrSlice = aspectRatioMeetOrSlice || 'meet'; // calculate scale\n\n var scaleX = width / desiredWidth;\n var scaleY = height / desiredHeight;\n var scaleMin = Math.min(scaleX, scaleY);\n var scaleMax = Math.max(scaleX, scaleY);\n var finalDesiredWidth = desiredWidth;\n var finalDesiredHeight = desiredHeight;\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\n }\n\n var refXProp = new Property(document, 'refX', refX);\n var refYProp = new Property(document, 'refY', refY);\n var hasRefs = refXProp.hasValue() && refYProp.hasValue();\n\n if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n\n if (clip) {\n var scaledClipX = scaleMin * clipX;\n var scaledClipY = scaleMin * clipY;\n ctx.beginPath();\n ctx.moveTo(scaledClipX, scaledClipY);\n ctx.lineTo(width, scaledClipY);\n ctx.lineTo(width, height);\n ctx.lineTo(scaledClipX, height);\n ctx.closePath();\n ctx.clip();\n }\n\n if (!hasRefs) {\n var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY;\n var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY;\n var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX;\n var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX;\n\n if (/^xMid/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0);\n }\n\n if (/YMid$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0);\n }\n\n if (/^xMax/.test(align) && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n\n if (/YMax$/.test(align) && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n } // scale\n\n\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n } // translate\n\n\n ctx.translate(-minX, -minY);\n }\n }, {\n key: \"start\",\n value: function start(element) {\n var _this = this;\n\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref3$enableRedraw = _ref3.enableRedraw,\n enableRedraw = _ref3$enableRedraw === void 0 ? false : _ref3$enableRedraw,\n _ref3$ignoreMouse = _ref3.ignoreMouse,\n ignoreMouse = _ref3$ignoreMouse === void 0 ? false : _ref3$ignoreMouse,\n _ref3$ignoreAnimation = _ref3.ignoreAnimation,\n ignoreAnimation = _ref3$ignoreAnimation === void 0 ? false : _ref3$ignoreAnimation,\n _ref3$ignoreDimension = _ref3.ignoreDimensions,\n ignoreDimensions = _ref3$ignoreDimension === void 0 ? false : _ref3$ignoreDimension,\n _ref3$ignoreClear = _ref3.ignoreClear,\n ignoreClear = _ref3$ignoreClear === void 0 ? false : _ref3$ignoreClear,\n forceRedraw = _ref3.forceRedraw,\n scaleWidth = _ref3.scaleWidth,\n scaleHeight = _ref3.scaleHeight,\n offsetX = _ref3.offsetX,\n offsetY = _ref3.offsetY;\n\n var FRAMERATE = this.FRAMERATE,\n mouse = this.mouse;\n var frameDuration = 1000 / FRAMERATE;\n this.frameDuration = frameDuration;\n this.readyPromise = new _Promise(function (resolve) {\n _this.resolveReady = resolve;\n });\n\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n\n if (!enableRedraw) {\n return;\n }\n\n var now = _Date$now();\n\n var then = now;\n var delta = 0;\n\n var tick = function tick() {\n now = _Date$now();\n delta = now - then;\n\n if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n\n if (_this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n _this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n\n mouse.runEvents();\n }\n }\n\n _this.intervalId = requestAnimationFrame(tick);\n };\n\n if (!ignoreMouse) {\n mouse.start();\n }\n\n this.intervalId = requestAnimationFrame(tick);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n\n this.mouse.stop();\n }\n }, {\n key: \"shouldUpdate\",\n value: function shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n var _context2;\n\n var frameDuration = this.frameDuration;\n\n var shouldUpdate = _reduceInstanceProperty(_context2 = this.animations).call(_context2, function (shouldUpdate, animation) {\n return animation.update(frameDuration) || shouldUpdate;\n }, false);\n\n if (shouldUpdate) {\n return true;\n }\n } // need update from redraw?\n\n\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true;\n } // need update from mouse events?\n\n\n if (this.mouse.hasEvents()) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"render\",\n value: function render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n var CLIENT_WIDTH = this.CLIENT_WIDTH,\n CLIENT_HEIGHT = this.CLIENT_HEIGHT,\n viewPort = this.viewPort,\n ctx = this.ctx,\n isFirstRender = this.isFirstRender;\n var canvas = ctx.canvas;\n viewPort.clear();\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n } else {\n viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);\n }\n\n var widthStyle = element.getStyle('width');\n var heightStyle = element.getStyle('height');\n\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n\n var cWidth = canvas.clientWidth || canvas.width;\n var cHeight = canvas.clientHeight || canvas.height;\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n\n viewPort.setCurrent(cWidth, cHeight);\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n var _context3, _context4;\n\n var viewBox = toNumbers(element.getAttribute('viewBox').getString());\n var xRatio = 0;\n var yRatio = 0;\n\n if (typeof scaleWidth === 'number') {\n var _widthStyle = element.getStyle('width');\n\n if (_widthStyle.hasValue()) {\n xRatio = _widthStyle.getPixels('x') / scaleWidth;\n } else if (!isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n\n if (typeof scaleHeight === 'number') {\n var _heightStyle = element.getStyle('height');\n\n if (_heightStyle.hasValue()) {\n yRatio = _heightStyle.getPixels('y') / scaleHeight;\n } else if (!isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio;\n }\n\n if (!yRatio) {\n yRatio = xRatio;\n }\n\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n var transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(_concatInstanceProperty(_context3 = _concatInstanceProperty(_context4 = \"\".concat(transformStyle.getString(), \" scale(\")).call(_context4, 1.0 / xRatio, \", \")).call(_context3, 1.0 / yRatio, \")\"));\n } // clear and render\n\n\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n\n element.render(ctx);\n\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n }]);\n\n return Screen;\n}();\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch;\n\nvar defaultFetch$1 = Screen.defaultFetch;\nvar DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null;\n\nvar Parser = /*#__PURE__*/function () {\n function Parser() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$fetch = _ref.fetch,\n fetch = _ref$fetch === void 0 ? defaultFetch$1 : _ref$fetch,\n _ref$DOMParser = _ref.DOMParser,\n DOMParser = _ref$DOMParser === void 0 ? DefaultDOMParser : _ref$DOMParser;\n\n _classCallCheck(this, Parser);\n\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n\n _createClass(Parser, [{\n key: \"parse\",\n value: function () {\n var _parse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resource) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!/^= 0; i--) {\n transforms[i].unapply(ctx);\n }\n } // TODO: applyToPoint unused ... remove?\n\n }, {\n key: \"applyToPoint\",\n value: function applyToPoint(point) {\n var transforms = this.transforms;\n var len = transforms.length;\n\n for (var i = 0; i < len; i++) {\n transforms[i].applyToPoint(point);\n }\n }\n }], [{\n key: \"fromElement\",\n value: function fromElement(document, element) {\n var transformStyle = element.getStyle('transform', false, true);\n\n var _element$getStyle$spl = element.getStyle('transform-origin', false, true).split(),\n _element$getStyle$spl2 = _slicedToArray(_element$getStyle$spl, 2),\n transformOriginXProperty = _element$getStyle$spl2[0],\n _element$getStyle$spl3 = _element$getStyle$spl2[1],\n transformOriginYProperty = _element$getStyle$spl3 === void 0 ? transformOriginXProperty : _element$getStyle$spl3;\n\n var transformOrigin = [transformOriginXProperty, transformOriginYProperty];\n\n if (transformStyle.hasValue()) {\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n\n return null;\n }\n }]);\n\n return Transform;\n}();\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nvar Element = /*#__PURE__*/function () {\n function Element(document, node) {\n var _context,\n _this = this,\n _context4;\n\n var captureTextNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n _classCallCheck(this, Element);\n\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.attributes = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n\n if (!node || node.nodeType !== 1) {\n // ELEMENT_NODE\n return;\n } // add attributes\n\n\n _forEachInstanceProperty(_context = _Array$from(node.attributes)).call(_context, function (attribute) {\n var nodeName = normalizeAttributeName(attribute.nodeName);\n _this.attributes[nodeName] = new Property(document, nodeName, attribute.value);\n });\n\n this.addStylesFromStyleDefinition(); // add inline styles\n\n if (this.getAttribute('style').hasValue()) {\n var _context2;\n\n var styles = _mapInstanceProperty(_context2 = this.getAttribute('style').getString().split(';')).call(_context2, function (_) {\n return _trimInstanceProperty(_).call(_);\n });\n\n _forEachInstanceProperty(styles).call(styles, function (style) {\n var _context3;\n\n if (!style) {\n return;\n }\n\n var _style$split$map = _mapInstanceProperty(_context3 = style.split(':')).call(_context3, function (_) {\n return _trimInstanceProperty(_).call(_);\n }),\n _style$split$map2 = _slicedToArray(_style$split$map, 2),\n name = _style$split$map2[0],\n value = _style$split$map2[1];\n\n _this.styles[name] = new Property(document, name, value);\n });\n }\n\n var definitions = document.definitions;\n var id = this.getAttribute('id'); // add id\n\n if (id.hasValue()) {\n if (!definitions[id.getValue()]) {\n definitions[id.getValue()] = this;\n }\n }\n\n _forEachInstanceProperty(_context4 = _Array$from(node.childNodes)).call(_context4, function (childNode) {\n if (childNode.nodeType === 1) {\n _this.addChild(childNode); // ELEMENT_NODE\n\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n var textNode = document.createTextNode(childNode);\n\n if (textNode.getText().length > 0) {\n _this.addChild(textNode); // TEXT_NODE\n\n }\n }\n });\n }\n\n _createClass(Element, [{\n key: \"getAttribute\",\n value: function getAttribute(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var attr = this.attributes[name];\n\n if (!attr && createIfNotExists) {\n var _attr = new Property(this.document, name, '');\n\n this.attributes[name] = _attr;\n return _attr;\n }\n\n return attr || Property.empty(this.document);\n }\n }, {\n key: \"getHrefAttribute\",\n value: function getHrefAttribute() {\n for (var key in this.attributes) {\n if (key === 'href' || /:href$/.test(key)) {\n return this.attributes[key];\n }\n }\n\n return Property.empty(this.document);\n }\n }, {\n key: \"getStyle\",\n value: function getStyle(name) {\n var createIfNotExists = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var skipAncestors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var style = this.styles[name];\n\n if (style) {\n return style;\n }\n\n var attr = this.getAttribute(name);\n\n if (attr && attr.hasValue()) {\n this.styles[name] = attr; // move up to me to cache\n\n return attr;\n }\n\n if (!skipAncestors) {\n var parent = this.parent;\n\n if (parent) {\n var parentStyle = parent.getStyle(name);\n\n if (parentStyle && parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n\n if (createIfNotExists) {\n var _style = new Property(this.document, name, '');\n\n this.styles[name] = _style;\n return _style;\n }\n\n return style || Property.empty(this.document);\n }\n }, {\n key: \"render\",\n value: function render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n\n ctx.save();\n\n if (this.getStyle('mask').hasValue()) {\n // mask\n var mask = this.getStyle('mask').getDefinition();\n\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n // filter\n var filter = this.getStyle('filter').getDefinition();\n\n if (filter) {\n this.applyEffects(ctx);\n filter.apply(ctx, this);\n }\n } else {\n this.setContext(ctx);\n this.renderChildren(ctx);\n this.clearContext(ctx);\n }\n\n ctx.restore();\n }\n }, {\n key: \"setContext\",\n value: function setContext(_) {}\n }, {\n key: \"applyEffects\",\n value: function applyEffects(ctx) {\n // transform\n var transform = Transform.fromElement(this.document, this);\n\n if (transform) {\n transform.apply(ctx);\n } // clip\n\n\n var clipPathStyleProp = this.getStyle('clip-path', false, true);\n\n if (clipPathStyleProp.hasValue()) {\n var clip = clipPathStyleProp.getDefinition();\n\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n }, {\n key: \"clearContext\",\n value: function clearContext(_) {}\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var _context5;\n\n _forEachInstanceProperty(_context5 = this.children).call(_context5, function (child) {\n child.render(ctx);\n });\n }\n }, {\n key: \"addChild\",\n value: function addChild(childNode) {\n var _context6;\n\n var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n\n if (!_includesInstanceProperty(_context6 = Element.ignoreChildTypes).call(_context6, child.type)) {\n this.children.push(child);\n }\n }\n }, {\n key: \"matchesSelector\",\n value: function matchesSelector(selector) {\n var _context7;\n\n var node = this.node;\n\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n\n var styleClasses = node.getAttribute('class');\n\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n\n return _someInstanceProperty(_context7 = styleClasses.split(' ')).call(_context7, function (styleClass) {\n if (\".\".concat(styleClass) === selector) {\n return true;\n }\n });\n }\n }, {\n key: \"addStylesFromStyleDefinition\",\n value: function addStylesFromStyleDefinition() {\n var _this$document = this.document,\n styles = _this$document.styles,\n stylesSpecificity = _this$document.stylesSpecificity;\n\n for (var selector in styles) {\n if (selector[0] !== '@' && this.matchesSelector(selector)) {\n var style = styles[selector];\n var specificity = stylesSpecificity[selector];\n\n if (style) {\n for (var name in style) {\n var existingSpecificity = this.stylesSpecificity[name];\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n\n if (specificity >= existingSpecificity) {\n this.styles[name] = style[name];\n this.stylesSpecificity[name] = specificity;\n }\n }\n }\n }\n }\n }\n }, {\n key: \"removeStyles\",\n value: function removeStyles(element, ignoreStyles) {\n var toRestore = _reduceInstanceProperty(ignoreStyles).call(ignoreStyles, function (toRestore, name) {\n var _context8;\n\n var styleProp = element.getStyle(name);\n\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n\n var value = styleProp.getString();\n styleProp.setValue('');\n return _concatInstanceProperty(_context8 = []).call(_context8, _toConsumableArray(toRestore), [[name, value]]);\n }, []);\n\n return toRestore;\n }\n }, {\n key: \"restoreStyles\",\n value: function restoreStyles(element, styles) {\n _forEachInstanceProperty(styles).call(styles, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n value = _ref2[1];\n\n element.getStyle(name, true).setValue(value);\n });\n }\n }]);\n\n return Element;\n}();\nElement.ignoreChildTypes = ['title'];\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar UnknownElement = /*#__PURE__*/function (_Element) {\n _inherits(UnknownElement, _Element);\n\n var _super = _createSuper$3(UnknownElement);\n\n function UnknownElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, UnknownElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n\n return _this;\n }\n\n return UnknownElement;\n}(Element);\n\nfunction wrapFontFamily(fontFamily) {\n var trimmed = _trimInstanceProperty(fontFamily).call(fontFamily);\n\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\n\nfunction prepareFontFamily(fontFamily) {\n var _context;\n\n return typeof process === 'undefined' ? fontFamily : _mapInstanceProperty(_context = _trimInstanceProperty(fontFamily).call(fontFamily).split(',')).call(_context, wrapFontFamily).join(',');\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\r\n */\n\n\nfunction prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n\n var targetFontStyle = _trimInstanceProperty(fontStyle).call(fontStyle).toLowerCase();\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle;\n\n default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n\n return '';\n }\n}\n/**\r\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\r\n */\n\n\nfunction prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n\n var targetFontWeight = _trimInstanceProperty(fontWeight).call(fontWeight).toLowerCase();\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight;\n\n default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n\n return '';\n }\n}\n\nvar Font = /*#__PURE__*/function () {\n function Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\n _classCallCheck(this, Font);\n\n var inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\n this.fontFamily = fontFamily || inheritFont.fontFamily;\n this.fontSize = fontSize || inheritFont.fontSize;\n this.fontStyle = fontStyle || inheritFont.fontStyle;\n this.fontWeight = fontWeight || inheritFont.fontWeight;\n this.fontVariant = fontVariant || inheritFont.fontVariant;\n }\n\n _createClass(Font, [{\n key: \"toString\",\n value: function toString() {\n var _context2;\n\n return _trimInstanceProperty(_context2 = [prepareFontStyle(this.fontStyle), this.fontVariant, prepareFontWeight(this.fontWeight), this.fontSize, // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)].join(' ')).call(_context2);\n }\n }], [{\n key: \"parse\",\n value: function parse() {\n var _context3;\n\n var font = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var inherit = arguments.length > 1 ? arguments[1] : undefined;\n var fontStyle = '';\n var fontVariant = '';\n var fontWeight = '';\n var fontSize = '';\n var fontFamily = '';\n\n var parts = _trimInstanceProperty(_context3 = compressSpaces(font)).call(_context3).split(' ');\n\n var set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n };\n\n _forEachInstanceProperty(parts).call(parts, function (part) {\n var _context4, _context5, _context6;\n\n switch (true) {\n case !set.fontStyle && _includesInstanceProperty(_context4 = Font.styles).call(_context4, part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n\n set.fontStyle = true;\n break;\n\n case !set.fontVariant && _includesInstanceProperty(_context5 = Font.variants).call(_context5, part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n\n case !set.fontWeight && _includesInstanceProperty(_context6 = Font.weights).call(_context6, part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n\n case !set.fontSize:\n if (part !== 'inherit') {\n var _part$split = part.split('/');\n\n var _part$split2 = _slicedToArray(_part$split, 1);\n\n fontSize = _part$split2[0];\n }\n\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n\n }\n });\n\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\n }\n }]);\n\n return Font;\n}();\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nvar BoundingBox = /*#__PURE__*/function () {\n function BoundingBox() {\n var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.NaN;\n var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.NaN;\n var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Number.NaN;\n var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Number.NaN;\n\n _classCallCheck(this, BoundingBox);\n\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n\n _createClass(BoundingBox, [{\n key: \"addPoint\",\n value: function addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n\n if (x < this.x1) {\n this.x1 = x;\n }\n\n if (x > this.x2) {\n this.x2 = x;\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y;\n this.y2 = y;\n }\n\n if (y < this.y1) {\n this.y1 = y;\n }\n\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n }, {\n key: \"addX\",\n value: function addX(x) {\n this.addPoint(x, null);\n }\n }, {\n key: \"addY\",\n value: function addY(y) {\n this.addPoint(null, y);\n }\n }, {\n key: \"addBoundingBox\",\n value: function addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n\n var x1 = boundingBox.x1,\n y1 = boundingBox.y1,\n x2 = boundingBox.x2,\n y2 = boundingBox.y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n }, {\n key: \"sumCubic\",\n value: function sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n }, {\n key: \"bezierCurveAdd\",\n value: function bezierCurveAdd(forX, p0, p1, p2, p3) {\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var c = 3 * p1 - 3 * p0;\n\n if (a === 0) {\n if (b === 0) {\n return;\n }\n\n var t = -c / b;\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3));\n }\n }\n\n return;\n }\n\n var b2ac = Math.pow(b, 2) - 4 * c * a;\n\n if (b2ac < 0) {\n return;\n }\n\n var t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n\n var t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3));\n }\n }\n } // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n\n }, {\n key: \"addBezierCurve\",\n value: function addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\n this.addPoint(p0x, p0y);\n this.addPoint(p3x, p3y);\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);\n }\n }, {\n key: \"addQuadraticCurve\",\n value: function addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n var cp1x = p0x + 2 / 3 * (p1x - p0x); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp1y = p0y + 2 / 3 * (p1y - p0y); // CP1 = QP0 + 2/3 *(QP1-QP0)\n\n var cp2x = cp1x + 1 / 3 * (p2x - p0x); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n var cp2y = cp1y + 1 / 3 * (p2y - p0y); // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\n }\n }, {\n key: \"isPointInBox\",\n value: function isPointInBox(x, y) {\n var x1 = this.x1,\n y1 = this.y1,\n x2 = this.x2,\n y2 = this.y2;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n }, {\n key: \"x\",\n get: function get() {\n return this.x1;\n }\n }, {\n key: \"y\",\n get: function get() {\n return this.y1;\n }\n }, {\n key: \"width\",\n get: function get() {\n return this.x2 - this.x1;\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.y2 - this.y1;\n }\n }]);\n\n return BoundingBox;\n}();\n\nfunction _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$4() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RenderedElement = /*#__PURE__*/function (_Element) {\n _inherits(RenderedElement, _Element);\n\n var _super = _createSuper$4(RenderedElement);\n\n function RenderedElement() {\n var _this;\n\n _classCallCheck(this, RenderedElement);\n\n _this = _super.apply(this, arguments);\n _this.modifiedEmSizeStack = false;\n return _this;\n }\n\n _createClass(RenderedElement, [{\n key: \"calculateOpacity\",\n value: function calculateOpacity() {\n var opacity = 1.0; // tslint:disable-next-line: no-this-assignment\n\n var element = this;\n\n while (element) {\n var opacityStyle = element.getStyle('opacity', false, true); // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber();\n }\n\n element = element.parent;\n }\n\n return opacity;\n }\n }, {\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fromMeasure) {\n // causes stack overflow when measuring text with gradients\n // fill\n var fillStyleProp = this.getStyle('fill');\n var fillOpacityStyleProp = this.getStyle('fill-opacity');\n var strokeStyleProp = this.getStyle('stroke');\n var strokeOpacityProp = this.getStyle('stroke-opacity');\n\n if (fillStyleProp.isUrlDefinition()) {\n var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _fillStyle = fillStyleProp.getColor();\n\n if (_fillStyle !== 'inherit') {\n ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle;\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n\n ctx.fillStyle = _fillStyle2;\n } // stroke\n\n\n if (strokeStyleProp.isUrlDefinition()) {\n var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n\n var _strokeStyle = strokeStyleProp.getString();\n\n if (_strokeStyle !== 'inherit') {\n ctx.strokeStyle = _strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle;\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n var _strokeStyle2 = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n\n ctx.strokeStyle = _strokeStyle2;\n }\n\n var strokeWidthStyleProp = this.getStyle('stroke-width');\n\n if (strokeWidthStyleProp.hasValue()) {\n var newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\n }\n\n var strokeLinecapStyleProp = this.getStyle('stroke-linecap');\n var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin');\n var strokeMiterlimitProp = this.getStyle('stroke-miterlimit');\n var pointOrderStyleProp = this.getStyle('paint-order');\n var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray');\n var strokeDashoffsetProp = this.getStyle('stroke-dashoffset');\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n }\n\n if (pointOrderStyleProp.hasValue()) {\n // ?\n ctx.paintOrder = pointOrderStyleProp.getValue();\n }\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n var gaps = toNumbers(strokeDasharrayStyleProp.getString());\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else if (typeof ctx.webkitLineDash !== 'undefined') {\n ctx.webkitLineDash = gaps;\n } else if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n ctx.mozDash = gaps;\n }\n\n var offset = strokeDashoffsetProp.getPixels();\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n ctx.webkitLineDashOffset = offset;\n } else if (typeof ctx.mozDashOffset !== 'undefined') {\n ctx.mozDashOffset = offset;\n }\n }\n } // font\n\n\n this.modifiedEmSizeStack = false;\n\n if (typeof ctx.font !== 'undefined') {\n var fontStyleProp = this.getStyle('font');\n var fontStyleStyleProp = this.getStyle('font-style');\n var fontVariantStyleProp = this.getStyle('font-variant');\n var fontWeightStyleProp = this.getStyle('font-weight');\n var fontSizeStyleProp = this.getStyle('font-size');\n var fontFamilyStyleProp = this.getStyle('font-family');\n var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\n fontStyleStyleProp.setValue(font.fontStyle);\n fontVariantStyleProp.setValue(font.fontVariant);\n fontWeightStyleProp.setValue(font.fontWeight);\n fontSizeStyleProp.setValue(font.fontSize);\n fontFamilyStyleProp.setValue(font.fontFamily);\n ctx.font = font.toString();\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx); // opacity\n\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n }, {\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(RenderedElement.prototype), \"clearContext\", this).call(this, ctx);\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n }]);\n\n return RenderedElement;\n}(Element);\n\nfunction _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$5() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(TextElement, _RenderedElement);\n\n var _super = _createSuper$5(TextElement);\n\n function TextElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextElement);\n\n _this = _super.call(this, document, node, (this instanceof TextElement ? this.constructor : void 0) === TextElement ? true : captureTextNodes);\n _this.type = 'text';\n _this.x = 0;\n _this.y = 0;\n _this.measureCache = -1;\n return _this;\n }\n\n _createClass(TextElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n var fromMeasure = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n _get(_getPrototypeOf(TextElement.prototype), \"setContext\", this).call(this, ctx, fromMeasure);\n\n var textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n }, {\n key: \"initializeCoordinates\",\n value: function initializeCoordinates(ctx) {\n this.x = this.getAttribute('x').getPixels('x');\n this.y = this.getAttribute('y').getPixels('y');\n var dxAttr = this.getAttribute('dx');\n var dyAttr = this.getAttribute('dy');\n\n if (dxAttr.hasValue()) {\n this.x += dxAttr.getPixels('x');\n }\n\n if (dyAttr.hasValue()) {\n this.y += dyAttr.getPixels('y');\n }\n\n this.x += this.getAnchorDelta(ctx, this, 0);\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var _context,\n _this2 = this;\n\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n\n this.initializeCoordinates(ctx);\n var boundingBox = null;\n\n _forEachInstanceProperty(_context = this.children).call(_context, function (_, i) {\n var childBoundingBox = _this2.getChildBoundingBox(ctx, _this2, _this2, i);\n\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n\n return boundingBox;\n }\n }, {\n key: \"getFontSize\",\n value: function getFontSize() {\n var document = this.document,\n parent = this.parent;\n var inheritFontSize = Font.parse(document.ctx.font).fontSize;\n var fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n }, {\n key: \"getTElementBoundingBox\",\n value: function getTElementBoundingBox(ctx) {\n var fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n }, {\n key: \"getGlyph\",\n value: function getGlyph(font, text, i) {\n var char = text[i];\n var glyph = null;\n\n if (font.isArabic) {\n var len = text.length;\n var prevChar = text[i - 1];\n var nextChar = text[i + 1];\n var arabicForm = 'isolated';\n\n if ((i === 0 || prevChar === ' ') && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 2 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n\n if (typeof font.glyphs[char] !== 'undefined') {\n glyph = font.glyphs[char][arabicForm];\n\n if (!glyph && font.glyphs[char].type === 'glyph') {\n glyph = font.glyphs[char];\n }\n }\n } else {\n glyph = font.glyphs[char];\n }\n\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n\n return glyph;\n }\n }, {\n key: \"getText\",\n value: function getText() {\n return '';\n }\n }, {\n key: \"getTextFromNode\",\n value: function getTextFromNode(node) {\n var textNode = node || this.node;\n\n var childNodes = _Array$from(textNode.parentNode.childNodes);\n\n var index = _indexOfInstanceProperty(childNodes).call(childNodes, textNode);\n\n var lastIndex = childNodes.length - 1;\n var text = compressSpaces(textNode.value || textNode.text || textNode.textContent || '');\n\n if (index === 0) {\n text = trimLeft(text);\n }\n\n if (index === lastIndex) {\n text = trimRight(text);\n }\n\n return text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var _context2,\n _this3 = this;\n\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n\n this.initializeCoordinates(ctx);\n\n _forEachInstanceProperty(_context2 = this.children).call(_context2, function (_, i) {\n _this3.renderChild(ctx, _this3, _this3, i);\n });\n\n var mouse = this.document.screen.mouse; // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n }, {\n key: \"renderTElementChildren\",\n value: function renderTElementChildren(ctx) {\n var document = this.document,\n parent = this.parent;\n var renderText = this.getText();\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var _context3;\n\n var unitsPerEm = customFont.fontFace.unitsPerEm;\n var ctxFont = Font.parse(document.ctx.font);\n var fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize);\n var fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle);\n var scale = fontSize / unitsPerEm;\n var text = customFont.isRTL ? _reverseInstanceProperty(_context3 = renderText.split('')).call(_context3).join('') : renderText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n var lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0);\n }\n\n glyph.render(ctx);\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0);\n }\n\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n\n return;\n }\n\n var x = this.x,\n y = this.y;\n\n if (ctx.paintOrder === 'stroke') {\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n } else {\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n }\n }\n }, {\n key: \"getAnchorDelta\",\n value: function getAnchorDelta(ctx, parent, startI) {\n var textAnchor = this.getStyle('text-anchor').getString('start');\n\n if (textAnchor !== 'start') {\n var children = parent.children;\n var len = children.length;\n var child = null;\n var width = 0;\n\n for (var i = startI; i < len; i++) {\n child = children[i];\n\n if (i > startI && child.getAttribute('x').hasValue() || child.getAttribute('text-anchor').hasValue()) {\n break; // new group\n }\n\n width += child.measureTextRecursive(ctx);\n }\n\n return -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n return 0;\n }\n }, {\n key: \"adjustChildCoordinates\",\n value: function adjustChildCoordinates(ctx, textParent, parent, i) {\n var child = parent.children[i];\n\n if (typeof child.measureText !== 'function') {\n return child;\n }\n\n ctx.save();\n child.setContext(ctx, true);\n var xAttr = child.getAttribute('x');\n var yAttr = child.getAttribute('y');\n var dxAttr = child.getAttribute('dx');\n var dyAttr = child.getAttribute('dy');\n var textAnchor = child.getAttribute('text-anchor').getString('start');\n\n if (i === 0 && child.type !== 'textNode') {\n if (!xAttr.hasValue()) {\n xAttr.setValue(textParent.getAttribute('x').getValue('0'));\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(textParent.getAttribute('y').getValue('0'));\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(textParent.getAttribute('dx').getValue('0'));\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(textParent.getAttribute('dy').getValue('0'));\n }\n }\n\n if (xAttr.hasValue()) {\n child.x = xAttr.getPixels('x') + textParent.getAnchorDelta(ctx, parent, i);\n\n if (textAnchor !== 'start') {\n var width = child.measureTextRecursive(ctx);\n child.x += -1 * (textAnchor === 'end' ? width : width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x');\n }\n } else {\n if (textAnchor !== 'start') {\n var _width = child.measureTextRecursive(ctx);\n\n textParent.x += -1 * (textAnchor === 'end' ? _width : _width / 2.0);\n }\n\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x');\n }\n\n child.x = textParent.x;\n }\n\n textParent.x = child.x + child.measureText(ctx);\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y');\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y');\n }\n\n child.y = textParent.y;\n }\n\n textParent.y = child.y;\n child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n }, {\n key: \"getChildBoundingBox\",\n value: function getChildBoundingBox(ctx, textParent, parent, i) {\n var _context4;\n\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i); // not a text node?\n\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n\n var boundingBox = child.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return null;\n }\n\n _forEachInstanceProperty(_context4 = child.children).call(_context4, function (_, i) {\n var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n\n return boundingBox;\n }\n }, {\n key: \"renderChild\",\n value: function renderChild(ctx, textParent, parent, i) {\n var _context5;\n\n var child = this.adjustChildCoordinates(ctx, textParent, parent, i);\n child.render(ctx);\n\n _forEachInstanceProperty(_context5 = child.children).call(_context5, function (_, i) {\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n }, {\n key: \"measureTextRecursive\",\n value: function measureTextRecursive(ctx) {\n var _context6;\n\n var width = _reduceInstanceProperty(_context6 = this.children).call(_context6, function (width, child) {\n return width + child.measureTextRecursive(ctx);\n }, this.measureText(ctx));\n\n return width;\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx) {\n var measureCache = this.measureCache;\n\n if (~measureCache) {\n return measureCache;\n }\n\n var renderText = this.getText();\n var measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n }, {\n key: \"measureTargetText\",\n value: function measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n\n var parent = this.parent;\n var customFont = parent.getStyle('font-family').getDefinition();\n\n if (customFont) {\n var _context7;\n\n var fontSize = this.getFontSize();\n var text = customFont.isRTL ? _reverseInstanceProperty(_context7 = targetText.split('')).call(_context7).join('') : targetText;\n var dx = toNumbers(parent.getAttribute('dx').getString());\n var len = text.length;\n var _measure = 0;\n\n for (var i = 0; i < len; i++) {\n var glyph = this.getGlyph(customFont, text, i);\n _measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n _measure += dx[i];\n }\n }\n\n return _measure;\n }\n\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n\n ctx.save();\n this.setContext(ctx, true);\n\n var _ctx$measureText = ctx.measureText(targetText),\n measure = _ctx$measureText.width;\n\n this.clearContext(ctx);\n ctx.restore();\n return measure;\n }\n }]);\n\n return TextElement;\n}(RenderedElement);\n\nfunction _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$6(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$6() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TSpanElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TSpanElement, _TextElement);\n\n var _super = _createSuper$6(TSpanElement);\n\n function TSpanElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TSpanElement);\n\n _this = _super.call(this, document, node, (this instanceof TSpanElement ? this.constructor : void 0) === TSpanElement ? true : captureTextNodes);\n _this.type = 'tspan'; // if this node has children, then they own the text\n\n _this.text = _this.children.length > 0 ? '' : _this.getTextFromNode();\n return _this;\n }\n\n _createClass(TSpanElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }]);\n\n return TSpanElement;\n}(TextElement);\n\nfunction _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$7() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextNode = /*#__PURE__*/function (_TSpanElement) {\n _inherits(TextNode, _TSpanElement);\n\n var _super = _createSuper$7(TextNode);\n\n function TextNode() {\n var _this;\n\n _classCallCheck(this, TextNode);\n\n _this = _super.apply(this, arguments);\n _this.type = 'textNode';\n return _this;\n }\n\n return TextNode;\n}(TSpanElement);\n\nfunction _createSuper$8(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$8(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$8() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PathParser = /*#__PURE__*/function (_SVGPathData) {\n _inherits(PathParser, _SVGPathData);\n\n var _super = _createSuper$8(PathParser);\n\n function PathParser(path) {\n var _this;\n\n _classCallCheck(this, PathParser);\n\n _this = _super.call(this, path // Fix spaces after signs.\n .replace(/[+-.]\\s+/g, '-') // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n _this.control = null;\n _this.start = null;\n _this.current = null;\n _this.command = null;\n _this.commands = _this.commands;\n _this.i = -1;\n _this.previousCommand = null;\n _this.points = [];\n _this.angles = [];\n return _this;\n }\n\n _createClass(PathParser, [{\n key: \"reset\",\n value: function reset() {\n this.i = -1;\n this.command = null;\n this.previousCommand = null;\n this.start = new Point(0, 0);\n this.control = new Point(0, 0);\n this.current = new Point(0, 0);\n this.points = [];\n this.angles = [];\n }\n }, {\n key: \"isEnd\",\n value: function isEnd() {\n var i = this.i,\n commands = this.commands;\n return i >= commands.length - 1;\n }\n }, {\n key: \"next\",\n value: function next() {\n var command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n }, {\n key: \"getPoint\",\n value: function getPoint() {\n var xProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'x';\n var yProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'y';\n var point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n }, {\n key: \"getAsControlPoint\",\n value: function getAsControlPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n }, {\n key: \"getAsCurrentPoint\",\n value: function getAsCurrentPoint(xProp, yProp) {\n var point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n }, {\n key: \"getReflectedControlPoint\",\n value: function getReflectedControlPoint() {\n var previousCommand = this.previousCommand.type;\n\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n } // reflect point\n\n\n var _this$current = this.current,\n cx = _this$current.x,\n cy = _this$current.y,\n _this$control = this.control,\n ox = _this$control.x,\n oy = _this$control.y;\n var point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n }, {\n key: \"makeAbsolute\",\n value: function makeAbsolute(point) {\n if (this.command.relative) {\n var _this$current2 = this.current,\n x = _this$current2.x,\n y = _this$current2.y;\n point.x += x;\n point.y += y;\n }\n\n return point;\n }\n }, {\n key: \"addMarker\",\n value: function addMarker(point, from, priorTo) {\n var points = this.points,\n angles = this.angles; // if the last angle isn't filled in because we didn't have this point yet ...\n\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n }, {\n key: \"addMarkerAngle\",\n value: function addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n }, {\n key: \"getMarkerPoints\",\n value: function getMarkerPoints() {\n return this.points;\n }\n }, {\n key: \"getMarkerAngles\",\n value: function getMarkerAngles() {\n var angles = this.angles;\n var len = angles.length;\n\n for (var i = 0; i < len; i++) {\n if (!angles[i]) {\n for (var j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j];\n break;\n }\n }\n }\n }\n\n return angles;\n }\n }]);\n\n return PathParser;\n}(SVGPathData);\n\nfunction _createSuper$9(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$9(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$9() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PathElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(PathElement, _RenderedElement);\n\n var _super = _createSuper$9(PathElement);\n\n function PathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PathElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'path';\n _this.pathParser = null;\n _this.pathParser = new PathParser(_this.getAttribute('d').getString());\n return _this;\n }\n\n _createClass(PathElement, [{\n key: \"path\",\n value: function path(ctx) {\n var pathParser = this.pathParser;\n var boundingBox = new BoundingBox();\n pathParser.reset();\n\n if (ctx) {\n ctx.beginPath();\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n\n return boundingBox;\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(_) {\n return this.path();\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var pathParser = this.pathParser;\n var points = pathParser.getMarkerPoints();\n var angles = pathParser.getMarkerAngles();\n\n var markers = _mapInstanceProperty(points).call(points, function (point, i) {\n return [point, angles[i]];\n });\n\n return markers;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n var fillRuleStyleProp = this.getStyle('fill-rule');\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n _fillInstanceProperty(ctx).call(ctx, fillRuleStyleProp.getString());\n } else {\n _fillInstanceProperty(ctx).call(ctx);\n }\n }\n\n if (ctx.strokeStyle !== '') {\n ctx.stroke();\n }\n\n var markers = this.getMarkers();\n\n if (markers) {\n var markersLastIndex = markers.length - 1;\n var markerStartStyleProp = this.getStyle('marker-start');\n var markerMidStyleProp = this.getStyle('marker-mid');\n var markerEndStyleProp = this.getStyle('marker-end');\n\n if (markerStartStyleProp.isUrlDefinition()) {\n var marker = markerStartStyleProp.getDefinition();\n\n var _markers$ = _slicedToArray(markers[0], 2),\n point = _markers$[0],\n angle = _markers$[1];\n\n marker.render(ctx, point, angle);\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n var _marker = markerMidStyleProp.getDefinition();\n\n for (var i = 1; i < markersLastIndex; i++) {\n var _markers$i = _slicedToArray(markers[i], 2),\n _point = _markers$i[0],\n _angle = _markers$i[1];\n\n _marker.render(ctx, _point, _angle);\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n var _marker2 = markerEndStyleProp.getDefinition();\n\n var _markers$markersLastI = _slicedToArray(markers[markersLastIndex], 2),\n _point2 = _markers$markersLastI[0],\n _angle2 = _markers$markersLastI[1];\n\n _marker2.render(ctx, _point2, _angle2);\n }\n }\n }\n }, {\n key: \"pathM\",\n value: function pathM(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathM = PathElement.pathM(pathParser),\n point = _PathElement$pathM.point;\n\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n }, {\n key: \"pathL\",\n value: function pathL(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathL = PathElement.pathL(pathParser),\n current = _PathElement$pathL.current,\n point = _PathElement$pathL.point;\n\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n }, {\n key: \"pathH\",\n value: function pathH(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathH = PathElement.pathH(pathParser),\n current = _PathElement$pathH.current,\n point = _PathElement$pathH.point;\n\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n }, {\n key: \"pathV\",\n value: function pathV(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathV = PathElement.pathV(pathParser),\n current = _PathElement$pathV.current,\n point = _PathElement$pathV.point;\n\n var x = point.x,\n y = point.y;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n }, {\n key: \"pathC\",\n value: function pathC(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathC = PathElement.pathC(pathParser),\n current = _PathElement$pathC.current,\n point = _PathElement$pathC.point,\n controlPoint = _PathElement$pathC.controlPoint,\n currentPoint = _PathElement$pathC.currentPoint;\n\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathS\",\n value: function pathS(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathS = PathElement.pathS(pathParser),\n current = _PathElement$pathS.current,\n point = _PathElement$pathS.point,\n controlPoint = _PathElement$pathS.controlPoint,\n currentPoint = _PathElement$pathS.currentPoint;\n\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathQ = PathElement.pathQ(pathParser),\n current = _PathElement$pathQ.current,\n controlPoint = _PathElement$pathQ.controlPoint,\n currentPoint = _PathElement$pathQ.currentPoint;\n\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathT\",\n value: function pathT(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathT = PathElement.pathT(pathParser),\n current = _PathElement$pathT.current,\n controlPoint = _PathElement$pathT.controlPoint,\n currentPoint = _PathElement$pathT.currentPoint;\n\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n }, {\n key: \"pathA\",\n value: function pathA(ctx, boundingBox) {\n var pathParser = this.pathParser;\n\n var _PathElement$pathA = PathElement.pathA(pathParser),\n currentPoint = _PathElement$pathA.currentPoint,\n rX = _PathElement$pathA.rX,\n rY = _PathElement$pathA.rY,\n sweepFlag = _PathElement$pathA.sweepFlag,\n xAxisRotation = _PathElement$pathA.xAxisRotation,\n centp = _PathElement$pathA.centp,\n a1 = _PathElement$pathA.a1,\n ad = _PathElement$pathA.ad; // for markers\n\n\n var dir = 1 - sweepFlag ? 1.0 : -1.0;\n var ah = a1 + dir * (ad / 2.0);\n var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);\n boundingBox.addPoint(currentPoint.x, currentPoint.y); // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n var r = rX > rY ? rX : rY;\n var sx = rX > rY ? 1 : rX / rY;\n var sy = rX > rY ? rY / rX : 1;\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag));\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n }\n }\n }, {\n key: \"pathZ\",\n value: function pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n }], [{\n key: \"pathM\",\n value: function pathM(pathParser) {\n var point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point: point\n };\n }\n }, {\n key: \"pathL\",\n value: function pathL(pathParser) {\n var current = pathParser.current;\n var point = pathParser.getAsCurrentPoint();\n return {\n current: current,\n point: point\n };\n }\n }, {\n key: \"pathH\",\n value: function pathH(pathParser) {\n var current = pathParser.current,\n command = pathParser.command;\n var point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current: current,\n point: point\n };\n }\n }, {\n key: \"pathV\",\n value: function pathV(pathParser) {\n var current = pathParser.current,\n command = pathParser.command;\n var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current: current,\n point: point\n };\n }\n }, {\n key: \"pathC\",\n value: function pathC(pathParser) {\n var current = pathParser.current;\n var point = pathParser.getPoint('x1', 'y1');\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current: current,\n point: point,\n controlPoint: controlPoint,\n currentPoint: currentPoint\n };\n }\n }, {\n key: \"pathS\",\n value: function pathS(pathParser) {\n var current = pathParser.current;\n var point = pathParser.getReflectedControlPoint();\n var controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current: current,\n point: point,\n controlPoint: controlPoint,\n currentPoint: currentPoint\n };\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(pathParser) {\n var current = pathParser.current;\n var controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current: current,\n controlPoint: controlPoint,\n currentPoint: currentPoint\n };\n }\n }, {\n key: \"pathT\",\n value: function pathT(pathParser) {\n var current = pathParser.current;\n var controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n var currentPoint = pathParser.getAsCurrentPoint();\n return {\n current: current,\n controlPoint: controlPoint,\n currentPoint: currentPoint\n };\n }\n }, {\n key: \"pathA\",\n value: function pathA(pathParser) {\n var current = pathParser.current,\n command = pathParser.command;\n var rX = command.rX,\n rY = command.rY,\n xRot = command.xRot,\n lArcFlag = command.lArcFlag,\n sweepFlag = command.sweepFlag;\n var xAxisRotation = xRot * (Math.PI / 180.0);\n var currentPoint = pathParser.getAsCurrentPoint(); // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n\n var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0); // adjust radii\n\n var l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n } // cx', cy'\n\n\n var s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n\n if (isNaN(s)) {\n s = 0;\n }\n\n var cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX); // cx, cy\n\n var centp = new Point((current.x + currentPoint.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); // initial angle\n\n var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]); // θ1\n // angle delta\n\n var u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];\n var v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];\n var ad = vectorsAngle(u, v); // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n\n return {\n currentPoint: currentPoint,\n rX: rX,\n rY: rY,\n sweepFlag: sweepFlag,\n xAxisRotation: xAxisRotation,\n centp: centp,\n a1: a1,\n ad: ad\n };\n }\n }, {\n key: \"pathZ\",\n value: function pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n }]);\n\n return PathElement;\n}(RenderedElement);\n\nfunction _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$a() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SVGElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(SVGElement, _RenderedElement);\n\n var _super = _createSuper$a(SVGElement);\n\n function SVGElement() {\n var _this;\n\n _classCallCheck(this, SVGElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'svg';\n _this.root = false;\n return _this;\n }\n\n _createClass(SVGElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n var document = this.document;\n var screen = document.screen,\n window = document.window;\n var canvas = ctx.canvas;\n screen.setDefaults(ctx);\n\n if (canvas.style && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n var fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n } // create new view port\n\n\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n\n var _screen$viewPort = screen.viewPort,\n width = _screen$viewPort.width,\n height = _screen$viewPort.height;\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n\n var refXAttr = this.getAttribute('refX');\n var refYAttr = this.getAttribute('refY');\n var viewBoxAttr = this.getAttribute('viewBox');\n var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n var clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n var minX = 0;\n var minY = 0;\n var clipX = 0;\n var clipY = 0;\n\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n\n screen.viewPort.setCurrent(width, height);\n\n if (this.node // is not temporary SVGElement\n && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n\n _get(_getPrototypeOf(SVGElement.prototype), \"setContext\", this).call(this, ctx);\n\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\n }\n\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX: minX,\n minY: minY,\n refX: refXAttr.getValue(),\n refY: refYAttr.getValue(),\n clip: clip,\n clipX: clipX,\n clipY: clipY\n });\n\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n }, {\n key: \"clearContext\",\n value: function clearContext(ctx) {\n _get(_getPrototypeOf(SVGElement.prototype), \"clearContext\", this).call(this, ctx);\n\n this.document.screen.viewPort.removeCurrent();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n }, {\n key: \"resize\",\n value: function resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var widthAttr = this.getAttribute('width', true);\n var heightAttr = this.getAttribute('height', true);\n var viewBoxAttr = this.getAttribute('viewBox');\n var styleAttr = this.getAttribute('style');\n var originWidth = widthAttr.getNumber(0);\n var originHeight = heightAttr.getNumber(0);\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n\n if (!viewBoxAttr.hasValue()) {\n var _context;\n\n viewBoxAttr.setValue(_concatInstanceProperty(_context = \"0 0 \".concat(originWidth || width, \" \")).call(_context, originHeight || height));\n }\n\n if (styleAttr.hasValue()) {\n var widthStyle = this.getStyle('width');\n var heightStyle = this.getStyle('height');\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n }]);\n\n return SVGElement;\n}(RenderedElement);\n\nfunction _createSuper$b(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$b(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$b() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RectElement = /*#__PURE__*/function (_PathElement) {\n _inherits(RectElement, _PathElement);\n\n var _super = _createSuper$b(RectElement);\n\n function RectElement() {\n var _this;\n\n _classCallCheck(this, RectElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'rect';\n return _this;\n }\n\n _createClass(RectElement, [{\n key: \"path\",\n value: function path(ctx) {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width', false, true).getPixels('x');\n var height = this.getStyle('height', false, true).getPixels('y');\n var rxAttr = this.getAttribute('rx');\n var ryAttr = this.getAttribute('ry');\n var rx = rxAttr.getPixels('x');\n var ry = ryAttr.getPixels('y');\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n\n rx = Math.min(rx, width / 2.0);\n ry = Math.min(ry, height / 2.0);\n\n if (ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n ctx.beginPath(); // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x + width - rx, y);\n ctx.bezierCurveTo(x + width - rx + KAPPA * rx, y, x + width, y + ry - KAPPA * ry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - KAPPA * rx, y + height, x, y + height - ry + KAPPA * ry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - KAPPA * ry, x + rx - KAPPA * rx, y, x + rx, y);\n ctx.closePath();\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return RectElement;\n}(PathElement);\n\nfunction _createSuper$c(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$c(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$c() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar CircleElement = /*#__PURE__*/function (_PathElement) {\n _inherits(CircleElement, _PathElement);\n\n var _super = _createSuper$c(CircleElement);\n\n function CircleElement() {\n var _this;\n\n _classCallCheck(this, CircleElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'circle';\n return _this;\n }\n\n _createClass(CircleElement, [{\n key: \"path\",\n value: function path(ctx) {\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n var r = this.getAttribute('r').getPixels();\n\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return CircleElement;\n}(PathElement);\n\nfunction _createSuper$d(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$d(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$d() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar EllipseElement = /*#__PURE__*/function (_PathElement) {\n _inherits(EllipseElement, _PathElement);\n\n var _super = _createSuper$d(EllipseElement);\n\n function EllipseElement() {\n var _this;\n\n _classCallCheck(this, EllipseElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'ellipse';\n return _this;\n }\n\n _createClass(EllipseElement, [{\n key: \"path\",\n value: function path(ctx) {\n var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\n var rx = this.getAttribute('rx').getPixels('x');\n var ry = this.getAttribute('ry').getPixels('y');\n var cx = this.getAttribute('cx').getPixels('x');\n var cy = this.getAttribute('cy').getPixels('y');\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n return null;\n }\n }]);\n\n return EllipseElement;\n}(PathElement);\n\nfunction _createSuper$e(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$e(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$e() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar LineElement = /*#__PURE__*/function (_PathElement) {\n _inherits(LineElement, _PathElement);\n\n var _super = _createSuper$e(LineElement);\n\n function LineElement() {\n var _this;\n\n _classCallCheck(this, LineElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'line';\n return _this;\n }\n\n _createClass(LineElement, [{\n key: \"getPoints\",\n value: function getPoints() {\n return [new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')), new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))];\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var _this$getPoints = this.getPoints(),\n _this$getPoints2 = _slicedToArray(_this$getPoints, 2),\n _this$getPoints2$ = _this$getPoints2[0],\n x0 = _this$getPoints2$.x,\n y0 = _this$getPoints2$.y,\n _this$getPoints2$2 = _this$getPoints2[1],\n x1 = _this$getPoints2$2.x,\n y1 = _this$getPoints2$2.y;\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n\n return new BoundingBox(x0, y0, x1, y1);\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var _this$getPoints3 = this.getPoints(),\n _this$getPoints4 = _slicedToArray(_this$getPoints3, 2),\n p0 = _this$getPoints4[0],\n p1 = _this$getPoints4[1];\n\n var a = p0.angleTo(p1);\n return [[p0, a], [p1, a]];\n }\n }]);\n\n return LineElement;\n}(PathElement);\n\nfunction _createSuper$f(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$f(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$f() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PolylineElement = /*#__PURE__*/function (_PathElement) {\n _inherits(PolylineElement, _PathElement);\n\n var _super = _createSuper$f(PolylineElement);\n\n function PolylineElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, PolylineElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'polyline';\n _this.points = [];\n _this.points = Point.parsePath(_this.getAttribute('points').getString());\n return _this;\n }\n\n _createClass(PolylineElement, [{\n key: \"path\",\n value: function path(ctx) {\n var points = this.points;\n\n var _points = _slicedToArray(points, 1),\n _points$ = _points[0],\n x0 = _points$.x,\n y0 = _points$.y;\n\n var boundingBox = new BoundingBox(x0, y0);\n\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n\n _forEachInstanceProperty(points).call(points, function (_ref) {\n var x = _ref.x,\n y = _ref.y;\n boundingBox.addPoint(x, y);\n\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n\n return boundingBox;\n }\n }, {\n key: \"getMarkers\",\n value: function getMarkers() {\n var points = this.points;\n var lastIndex = points.length - 1;\n var markers = [];\n\n _forEachInstanceProperty(points).call(points, function (point, i) {\n if (i === lastIndex) {\n return;\n }\n\n markers.push([point, point.angleTo(points[i + 1])]);\n });\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]]);\n }\n\n return markers;\n }\n }]);\n\n return PolylineElement;\n}(PathElement);\n\nfunction _createSuper$g(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$g(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$g() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PolygonElement = /*#__PURE__*/function (_PolylineElement) {\n _inherits(PolygonElement, _PolylineElement);\n\n var _super = _createSuper$g(PolygonElement);\n\n function PolygonElement() {\n var _this;\n\n _classCallCheck(this, PolygonElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'polygon';\n return _this;\n }\n\n _createClass(PolygonElement, [{\n key: \"path\",\n value: function path(ctx) {\n var boundingBox = _get(_getPrototypeOf(PolygonElement.prototype), \"path\", this).call(this, ctx);\n\n var _this$points = _slicedToArray(this.points, 1),\n _this$points$ = _this$points[0],\n x = _this$points$.x,\n y = _this$points$.y;\n\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n\n return boundingBox;\n }\n }]);\n\n return PolygonElement;\n}(PolylineElement);\n\nfunction _createSuper$h(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$h(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$h() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar PatternElement = /*#__PURE__*/function (_Element) {\n _inherits(PatternElement, _Element);\n\n var _super = _createSuper$h(PatternElement);\n\n function PatternElement() {\n var _this;\n\n _classCallCheck(this, PatternElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'pattern';\n return _this;\n }\n\n _createClass(PatternElement, [{\n key: \"createPattern\",\n value: function createPattern(ctx, _, parentOpacityProp) {\n var width = this.getStyle('width').getPixels('x', true);\n var height = this.getStyle('height').getPixels('y', true); // render me using a temporary svg element\n\n var patternSvg = new SVGElement(this.document, null);\n patternSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n patternSvg.attributes.width = new Property(this.document, 'width', \"\".concat(width, \"px\"));\n patternSvg.attributes.height = new Property(this.document, 'height', \"\".concat(height, \"px\"));\n patternSvg.attributes.transform = new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue());\n patternSvg.children = this.children;\n var patternCanvas = this.document.createCanvas(width, height);\n var patternCtx = patternCanvas.getContext('2d');\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp;\n } else {\n _Reflect$deleteProperty(this.styles, 'fill-opacity');\n } // render 3x3 grid so when we transform there's no white space on edges\n\n\n for (var x = -1; x <= 1; x++) {\n for (var y = -1; y <= 1; y++) {\n patternCtx.save();\n patternSvg.attributes.x = new Property(this.document, 'x', x * patternCanvas.width);\n patternSvg.attributes.y = new Property(this.document, 'y', y * patternCanvas.height);\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n\n var pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n }]);\n\n return PatternElement;\n}(Element);\n\nfunction _createSuper$i(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$i(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$i() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MarkerElement = /*#__PURE__*/function (_Element) {\n _inherits(MarkerElement, _Element);\n\n var _super = _createSuper$i(MarkerElement);\n\n function MarkerElement() {\n var _this;\n\n _classCallCheck(this, MarkerElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'marker';\n return _this;\n }\n\n _createClass(MarkerElement, [{\n key: \"render\",\n value: function render(ctx, point, angle) {\n if (!point) {\n return;\n }\n\n var x = point.x,\n y = point.y;\n var orient = this.getAttribute('orient').getValue('auto');\n var markerUnits = this.getAttribute('markerUnits').getValue('strokeWidth');\n ctx.translate(x, y);\n\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n\n ctx.save(); // render me using a temporary svg element\n\n var markerSvg = new SVGElement(this.document, null);\n markerSvg.type = this.type;\n markerSvg.attributes.viewBox = new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue());\n markerSvg.attributes.refX = new Property(this.document, 'refX', this.getAttribute('refX').getValue());\n markerSvg.attributes.refY = new Property(this.document, 'refY', this.getAttribute('refY').getValue());\n markerSvg.attributes.width = new Property(this.document, 'width', this.getAttribute('markerWidth').getValue());\n markerSvg.attributes.height = new Property(this.document, 'height', this.getAttribute('markerHeight').getValue());\n markerSvg.attributes.overflow = new Property(this.document, 'overflow', this.getAttribute('overflow').getValue());\n markerSvg.attributes.fill = new Property(this.document, 'fill', this.getAttribute('fill').getColor('black'));\n markerSvg.attributes.stroke = new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none'));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n\n ctx.translate(-x, -y);\n }\n }]);\n\n return MarkerElement;\n}(Element);\n\nfunction _createSuper$j(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$j(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$j() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar DefsElement = /*#__PURE__*/function (_Element) {\n _inherits(DefsElement, _Element);\n\n var _super = _createSuper$j(DefsElement);\n\n function DefsElement() {\n var _this;\n\n _classCallCheck(this, DefsElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'defs';\n return _this;\n }\n\n _createClass(DefsElement, [{\n key: \"render\",\n value: function render() {// NOOP\n }\n }]);\n\n return DefsElement;\n}(Element);\n\nfunction _createSuper$k(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$k(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$k() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(GElement, _RenderedElement);\n\n var _super = _createSuper$k(GElement);\n\n function GElement() {\n var _this;\n\n _classCallCheck(this, GElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'g';\n return _this;\n }\n\n _createClass(GElement, [{\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var _context;\n\n var boundingBox = new BoundingBox();\n\n _forEachInstanceProperty(_context = this.children).call(_context, function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n\n return boundingBox;\n }\n }]);\n\n return GElement;\n}(RenderedElement);\n\nfunction _createSuper$l(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$l(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$l() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GradientElement = /*#__PURE__*/function (_Element) {\n _inherits(GradientElement, _Element);\n\n var _super = _createSuper$l(GradientElement);\n\n function GradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.attributesToInherit = ['gradientUnits'];\n _this.stops = [];\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n stops = _assertThisInitialize.stops,\n children = _assertThisInitialize.children;\n\n _forEachInstanceProperty(children).call(children, function (child) {\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n\n return _this;\n }\n\n _createClass(GradientElement, [{\n key: \"getGradientUnits\",\n value: function getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n }, {\n key: \"createGradient\",\n value: function createGradient(ctx, element, parentOpacityProp) {\n var _this2 = this;\n\n // tslint:disable-next-line: no-this-assignment\n var stopsContainer = this;\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n\n var _stopsContainer = stopsContainer,\n stops = _stopsContainer.stops;\n var gradient = this.getGradient(ctx, element);\n\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n\n _forEachInstanceProperty(stops).call(stops, function (stop) {\n gradient.addColorStop(stop.offset, _this2.addParentOpacity(parentOpacityProp, stop.color));\n });\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n var document = this.document;\n var _document$screen = document.screen,\n MAX_VIRTUAL_PIXELS = _document$screen.MAX_VIRTUAL_PIXELS,\n viewPort = _document$screen.viewPort;\n\n var _viewPort$viewPorts = _slicedToArray(viewPort.viewPorts, 1),\n rootView = _viewPort$viewPorts[0];\n\n var rect = new RectElement(document, null);\n rect.attributes.x = new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.y = new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3.0);\n rect.attributes.width = new Property(document, 'width', MAX_VIRTUAL_PIXELS);\n rect.attributes.height = new Property(document, 'height', MAX_VIRTUAL_PIXELS);\n var group = new GElement(document, null);\n group.attributes.transform = new Property(document, 'transform', this.getAttribute('gradientTransform').getValue());\n group.children = [rect];\n var patternSvg = new SVGElement(document, null);\n patternSvg.attributes.x = new Property(document, 'x', 0);\n patternSvg.attributes.y = new Property(document, 'y', 0);\n patternSvg.attributes.width = new Property(document, 'width', rootView.width);\n patternSvg.attributes.height = new Property(document, 'height', rootView.height);\n patternSvg.children = [group];\n var patternCanvas = document.createCanvas(rootView.width, rootView.height);\n var patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n\n return gradient;\n }\n }, {\n key: \"inheritStopContainer\",\n value: function inheritStopContainer(stopsContainer) {\n var _context,\n _this3 = this;\n\n _forEachInstanceProperty(_context = this.attributesToInherit).call(_context, function (attributeToInherit) {\n if (!_this3.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n _this3.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n }, {\n key: \"addParentOpacity\",\n value: function addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n var colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n\n return color;\n }\n }]);\n\n return GradientElement;\n}(Element);\n\nfunction _createSuper$m(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$m(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$m() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar LinearGradientElement = /*#__PURE__*/function (_GradientElement) {\n _inherits(LinearGradientElement, _GradientElement);\n\n var _super = _createSuper$m(LinearGradientElement);\n\n function LinearGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, LinearGradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'linearGradient';\n\n _this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n\n return _this;\n }\n\n _createClass(LinearGradientElement, [{\n key: \"getGradient\",\n value: function getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\n this.getAttribute('x1', true).setValue(0);\n this.getAttribute('y1', true).setValue(0);\n this.getAttribute('x2', true).setValue(1);\n this.getAttribute('y2', true).setValue(0);\n }\n\n var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n }]);\n\n return LinearGradientElement;\n}(GradientElement);\n\nfunction _createSuper$n(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$n(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$n() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar RadialGradientElement = /*#__PURE__*/function (_GradientElement) {\n _inherits(RadialGradientElement, _GradientElement);\n\n var _super = _createSuper$n(RadialGradientElement);\n\n function RadialGradientElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, RadialGradientElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'radialGradient';\n\n _this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n\n return _this;\n }\n\n _createClass(RadialGradientElement, [{\n key: \"getGradient\",\n value: function getGradient(ctx, element) {\n var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n var boundingBox = element.getBoundingBox(ctx);\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n\n var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n var fx = cx;\n var fy = cy;\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n\n var r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n var fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n }]);\n\n return RadialGradientElement;\n}(GradientElement);\n\nfunction _createSuper$o(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$o(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$o() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar StopElement = /*#__PURE__*/function (_Element) {\n _inherits(StopElement, _Element);\n\n var _super = _createSuper$o(StopElement);\n\n function StopElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, StopElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'stop';\n var offset = Math.max(0, Math.min(1, _this.getAttribute('offset').getNumber()));\n\n var stopOpacity = _this.getStyle('stop-opacity');\n\n var stopColor = _this.getStyle('stop-color', true);\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n\n _this.offset = offset;\n _this.color = stopColor.getColor();\n return _this;\n }\n\n return StopElement;\n}(Element);\n\nfunction _createSuper$p(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$p(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$p() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateElement = /*#__PURE__*/function (_Element) {\n _inherits(AnimateElement, _Element);\n\n var _super = _createSuper$p(AnimateElement);\n\n function AnimateElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, AnimateElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'animate';\n _this.duration = 0;\n _this.initialValue = null;\n _this.initialUnits = '';\n _this.removed = false;\n _this.frozen = false;\n document.screen.animations.push(_assertThisInitialized(_this));\n _this.begin = _this.getAttribute('begin').getMilliseconds();\n _this.maxDuration = _this.begin + _this.getAttribute('dur').getMilliseconds();\n _this.from = _this.getAttribute('from');\n _this.to = _this.getAttribute('to');\n _this.values = _this.getAttribute('values');\n\n if (_valuesInstanceProperty(_this).hasValue()) {\n _valuesInstanceProperty(_this).setValue(_valuesInstanceProperty(_this).getString().split(';'));\n }\n\n return _this;\n }\n\n _createClass(AnimateElement, [{\n key: \"getProperty\",\n value: function getProperty() {\n var attributeType = this.getAttribute('attributeType').getString();\n var attributeName = this.getAttribute('attributeName').getString();\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n\n return this.parent.getAttribute(attributeName, true);\n }\n }, {\n key: \"calcValue\",\n value: function calcValue() {\n var _context;\n\n var initialUnits = this.initialUnits;\n\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n\n if (initialUnits === '%') {\n newValue *= 100.0; // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return _concatInstanceProperty(_context = \"\".concat(newValue)).call(_context, initialUnits);\n }\n }, {\n key: \"update\",\n value: function update(delta) {\n var parent = this.parent;\n var prop = this.getProperty(); // set initial value\n\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n } // if we're past the end time\n\n\n if (this.duration > this.maxDuration) {\n var fill = this.getAttribute('fill').getString('remove'); // loop for indefinitely repeating animations\n\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n return true;\n }\n\n return false;\n }\n\n this.duration += delta; // if we're past the begin time\n\n var updated = false;\n\n if (this.begin < this.duration) {\n var newValue = this.calcValue(); // tween\n\n var typeAttr = this.getAttribute('type');\n\n if (typeAttr.hasValue()) {\n var _context2;\n\n // for transform, etc.\n var type = typeAttr.getString();\n newValue = _concatInstanceProperty(_context2 = \"\".concat(type, \"(\")).call(_context2, newValue, \")\");\n }\n\n prop.setValue(newValue);\n updated = true;\n }\n\n return updated;\n }\n }, {\n key: \"getProgress\",\n value: function getProgress() {\n var document = this.document,\n values = _valuesInstanceProperty(this);\n\n var result = {\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\n };\n\n if (values.hasValue()) {\n var p = result.progress * (values.getValue().length - 1);\n var lb = Math.floor(p);\n var ub = Math.ceil(p);\n result.from = new Property(document, 'from', _parseFloat(values.getValue()[lb]));\n result.to = new Property(document, 'to', _parseFloat(values.getValue()[ub]));\n result.progress = (p - lb) / (ub - lb);\n } else {\n result.from = this.from;\n result.to = this.to;\n }\n\n return result;\n }\n }]);\n\n return AnimateElement;\n}(Element);\n\nfunction _createSuper$q(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$q(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$q() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateColorElement = /*#__PURE__*/function (_AnimateElement) {\n _inherits(AnimateColorElement, _AnimateElement);\n\n var _super = _createSuper$q(AnimateColorElement);\n\n function AnimateColorElement() {\n var _this;\n\n _classCallCheck(this, AnimateColorElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'animateColor';\n return _this;\n }\n\n _createClass(AnimateColorElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to;\n\n var colorFrom = new RGBColor(from.getColor());\n var colorTo = new RGBColor(to.getColor());\n\n if (colorFrom.ok && colorTo.ok) {\n var _context, _context2;\n\n // tween color linearly\n var r = colorFrom.r + (colorTo.r - colorFrom.r) * progress;\n var g = colorFrom.g + (colorTo.g - colorFrom.g) * progress;\n var b = colorFrom.b + (colorTo.b - colorFrom.b) * progress; // ? alpha\n\n return _concatInstanceProperty(_context = _concatInstanceProperty(_context2 = \"rgb(\".concat(_parseInt(r, 10), \", \")).call(_context2, _parseInt(g, 10), \", \")).call(_context, _parseInt(b, 10), \")\");\n }\n\n return this.getAttribute('from').getColor();\n }\n }]);\n\n return AnimateColorElement;\n}(AnimateElement);\n\nfunction _createSuper$r(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$r(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$r() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AnimateTransformElement = /*#__PURE__*/function (_AnimateElement) {\n _inherits(AnimateTransformElement, _AnimateElement);\n\n var _super = _createSuper$r(AnimateTransformElement);\n\n function AnimateTransformElement() {\n var _this;\n\n _classCallCheck(this, AnimateTransformElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'animateTransform';\n return _this;\n }\n\n _createClass(AnimateTransformElement, [{\n key: \"calcValue\",\n value: function calcValue() {\n var _this$getProgress = this.getProgress(),\n progress = _this$getProgress.progress,\n from = _this$getProgress.from,\n to = _this$getProgress.to; // tween value linearly\n\n\n var transformFrom = toNumbers(from.getString());\n var transformTo = toNumbers(to.getString());\n\n var newValue = _mapInstanceProperty(transformFrom).call(transformFrom, function (from, i) {\n var to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n\n return newValue;\n }\n }]);\n\n return AnimateTransformElement;\n}(AnimateElement);\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof _Symbol === \"undefined\" || _getIteratorMethod(o) == null) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = _getIterator(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper$s(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$s(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$s() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FontElement = /*#__PURE__*/function (_Element) {\n _inherits(FontElement, _Element);\n\n var _super = _createSuper$s(FontElement);\n\n function FontElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'font';\n _this.glyphs = {};\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n var definitions = document.definitions;\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n children = _assertThisInitialize.children;\n\n var _iterator = _createForOfIteratorHelper(children),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n\n switch (child.type) {\n case 'font-face':\n {\n _this.fontFace = child;\n var fontFamilyStyle = child.getStyle('font-family');\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = _assertThisInitialized(_this);\n }\n\n break;\n }\n\n case 'missing-glyph':\n _this.missingGlyph = child;\n break;\n\n case 'glyph':\n {\n var glyph = child;\n\n if (glyph.arabicForm) {\n _this.isRTL = true;\n _this.isArabic = true;\n\n if (typeof _this.glyphs[glyph.unicode] === 'undefined') {\n _this.glyphs[glyph.unicode] = {};\n }\n\n _this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;\n } else {\n _this.glyphs[glyph.unicode] = glyph;\n }\n\n break;\n }\n\n default:\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return _this;\n }\n\n _createClass(FontElement, [{\n key: \"render\",\n value: function render() {// NO RENDER\n }\n }]);\n\n return FontElement;\n}(Element);\n\nfunction _createSuper$t(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$t(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$t() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FontFaceElement = /*#__PURE__*/function (_Element) {\n _inherits(FontFaceElement, _Element);\n\n var _super = _createSuper$t(FontFaceElement);\n\n function FontFaceElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FontFaceElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'font-face';\n _this.ascent = _this.getAttribute('ascent').getNumber();\n _this.descent = _this.getAttribute('descent').getNumber();\n _this.unitsPerEm = _this.getAttribute('units-per-em').getNumber();\n return _this;\n }\n\n return FontFaceElement;\n}(Element);\n\nfunction _createSuper$u(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$u(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$u() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MissingGlyphElement = /*#__PURE__*/function (_PathElement) {\n _inherits(MissingGlyphElement, _PathElement);\n\n var _super = _createSuper$u(MissingGlyphElement);\n\n function MissingGlyphElement() {\n var _this;\n\n _classCallCheck(this, MissingGlyphElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'missing-glyph';\n _this.horizAdvX = 0;\n return _this;\n }\n\n return MissingGlyphElement;\n}(PathElement);\n\nfunction _createSuper$v(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$v(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$v() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar GlyphElement = /*#__PURE__*/function (_PathElement) {\n _inherits(GlyphElement, _PathElement);\n\n var _super = _createSuper$v(GlyphElement);\n\n function GlyphElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, GlyphElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'glyph';\n _this.horizAdvX = _this.getAttribute('horiz-adv-x').getNumber();\n _this.unicode = _this.getAttribute('unicode').getString();\n _this.arabicForm = _this.getAttribute('arabic-form').getString();\n return _this;\n }\n\n return GlyphElement;\n}(PathElement);\n\nfunction _createSuper$w(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$w(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$w() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TRefElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TRefElement, _TextElement);\n\n var _super = _createSuper$w(TRefElement);\n\n function TRefElement() {\n var _this;\n\n _classCallCheck(this, TRefElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'tref';\n return _this;\n }\n\n _createClass(TRefElement, [{\n key: \"getText\",\n value: function getText() {\n var element = this.getHrefAttribute().getDefinition();\n\n if (element) {\n var firstChild = element.children[0];\n\n if (firstChild) {\n return firstChild.getText();\n }\n }\n\n return '';\n }\n }]);\n\n return TRefElement;\n}(TextElement);\n\nfunction _createSuper$x(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$x(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$x() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar AElement = /*#__PURE__*/function (_TextElement) {\n _inherits(AElement, _TextElement);\n\n var _super = _createSuper$x(AElement);\n\n function AElement(document, node, captureTextNodes) {\n var _context;\n\n var _this;\n\n _classCallCheck(this, AElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'a';\n var childNodes = node.childNodes;\n var firstChild = childNodes[0];\n\n var hasText = childNodes.length > 0 && _everyInstanceProperty(_context = _Array$from(childNodes)).call(_context, function (node) {\n return node.nodeType === 3;\n });\n\n _this.hasText = hasText;\n _this.text = hasText ? _this.getTextFromNode(firstChild) : '';\n return _this;\n }\n\n _createClass(AElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n _get(_getPrototypeOf(AElement.prototype), \"renderChildren\", this).call(this, ctx);\n\n var document = this.document,\n x = this.x,\n y = this.y;\n var mouse = document.screen.mouse;\n var fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize); // Do not calc bounding box if mouse is not working.\n\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n var g = new GElement(this.document, null);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n }, {\n key: \"onClick\",\n value: function onClick() {\n var window = this.document.window;\n\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n }, {\n key: \"onMouseMove\",\n value: function onMouseMove() {\n var ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n }]);\n\n return AElement;\n}(TextElement);\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) { var it; if (typeof _Symbol === \"undefined\" || _getIteratorMethod(o) == null) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = _getIterator(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$1(o, minLen) { var _context5; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = _sliceInstanceProperty(_context5 = Object.prototype.toString.call(o)).call(_context5, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\n\nfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context3; _forEachInstanceProperty(_context3 = ownKeys(Object(source), true)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context4; _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$y(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$y(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$y() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TextPathElement = /*#__PURE__*/function (_TextElement) {\n _inherits(TextPathElement, _TextElement);\n\n var _super = _createSuper$y(TextPathElement);\n\n function TextPathElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, TextPathElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'textPath';\n _this.textWidth = 0;\n _this.textHeight = 0;\n _this.pathLength = -1;\n _this.glyphInfo = null;\n _this.letterSpacingCache = [];\n _this.measuresCache = new _Map([['', 0]]);\n\n var pathElement = _this.getHrefAttribute().getDefinition();\n\n _this.text = _this.getTextFromNode();\n _this.dataArray = _this.parsePathData(pathElement);\n return _this;\n }\n\n _createClass(TextPathElement, [{\n key: \"getText\",\n value: function getText() {\n return this.text;\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var dataArray = this.dataArray;\n\n if (ctx) {\n ctx.beginPath();\n }\n\n _forEachInstanceProperty(dataArray).call(dataArray, function (_ref) {\n var type = _ref.type,\n points = _ref.points;\n\n switch (type) {\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n\n break;\n\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n\n break;\n\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n\n break;\n\n case PathParser.ARC:\n {\n var _points = _slicedToArray(points, 8),\n cx = _points[0],\n cy = _points[1],\n rx = _points[2],\n ry = _points[3],\n theta = _points[4],\n dTheta = _points[5],\n psi = _points[6],\n fs = _points[7];\n\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n\n if (ctx) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs));\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n }\n\n break;\n }\n\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n\n break;\n }\n });\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n var textDecoration = this.parent.getStyle('text-decoration').getString();\n var fontSize = this.getFontSize();\n var glyphInfo = this.glyphInfo;\n var fill = ctx.fillStyle;\n\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n\n _forEachInstanceProperty(glyphInfo).call(glyphInfo, function (glyph, i) {\n var p0 = glyph.p0,\n p1 = glyph.p1,\n rotation = glyph.rotation,\n partialText = glyph.text;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n\n ctx.restore();\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\n } //// To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // \tctx.strokeStyle = 'red';\n // else\n // \tctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n\n });\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n\n ctx.restore();\n }\n }, {\n key: \"getLetterSpacingAt\",\n value: function getLetterSpacingAt() {\n var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n }, {\n key: \"findSegmentToFitChar\",\n value: function findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n var offset = inputOffset;\n var glyphWidth = this.measureText(ctx, c);\n\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\n }\n\n var splineStep = this.textHeight / 20;\n var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);\n var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);\n var segment = {\n p0: p0,\n p1: p1\n };\n var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n\n if (dy) {\n var dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n var dyY = Math.cos(-rotation) * dy;\n segment.p0 = _objectSpread(_objectSpread({}, p0), {}, {\n x: p0.x + dyX,\n y: p0.y + dyY\n });\n segment.p1 = _objectSpread(_objectSpread({}, p1), {}, {\n x: p1.x + dyX,\n y: p1.y + dyY\n });\n }\n\n offset += glyphWidth;\n return {\n offset: offset,\n segment: segment,\n rotation: rotation\n };\n }\n }, {\n key: \"measureText\",\n value: function measureText(ctx, text) {\n var measuresCache = this.measuresCache;\n var targetText = text || this.getText();\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n\n var measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\n } // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n\n }, {\n key: \"setTextData\",\n value: function setTextData(ctx) {\n var _context,\n _this2 = this;\n\n if (this.glyphInfo) {\n return;\n }\n\n var renderText = this.getText();\n var chars = renderText.split('');\n var spacesNumber = renderText.split(' ').length - 1;\n\n var dx = _mapInstanceProperty(_context = this.parent.getAttribute('dx').split()).call(_context, function (_) {\n return _.getPixels('x');\n });\n\n var dy = this.parent.getAttribute('dy').getPixels('y');\n var anchor = this.parent.getStyle('text-anchor').getString('start');\n var thisSpacing = this.getStyle('letter-spacing');\n var parentSpacing = this.parent.getStyle('letter-spacing');\n var letterSpacing = 0;\n\n if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n } // fill letter-spacing cache\n\n\n var letterSpacingCache = [];\n var textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n\n for (var i = 0; i < textLen; i++) {\n letterSpacingCache.push(typeof dx[i] !== 'undefined' ? dx[i] : letterSpacing);\n }\n\n var dxSum = _reduceInstanceProperty(letterSpacingCache).call(letterSpacingCache, function (acc, cur, i) {\n return i === 0 ? 0 : acc + cur || 0;\n }, 0);\n\n var textWidth = this.measureText(ctx);\n var textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n var fullPathWidth = this.getPathLength();\n var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n var offset = 0;\n\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n\n offset += startOffset;\n\n _forEachInstanceProperty(chars).call(chars, function (char, i) {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n var _this2$findSegmentToF = _this2.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i),\n nextOffset = _this2$findSegmentToF.offset,\n segment = _this2$findSegmentToF.segment,\n rotation = _this2$findSegmentToF.rotation;\n\n offset = nextOffset;\n\n if (!segment.p0 || !segment.p1) {\n return;\n } // const width = this.getLineLength(\n // \tsegment.p0.x,\n // \tsegment.p0.y,\n // \tsegment.p1.x,\n // \tsegment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // \tkern + width / 2.0,\n // \tsegment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n\n _this2.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation: rotation\n });\n });\n }\n }, {\n key: \"parsePathData\",\n value: function parsePathData(path) {\n this.pathLength = -1; // reset path length\n\n if (!path) {\n return [];\n }\n\n var pathCommands = [];\n var pathParser = path.pathParser;\n pathParser.reset(); // convert l, H, h, V, and v to L\n\n while (!pathParser.isEnd()) {\n var current = pathParser.current;\n var startX = current ? current.x : 0;\n var startY = current ? current.y : 0;\n var command = pathParser.next();\n var nextCommandType = command.type;\n var points = [];\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points: points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n });\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n });\n }\n }\n\n return pathCommands;\n }\n }, {\n key: \"pathM\",\n value: function pathM(pathParser, points) {\n var _PathElement$pathM$po = PathElement.pathM(pathParser).point,\n x = _PathElement$pathM$po.x,\n y = _PathElement$pathM$po.y;\n points.push(x, y);\n }\n }, {\n key: \"pathL\",\n value: function pathL(pathParser, points) {\n var _PathElement$pathL$po = PathElement.pathL(pathParser).point,\n x = _PathElement$pathL$po.x,\n y = _PathElement$pathL$po.y;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n }, {\n key: \"pathH\",\n value: function pathH(pathParser, points) {\n var _PathElement$pathH$po = PathElement.pathH(pathParser).point,\n x = _PathElement$pathH$po.x,\n y = _PathElement$pathH$po.y;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n }, {\n key: \"pathV\",\n value: function pathV(pathParser, points) {\n var _PathElement$pathV$po = PathElement.pathV(pathParser).point,\n x = _PathElement$pathV$po.x,\n y = _PathElement$pathV$po.y;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n }, {\n key: \"pathC\",\n value: function pathC(pathParser, points) {\n var _PathElement$pathC = PathElement.pathC(pathParser),\n point = _PathElement$pathC.point,\n controlPoint = _PathElement$pathC.controlPoint,\n currentPoint = _PathElement$pathC.currentPoint;\n\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }, {\n key: \"pathS\",\n value: function pathS(pathParser, points) {\n var _PathElement$pathS = PathElement.pathS(pathParser),\n point = _PathElement$pathS.point,\n controlPoint = _PathElement$pathS.controlPoint,\n currentPoint = _PathElement$pathS.currentPoint;\n\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n }, {\n key: \"pathQ\",\n value: function pathQ(pathParser, points) {\n var _PathElement$pathQ = PathElement.pathQ(pathParser),\n controlPoint = _PathElement$pathQ.controlPoint,\n currentPoint = _PathElement$pathQ.currentPoint;\n\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }, {\n key: \"pathT\",\n value: function pathT(pathParser, points) {\n var _PathElement$pathT = PathElement.pathT(pathParser),\n controlPoint = _PathElement$pathT.controlPoint,\n currentPoint = _PathElement$pathT.currentPoint;\n\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n }, {\n key: \"pathA\",\n value: function pathA(pathParser) {\n var _PathElement$pathA = PathElement.pathA(pathParser),\n rX = _PathElement$pathA.rX,\n rY = _PathElement$pathA.rY,\n sweepFlag = _PathElement$pathA.sweepFlag,\n xAxisRotation = _PathElement$pathA.xAxisRotation,\n centp = _PathElement$pathA.centp,\n a1 = _PathElement$pathA.a1,\n ad = _PathElement$pathA.ad;\n\n if (sweepFlag === 0 && ad > 0) {\n ad = ad - 2 * Math.PI;\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad = ad + 2 * Math.PI;\n }\n\n return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];\n }\n }, {\n key: \"calcLength\",\n value: function calcLength(x, y, commandType, points) {\n var len = 0;\n var p1 = null;\n var p2 = null;\n var t = 0;\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n\n return len;\n\n case PathParser.ARC:\n // Approximates by breaking curve into line segments\n len = 0.0;\n var start = points[4]; // 4 = theta\n\n var dTheta = points[5]; // 5 = dTheta\n\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0; // 1 degree resolution\n\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n } // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n\n\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n\n if (dTheta < 0) {\n // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n\n return 0;\n }\n }, {\n key: \"getPointOnLine\",\n value: function getPointOnLine(dist, P1x, P1y, P2x, P2y) {\n var fromX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : P1x;\n var fromY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : P1y;\n var m = (P2y - P1y) / (P2x - P1x + PSEUDO_ZERO);\n var run = Math.sqrt(dist * dist / (1 + m * m));\n\n if (P2x < P1x) {\n run *= -1;\n }\n\n var rise = m * run;\n var pt = null;\n\n if (P2x === P1x) {\n // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else if ((fromY - P1y) / (fromX - P1x + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n };\n } else {\n var ix = 0;\n var iy = 0;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n\n if (len < PSEUDO_ZERO) {\n return null;\n }\n\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n\n if (P2x < P1x) {\n run *= -1;\n }\n\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n\n return pt;\n }\n }, {\n key: \"getPointOnPath\",\n value: function getPointOnPath(distance) {\n var fullLen = this.getPathLength();\n var cumulativePathLength = 0;\n var p = null;\n\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n\n var dataArray = this.dataArray;\n\n var _iterator = _createForOfIteratorHelper$1(dataArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var command = _step.value;\n\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n\n var delta = distance - cumulativePathLength;\n var currentT = 0;\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n\n case PathParser.ARC:\n var start = command.points[4]; // 4 = theta\n\n var dTheta = command.points[5]; // 5 = dTheta\n\n var end = command.points[4] + dTheta;\n currentT = start + delta / command.pathLength * dTheta;\n\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n\n if (currentT > 1) {\n currentT = 1;\n }\n\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n\n default:\n }\n\n if (p) {\n return p;\n }\n\n break;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n }\n }, {\n key: \"getLineLength\",\n value: function getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n }, {\n key: \"getPathLength\",\n value: function getPathLength() {\n if (this.pathLength === -1) {\n var _context2;\n\n this.pathLength = _reduceInstanceProperty(_context2 = this.dataArray).call(_context2, function (length, command) {\n return command.pathLength > 0 ? length + command.pathLength : length;\n }, 0);\n }\n\n return this.pathLength;\n }\n }, {\n key: \"getPointOnCubicBezier\",\n value: function getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnQuadraticBezier\",\n value: function getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"getPointOnEllipticalArc\",\n value: function getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi);\n var sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n } // TODO need some optimisations. possibly build cache only for curved segments?\n\n }, {\n key: \"buildEquidistantCache\",\n value: function buildEquidistantCache(inputStep, inputPrecision) {\n var fullLen = this.getPathLength();\n var precision = inputPrecision || 0.25; // accuracy vs performance\n\n var step = inputStep || fullLen / 100;\n\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step: step,\n precision: precision,\n points: []\n }; // Calculate points\n\n var s = 0;\n\n for (var l = 0; l <= fullLen; l += precision) {\n var p0 = this.getPointOnPath(l);\n var p1 = this.getPointOnPath(l + precision);\n\n if (!p0 || !p1) {\n continue;\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n });\n s -= step;\n }\n }\n }\n }\n }, {\n key: \"getEquidistantPointOnPath\",\n value: function getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n\n var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n }]);\n\n return TextPathElement;\n}(TextElement);\n\nfunction _createSuper$z(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$z(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$z() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar ImageElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(ImageElement, _RenderedElement);\n\n var _super = _createSuper$z(ImageElement);\n\n function ImageElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, ImageElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'image';\n _this.loaded = false;\n\n var href = _this.getHrefAttribute().getString();\n\n if (!href) {\n return _possibleConstructorReturn(_this);\n }\n\n var isSvg = /\\.svg$/.test(href);\n document.images.push(_assertThisInitialized(_this));\n\n if (!isSvg) {\n _this.loadImage(href);\n } else {\n _this.loadSvg(href);\n }\n\n _this.isSvg = isSvg;\n return _this;\n }\n\n _createClass(ImageElement, [{\n key: \"loadImage\",\n value: function () {\n var _loadImage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(href) {\n var image;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return this.document.createImage(href);\n\n case 3:\n image = _context.sent;\n this.image = image;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), _context.t0);\n\n case 10:\n this.loaded = true;\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 7]]);\n }));\n\n function loadImage(_x) {\n return _loadImage.apply(this, arguments);\n }\n\n return loadImage;\n }()\n }, {\n key: \"loadSvg\",\n value: function () {\n var _loadSvg = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(href) {\n var response, svg;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return this.document.fetch(href);\n\n case 3:\n response = _context2.sent;\n _context2.next = 6;\n return response.text();\n\n case 6:\n svg = _context2.sent;\n this.image = svg;\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), _context2.t0);\n\n case 13:\n this.loaded = true;\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 10]]);\n }));\n\n function loadSvg(_x2) {\n return _loadSvg.apply(this, arguments);\n }\n\n return loadSvg;\n }()\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n image = this.image,\n loaded = this.loaded;\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!loaded || !image || !width || !height) {\n return;\n }\n\n ctx.save();\n\n if (this.isSvg) {\n document.canvg.forkString(ctx, this.image, {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: x,\n offsetY: y,\n scaleWidth: width,\n scaleHeight: height\n }).render();\n } else {\n var _image = this.image;\n ctx.translate(x, y);\n document.setViewBox({\n ctx: ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: width,\n desiredWidth: _image.width,\n height: height,\n desiredHeight: _image.height\n });\n\n if (this.loaded) {\n if (typeof _image.complete === 'undefined' || _image.complete) {\n ctx.drawImage(_image, 0, 0);\n }\n }\n }\n\n ctx.restore();\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox() {\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n return new BoundingBox(x, y, x + width, y + height);\n }\n }]);\n\n return ImageElement;\n}(RenderedElement);\n\nfunction _createSuper$A(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$A(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$A() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar SymbolElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(SymbolElement, _RenderedElement);\n\n var _super = _createSuper$A(SymbolElement);\n\n function SymbolElement() {\n var _this;\n\n _classCallCheck(this, SymbolElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'symbol';\n return _this;\n }\n\n _createClass(SymbolElement, [{\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return SymbolElement;\n}(RenderedElement);\n\nvar SVGFontLoader = /*#__PURE__*/function () {\n function SVGFontLoader(document) {\n _classCallCheck(this, SVGFontLoader);\n\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n\n _createClass(SVGFontLoader, [{\n key: \"load\",\n value: function () {\n var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(fontFamily, url) {\n var _context, document, svgDocument, fonts;\n\n return _regeneratorRuntime.wrap(function _callee$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n document = this.document;\n _context2.next = 4;\n return document.canvg.parser.load(url);\n\n case 4:\n svgDocument = _context2.sent;\n fonts = svgDocument.getElementsByTagName('font');\n\n _forEachInstanceProperty(_context = _Array$from(fonts)).call(_context, function (fontNode) {\n var font = document.createElement(fontNode);\n document.definitions[fontFamily] = font;\n });\n\n _context2.next = 12;\n break;\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](0);\n // tslint:disable-next-line: no-console\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), _context2.t0);\n\n case 12:\n this.loaded = true;\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee, this, [[0, 9]]);\n }));\n\n function load(_x, _x2) {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return SVGFontLoader;\n}();\n\nfunction _createSuper$B(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$B(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$B() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar StyleElement = /*#__PURE__*/function (_Element) {\n _inherits(StyleElement, _Element);\n\n var _super = _createSuper$B(StyleElement);\n\n function StyleElement(document, node, captureTextNodes) {\n var _context;\n\n var _this;\n\n _classCallCheck(this, StyleElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'style';\n var css = compressSpaces(_mapInstanceProperty(_context = _Array$from(node.childNodes)).call(_context, function (_) {\n return _.data;\n }).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*\\/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n var cssDefs = css.split('}');\n\n _forEachInstanceProperty(cssDefs).call(cssDefs, function (_) {\n var def = _trimInstanceProperty(_).call(_);\n\n if (!def) {\n return;\n }\n\n var cssParts = def.split('{');\n var cssClasses = cssParts[0].split(',');\n var cssProps = cssParts[1].split(';');\n\n _forEachInstanceProperty(cssClasses).call(cssClasses, function (_) {\n var cssClass = _trimInstanceProperty(_).call(_);\n\n if (!cssClass) {\n return;\n }\n\n var props = document.styles[cssClass] || {};\n\n _forEachInstanceProperty(cssProps).call(cssProps, function (cssProp) {\n var _context2, _context3;\n\n var prop = _indexOfInstanceProperty(cssProp).call(cssProp, ':');\n\n var name = _trimInstanceProperty(_context2 = cssProp.substr(0, prop)).call(_context2);\n\n var value = _trimInstanceProperty(_context3 = cssProp.substr(prop + 1, cssProp.length - prop)).call(_context3);\n\n if (name && value) {\n props[name] = new Property(document, name, value);\n }\n });\n\n document.styles[cssClass] = props;\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);\n\n if (cssClass === '@font-face') {\n // && !nodeEnv\n var fontFamily = props['font-family'].getString().replace(/\"|'/g, '');\n var srcs = props.src.getString().split(',');\n\n _forEachInstanceProperty(srcs).call(srcs, function (src) {\n if (_indexOfInstanceProperty(src).call(src, 'format(\"svg\")') > 0) {\n var url = parseExternalUrl(src);\n\n if (url) {\n new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n\n return _this;\n }\n\n return StyleElement;\n}(Element);\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nfunction _createSuper$C(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$C(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$C() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar UseElement = /*#__PURE__*/function (_RenderedElement) {\n _inherits(UseElement, _RenderedElement);\n\n var _super = _createSuper$C(UseElement);\n\n function UseElement() {\n var _this;\n\n _classCallCheck(this, UseElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'use';\n return _this;\n }\n\n _createClass(UseElement, [{\n key: \"setContext\",\n value: function setContext(ctx) {\n _get(_getPrototypeOf(UseElement.prototype), \"setContext\", this).call(this, ctx);\n\n var xAttr = this.getAttribute('x');\n var yAttr = this.getAttribute('y');\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n }, {\n key: \"path\",\n value: function path(ctx) {\n var element = this.element;\n\n if (element) {\n element.path(ctx);\n }\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren(ctx) {\n var document = this.document,\n element = this.element;\n\n if (element) {\n var tempSvg = element;\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document, null);\n tempSvg.attributes.viewBox = new Property(document, 'viewBox', element.getAttribute('viewBox').getString());\n tempSvg.attributes.preserveAspectRatio = new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString());\n tempSvg.attributes.overflow = new Property(document, 'overflow', element.getAttribute('overflow').getString());\n tempSvg.children = element.children; // element is still the parent of the children\n\n element.styles.opacity = new Property(document, 'opacity', this.calculateOpacity());\n }\n\n if (tempSvg.type === 'svg') {\n var widthStyle = this.getStyle('width', false, true);\n var heightStyle = this.getStyle('height', false, true); // if symbol or svg, inherit width/height from me\n\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(document, 'width', widthStyle.getString());\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(document, 'height', heightStyle.getString());\n }\n }\n\n var oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n }, {\n key: \"getBoundingBox\",\n value: function getBoundingBox(ctx) {\n var element = this.element;\n\n if (element) {\n return element.getBoundingBox(ctx);\n }\n\n return null;\n }\n }, {\n key: \"elementTransform\",\n value: function elementTransform() {\n var document = this.document,\n element = this.element;\n return Transform.fromElement(document, element);\n }\n }, {\n key: \"element\",\n get: function get() {\n if (!this._element) {\n this._element = this.getHrefAttribute().getDefinition();\n }\n\n return this._element;\n }\n }]);\n\n return UseElement;\n}(RenderedElement);\n\nfunction _createSuper$D(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$D(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$D() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction imGet(img, x, y, width, _, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\n\nfunction imSet(img, x, y, width, _, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\n\nfunction m(matrix, i, v) {\n var mi = matrix[i];\n return mi * v;\n}\n\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\n\nvar FeColorMatrixElement = /*#__PURE__*/function (_Element) {\n _inherits(FeColorMatrixElement, _Element);\n\n var _super = _createSuper$D(FeColorMatrixElement);\n\n function FeColorMatrixElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeColorMatrixElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feColorMatrix';\n var matrix = toNumbers(_this.getAttribute('values').getString());\n\n switch (_this.getAttribute('type').getString('matrix')) {\n // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate':\n {\n var s = matrix[0];\n matrix = [0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0, 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n case 'hueRotate':\n {\n var a = matrix[0] * Math.PI / 180.0;\n matrix = [c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0, c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0, c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n case 'luminanceToAlpha':\n matrix = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];\n break;\n }\n\n _this.matrix = matrix;\n _this.includeOpacity = _this.getAttribute('includeOpacity').hasValue();\n return _this;\n }\n\n _createClass(FeColorMatrixElement, [{\n key: \"apply\",\n value: function apply(ctx, _, __, width, height) {\n // assuming x==0 && y==0 for now\n var includeOpacity = this.includeOpacity,\n matrix = this.matrix;\n var srcData = ctx.getImageData(0, 0, width, height);\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var r = imGet(srcData.data, x, y, width, height, 0);\n var g = imGet(srcData.data, x, y, width, height, 1);\n var b = imGet(srcData.data, x, y, width, height, 2);\n var a = imGet(srcData.data, x, y, width, height, 3);\n var nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1);\n var ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1);\n var nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1);\n var na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1);\n\n if (includeOpacity) {\n nr = ng = nb = 0;\n na *= a / 255;\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr);\n imSet(srcData.data, x, y, width, height, 1, ng);\n imSet(srcData.data, x, y, width, height, 2, nb);\n imSet(srcData.data, x, y, width, height, 3, na);\n }\n }\n\n ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n }]);\n\n return FeColorMatrixElement;\n}(Element);\n\nfunction _createSuper$E(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$E(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$E() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar MaskElement = /*#__PURE__*/function (_Element) {\n _inherits(MaskElement, _Element);\n\n var _super = _createSuper$E(MaskElement);\n\n function MaskElement() {\n var _this;\n\n _classCallCheck(this, MaskElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'mask';\n return _this;\n }\n\n _createClass(MaskElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n var document = this.document; // render as temp svg\n\n var x = this.getAttribute('x').getPixels('x');\n var y = this.getAttribute('y').getPixels('y');\n var width = this.getStyle('width').getPixels('x');\n var height = this.getStyle('height').getPixels('y');\n\n if (!width && !height) {\n var _context;\n\n var boundingBox = new BoundingBox();\n\n _forEachInstanceProperty(_context = this.children).call(_context, function (child) {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n\n x = Math.floor(boundingBox.x1);\n y = Math.floor(boundingBox.y1);\n width = Math.floor(boundingBox.width);\n height = Math.floor(boundingBox.height);\n }\n\n var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n var maskCanvas = document.createCanvas(x + width, y + height);\n var maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx); // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n\n new FeColorMatrixElement(document, {\n nodeType: 1,\n childNodes: [],\n attributes: [{\n nodeName: 'type',\n value: 'luminanceToAlpha'\n }, {\n nodeName: 'includeOpacity',\n value: 'true'\n }]\n }).apply(maskCtx, 0, 0, x + width, y + height);\n var tmpCanvas = document.createCanvas(x + width, y + height);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height); // reassign mask\n\n this.restoreStyles(element, ignoredStyles);\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return MaskElement;\n}(Element);\nMaskElement.ignoreStyles = ['mask', 'transform', 'clip-path'];\n\nfunction _createSuper$F(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$F(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$F() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar noop = function noop() {};\n\nvar ClipPathElement = /*#__PURE__*/function (_Element) {\n _inherits(ClipPathElement, _Element);\n\n var _super = _createSuper$F(ClipPathElement);\n\n function ClipPathElement() {\n var _this;\n\n _classCallCheck(this, ClipPathElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'clipPath';\n return _this;\n }\n\n _createClass(ClipPathElement, [{\n key: \"apply\",\n value: function apply(ctx) {\n var _context;\n\n var document = this.document;\n\n var contextProto = _Reflect$getPrototypeOf(ctx);\n\n var beginPath = ctx.beginPath,\n closePath = ctx.closePath;\n\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n\n _Reflect$apply(beginPath, ctx, []);\n\n _forEachInstanceProperty(_context = this.children).call(_context, function (child) {\n if (typeof child.path === 'undefined') {\n return;\n }\n\n var transform = typeof child.elementTransform !== 'undefined' ? child.elementTransform() : null; // handle \n\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n\n if (transform) {\n transform.apply(ctx);\n }\n\n child.path(ctx);\n\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n\n if (transform) {\n transform.unapply(ctx);\n }\n });\n\n _Reflect$apply(closePath, ctx, []);\n\n ctx.clip();\n\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return ClipPathElement;\n}(Element);\n\nfunction _createSuper$G(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$G(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$G() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FilterElement = /*#__PURE__*/function (_Element) {\n _inherits(FilterElement, _Element);\n\n var _super = _createSuper$G(FilterElement);\n\n function FilterElement() {\n var _this;\n\n _classCallCheck(this, FilterElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'filter';\n return _this;\n }\n\n _createClass(FilterElement, [{\n key: \"apply\",\n value: function apply(ctx, element) {\n // render as temp svg\n var document = this.document,\n children = this.children;\n var boundingBox = element.getBoundingBox(ctx);\n\n if (!boundingBox) {\n return;\n }\n\n var px = 0;\n var py = 0;\n\n _forEachInstanceProperty(children).call(children, function (child) {\n var efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\n });\n\n var width = Math.floor(boundingBox.width);\n var height = Math.floor(boundingBox.height);\n var tmpCanvasWidth = width + 2 * px;\n var tmpCanvasHeight = height + 2 * py;\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\n }\n\n var x = Math.floor(boundingBox.x);\n var y = Math.floor(boundingBox.y);\n var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);\n var tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight);\n var tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx); // apply filters\n\n _forEachInstanceProperty(children).call(children, function (child) {\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n }); // render on me\n\n\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n }, {\n key: \"render\",\n value: function render(_) {// NO RENDER\n }\n }]);\n\n return FilterElement;\n}(Element);\nFilterElement.ignoreStyles = ['filter', 'transform', 'clip-path'];\n\nfunction _createSuper$H(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$H(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$H() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeDropShadowElement = /*#__PURE__*/function (_Element) {\n _inherits(FeDropShadowElement, _Element);\n\n var _super = _createSuper$H(FeDropShadowElement);\n\n function FeDropShadowElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeDropShadowElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feDropShadow';\n\n _this.addStylesFromStyleDefinition();\n\n return _this;\n }\n\n _createClass(FeDropShadowElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeDropShadowElement;\n}(Element);\n\nfunction _createSuper$I(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$I(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$I() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeMorphologyElement = /*#__PURE__*/function (_Element) {\n _inherits(FeMorphologyElement, _Element);\n\n var _super = _createSuper$I(FeMorphologyElement);\n\n function FeMorphologyElement() {\n var _this;\n\n _classCallCheck(this, FeMorphologyElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'feMorphology';\n return _this;\n }\n\n _createClass(FeMorphologyElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeMorphologyElement;\n}(Element);\n\nfunction _createSuper$J(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$J(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$J() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeCompositeElement = /*#__PURE__*/function (_Element) {\n _inherits(FeCompositeElement, _Element);\n\n var _super = _createSuper$J(FeCompositeElement);\n\n function FeCompositeElement() {\n var _this;\n\n _classCallCheck(this, FeCompositeElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'feComposite';\n return _this;\n }\n\n _createClass(FeCompositeElement, [{\n key: \"apply\",\n value: function apply(_, __, ___, ____, _____) {// TODO: implement\n }\n }]);\n\n return FeCompositeElement;\n}(Element);\n\nfunction _createSuper$K(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$K(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$K() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar FeGaussianBlurElement = /*#__PURE__*/function (_Element) {\n _inherits(FeGaussianBlurElement, _Element);\n\n var _super = _createSuper$K(FeGaussianBlurElement);\n\n function FeGaussianBlurElement(document, node, captureTextNodes) {\n var _this;\n\n _classCallCheck(this, FeGaussianBlurElement);\n\n _this = _super.call(this, document, node, captureTextNodes);\n _this.type = 'feGaussianBlur';\n _this.blurRadius = Math.floor(_this.getAttribute('stdDeviation').getNumber());\n _this.extraFilterDistance = _this.blurRadius;\n return _this;\n }\n\n _createClass(FeGaussianBlurElement, [{\n key: \"apply\",\n value: function apply(ctx, x, y, width, height) {\n var document = this.document,\n blurRadius = this.blurRadius;\n var body = document.window ? document.window.document.body : null;\n var canvas = ctx.canvas; // StackBlur requires canvas be on document\n\n canvas.id = document.getUniqueId();\n\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n\n if (body) {\n body.removeChild(canvas);\n }\n }\n }]);\n\n return FeGaussianBlurElement;\n}(Element);\n\nfunction _createSuper$L(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$L(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$L() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar TitleElement = /*#__PURE__*/function (_Element) {\n _inherits(TitleElement, _Element);\n\n var _super = _createSuper$L(TitleElement);\n\n function TitleElement() {\n var _this;\n\n _classCallCheck(this, TitleElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'title';\n return _this;\n }\n\n return TitleElement;\n}(Element);\n\nfunction _createSuper$M(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$M(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$M() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nvar DescElement = /*#__PURE__*/function (_Element) {\n _inherits(DescElement, _Element);\n\n var _super = _createSuper$M(DescElement);\n\n function DescElement() {\n var _this;\n\n _classCallCheck(this, DescElement);\n\n _this = _super.apply(this, arguments);\n _this.type = 'desc';\n return _this;\n }\n\n return DescElement;\n}(Element);\n\nvar elementTypes = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n};\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context5; _forEachInstanceProperty(_context5 = ownKeys$1(Object(source), true)).call(_context5, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context6; _forEachInstanceProperty(_context6 = ownKeys$1(Object(source))).call(_context6, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction createCanvas(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nfunction createImage(_x) {\n return _createImage.apply(this, arguments);\n}\n\nfunction _createImage() {\n _createImage = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(src) {\n var anonymousCrossOrigin,\n image,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n anonymousCrossOrigin = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;\n image = document.createElement('img');\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n\n return _context7.abrupt(\"return\", new _Promise(function (resolve, reject) {\n image.onload = function () {\n resolve(image);\n };\n\n image.onerror = function () {\n reject();\n };\n\n image.src = src;\n }));\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee);\n }));\n return _createImage.apply(this, arguments);\n}\n\nvar Document = /*#__PURE__*/function () {\n function Document(canvg) {\n var _context, _context2;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$rootEmSize = _ref.rootEmSize,\n rootEmSize = _ref$rootEmSize === void 0 ? 12 : _ref$rootEmSize,\n _ref$emSize = _ref.emSize,\n emSize = _ref$emSize === void 0 ? 12 : _ref$emSize,\n _ref$createCanvas = _ref.createCanvas,\n createCanvas = _ref$createCanvas === void 0 ? Document.createCanvas : _ref$createCanvas,\n _ref$createImage = _ref.createImage,\n createImage = _ref$createImage === void 0 ? Document.createImage : _ref$createImage,\n anonymousCrossOrigin = _ref.anonymousCrossOrigin;\n\n _classCallCheck(this, Document);\n\n this.canvg = canvg;\n this.definitions = {};\n this.styles = {};\n this.stylesSpecificity = {};\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas;\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin);\n this.screen.wait(_bindInstanceProperty(_context = this.isImagesLoaded).call(_context, this));\n this.screen.wait(_bindInstanceProperty(_context2 = this.isFontsLoaded).call(_context2, this));\n }\n\n _createClass(Document, [{\n key: \"bindCreateImage\",\n value: function bindCreateImage(createImage, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return function (source, forceAnonymousCrossOrigin) {\n return createImage(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin);\n };\n }\n\n return createImage;\n }\n }, {\n key: \"popEmSize\",\n value: function popEmSize() {\n var emSizeStack = this.emSizeStack;\n emSizeStack.pop();\n }\n }, {\n key: \"getUniqueId\",\n value: function getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n }, {\n key: \"isImagesLoaded\",\n value: function isImagesLoaded() {\n var _context3;\n\n return _everyInstanceProperty(_context3 = this.images).call(_context3, function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"isFontsLoaded\",\n value: function isFontsLoaded() {\n var _context4;\n\n return _everyInstanceProperty(_context4 = this.fonts).call(_context4, function (_) {\n return _.loaded;\n });\n }\n }, {\n key: \"createDocumentElement\",\n value: function createDocumentElement(document) {\n var documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n }, {\n key: \"createElement\",\n value: function createElement(node) {\n var elementType = node.nodeName.replace(/^[^:]+:/, '');\n var ElementType = Document.elementTypes[elementType];\n\n if (typeof ElementType !== 'undefined') {\n return new ElementType(this, node);\n }\n\n return new UnknownElement(this, node);\n }\n }, {\n key: \"createTextNode\",\n value: function createTextNode(node) {\n return new TextNode(this, node);\n }\n }, {\n key: \"setViewBox\",\n value: function setViewBox(config) {\n this.screen.setViewBox(_objectSpread$1({\n document: this\n }, config));\n }\n }, {\n key: \"window\",\n get: function get() {\n return this.screen.window;\n }\n }, {\n key: \"fetch\",\n get: function get() {\n return this.screen.fetch;\n }\n }, {\n key: \"ctx\",\n get: function get() {\n return this.screen.ctx;\n }\n }, {\n key: \"emSize\",\n get: function get() {\n var emSizeStack = this.emSizeStack;\n return emSizeStack[emSizeStack.length - 1];\n },\n set: function set(value) {\n var emSizeStack = this.emSizeStack;\n emSizeStack.push(value);\n }\n }]);\n\n return Document;\n}();\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elementTypes;\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context3; _forEachInstanceProperty(_context3 = ownKeys$2(Object(source), true)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context4; _forEachInstanceProperty(_context4 = ownKeys$2(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }\n/**\r\n * SVG renderer on canvas.\r\n */\n\nvar Canvg = /*#__PURE__*/function () {\n /**\r\n * Main constructor.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG Document.\r\n * @param options - Rendering options.\r\n */\n function Canvg(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, Canvg);\n\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n var document = new Document(this, options);\n var documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n /**\r\n * Create Canvg instance from SVG source string or URL.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n */\n\n\n _createClass(Canvg, [{\n key: \"fork\",\n\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string or URL.\r\n * @param options - Rendering options.\r\n */\n value: function fork(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.from(ctx, svg, _objectSpread$2(_objectSpread$2({}, this.options), options));\n }\n /**\r\n * Create new Canvg instance with inherited options.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n */\n\n }, {\n key: \"forkString\",\n value: function forkString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, _objectSpread$2(_objectSpread$2({}, this.options), options));\n }\n /**\r\n * Document is ready promise.\r\n */\n\n }, {\n key: \"ready\",\n value: function ready() {\n return this.screen.ready();\n }\n /**\r\n * Document is ready value.\r\n */\n\n }, {\n key: \"isReady\",\n value: function isReady() {\n return this.screen.isReady();\n }\n /**\r\n * Render only first frame, ignoring animations and mouse.\r\n * @param options - Rendering options.\r\n */\n\n }, {\n key: \"render\",\n value: function () {\n var _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var options,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n this.start(_objectSpread$2({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true\n }, options));\n _context.next = 4;\n return this.ready();\n\n case 4:\n this.stop();\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n /**\r\n * Start rendering.\r\n * @param options - Render options.\r\n */\n\n }, {\n key: \"start\",\n value: function start() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var documentElement = this.documentElement,\n screen = this.screen,\n baseOptions = this.options;\n screen.start(documentElement, _objectSpread$2(_objectSpread$2({\n enableRedraw: true\n }, baseOptions), options));\n }\n /**\r\n * Stop rendering.\r\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this.screen.stop();\n }\n /**\r\n * Resize SVG to fit in given size.\r\n * @param width\r\n * @param height\r\n * @param preserveAspectRatio\r\n */\n\n }, {\n key: \"resize\",\n value: function resize(width) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : width;\n var preserveAspectRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n }], [{\n key: \"from\",\n value: function () {\n var _from = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(ctx, svg) {\n var options,\n parser,\n svgDocument,\n _args2 = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {};\n parser = new Parser(options);\n _context2.next = 4;\n return parser.parse(svg);\n\n case 4:\n svgDocument = _context2.sent;\n return _context2.abrupt(\"return\", new Canvg(ctx, svgDocument, options));\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function from(_x, _x2) {\n return _from.apply(this, arguments);\n }\n\n return from;\n }()\n /**\r\n * Create Canvg instance from SVG source string.\r\n * @param ctx - Rendering context.\r\n * @param svg - SVG source string.\r\n * @param options - Rendering options.\r\n */\n\n }, {\n key: \"fromString\",\n value: function fromString(ctx, svg) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var parser = new Parser(options);\n var svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\n }\n }]);\n\n return Canvg;\n}();\n\n/**\r\n * Options preset for `OffscreenCanvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n */\nfunction offscreen() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n DOMParserFallback = _ref.DOMParser;\n\n var preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n createCanvas: function createCanvas(width, height) {\n return new OffscreenCanvas(width, height);\n },\n createImage: function createImage(url) {\n return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var response, blob, img;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return fetch(url);\n\n case 2:\n response = _context.sent;\n _context.next = 5;\n return response.blob();\n\n case 5:\n blob = _context.sent;\n _context.next = 8;\n return createImageBitmap(blob);\n\n case 8:\n img = _context.sent;\n return _context.abrupt(\"return\", img);\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n };\n\n if (typeof DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n _Reflect$deleteProperty(preset, 'DOMParser');\n }\n\n return preset;\n}\n\n/**\r\n * Options preset for `node-canvas`.\r\n * @param config - Preset requirements.\r\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\r\n * @param config.canvas - `node-canvas` exports.\r\n * @param config.fetch - WHATWG-compatible `fetch` function.\r\n */\nfunction node(_ref) {\n var DOMParser = _ref.DOMParser,\n canvas = _ref.canvas,\n fetch = _ref.fetch;\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParser,\n fetch: fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n };\n}\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\toffscreen: offscreen,\n\tnode: node\n});\n\nexport default Canvg;\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n"],"sourceRoot":""}