diff --git a/Text/Blaze/Svg.hs b/Text/Blaze/Svg.hs
deleted file mode 100644
--- a/Text/Blaze/Svg.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Text.Blaze.Svg
-    (
-      Svg
-    , Path
-    , mkPath
-    , m, mr
-    , z
-    , l, lr, h, hr, v, vr
-    , c, cr, s, sr
-    , q, qr, t, tr
-    , translate, rotate, scale
-    , skewX, skewY
-    , matrix
-    ) where
-
-import Text.Blaze.Svg.Internal
diff --git a/Text/Blaze/Svg/Internal.hs b/Text/Blaze/Svg/Internal.hs
deleted file mode 100644
--- a/Text/Blaze/Svg/Internal.hs
+++ /dev/null
@@ -1,248 +0,0 @@
-module Text.Blaze.Svg.Internal where
-
-import Control.Monad.State
-import Data.Monoid (mappend, mempty)
-
-import Text.Blaze
-
--- | Type to represent an SVG document fragment
-type Svg = Markup
-
--- | Type to accumulate an SVG path
-type Path = State AttributeValue ()
-
--- | Construct SVG path values using path instruction combinators.
--- See simple example below of how you can use @mkPath@ to
--- specify a path using the path instruction combinators
--- that are included as part of the same module
---
--- More information available at: <http://www.w3.org/TR/SVG/paths.html>
---
--- > import Text.Blaze.Svg11 ((!), mkPath, l, m)
--- > import qualified Text.Blaze.Svg11 as S
--- > import qualified Text.Blaze.Svg11.Attributes as A
--- >
--- > svgDoc :: S.Svg
--- > svgDoc = S.docTypeSvg ! A.version "1.1" ! A.width "150" ! A.height "100" $ do
--- >  path ! d makeSimplePath
--- >
--- > makeSimplePath :: S.AttributeValue
--- > makeSimplePath =  mkPath do
--- >   l 2 3
--- >   m 4 5
-mkPath :: Path -> AttributeValue
-mkPath path = snd $ runState path mempty
-
-appendToPath :: [String] -> Path
-appendToPath  = modify . flip mappend . toValue . join
-
--- | Moveto
-m :: Show a => a -> a -> Path
-m x y = appendToPath
-  [ "M "
-  , show x, ",", show y
-  , " "
-  ]
-
--- | Moveto (relative)
-mr :: Show a => a -> a -> Path
-mr dx dy = appendToPath
-  [ "m "
-  , show dx, ",", show dy
-  , " "
-  ]
-
--- | ClosePath
-z :: Path
-z = modify (`mappend` toValue "Z")
-
--- | Lineto
-l :: Show a => a -> a -> Path
-l x y = appendToPath
-  [ "L "
-  , show x, ",", show y
-  , " "
-  ]
-
--- | Lineto (relative)
-lr :: Show a => a -> a -> Path
-lr dx dy = appendToPath
-  [ "l "
-  , show dx, ",", show dy
-  , " "
-  ]
-
--- | Horizontal lineto
-h :: Show a => a -> Path
-h x = appendToPath
-  [ "H "
-  , show x
-  , " "
-  ]
-
--- | Horizontal lineto (relative)
-hr :: Show a => a -> Path
-hr dx = appendToPath
-  [ "h "
-  , show dx
-  , " "
-  ]
-
-
--- | Vertical lineto
-v :: Show a => a -> Path
-v y = appendToPath
-  [ "V "
-  , show y
-  , " "
-  ]
-
--- | Vertical lineto (relative)
-vr :: Show a => a -> Path
-vr dy = appendToPath
-  [ "v "
-  , show dy
-  , " "
-  ]
-
--- | Cubic Bezier curve
-c :: Show a => a -> a -> a -> a -> a -> a -> Path
-c c1x c1y c2x c2y x y = appendToPath
-  [ "C "
-  , show c1x, ",", show c1y
-  , " "
-  , show c2x, ",", show c2y
-  , " "
-  , show x, " ", show y
-  ]
-
--- | Cubic Bezier curve (relative)
-cr :: Show a => a -> a -> a -> a -> a -> a -> Path
-cr dc1x dc1y dc2x dc2y dx dy = appendToPath
-  [ "c "
-  , show dc1x, ",", show dc1y
-  , " "
-  , show dc2x, ",", show dc2y
-  , " "
-  , show dx, " ", show dy
-  ]
-
--- | Smooth Cubic Bezier curve
-s :: Show a => a -> a -> a -> a -> Path
-s c2x c2y x y = appendToPath
-  [ "S "
-  , show c2x, ",", show c2y
-  , " "
-  , show x, ",", show y
-  , " "
-  ]
-
--- | Smooth Cubic Bezier curve (relative)
-sr :: Show a => a -> a -> a -> a -> Path
-sr dc2x dc2y dx dy = appendToPath
-  [ "s "
-  , show dc2x, ",", show dc2y
-  , " "
-  , show dx, ",", show dy
-  , " "
-  ]
-
--- | Quadratic Bezier curve
-q :: Show a => a -> a -> a -> a -> Path
-q cx cy x y = appendToPath
-  [ "Q "
-  , show cx, ",", show cy
-  , " "
-  , show x, ",", show y
-  , " "
-  ]
-
--- | Quadratic Bezier curve (relative)
-qr :: Show a => a -> a -> a -> a  -> Path
-qr dcx dcy dx dy = appendToPath
-  [ "q "
-  , show dcx, ",", show dcy
-  , " "
-  , show dx, ",", show dy
-  , " "
-  ]
-
--- | Smooth Quadratic Bezier curve
-t  :: Show a => a -> a -> Path
-t x y = appendToPath
-  [ "T "
-  , " "
-  , show x, ",", show y
-  , " "
-  ]
-
--- | Smooth Quadratic Bezier curve (relative)
-tr :: Show a => a -> a -> Path
-tr x y = appendToPath
-  [ "t "
-  , " "
-  , show x, ",", show y
-  , " "
-  ]
-
--- | Specifies a translation by @x@ and @y@
-translate :: Show a => a -> a -> AttributeValue
-translate x y = toValue . join $
-  [ "translate("
-  , show x, " ", show y
-  , ")"
-  ]
-
--- | Specifies a scale operation by @x@ and @y@
-scale :: Show a => a -> a -> AttributeValue
-scale x y = toValue . join $
-  [ "scale("
-  , show x, " ", show y
-  , ")"
-  ]
-
--- | Specifies a rotation by @rotate-angle@ degrees
-rotate :: Show a => a -> AttributeValue
-rotate rotateAngle = toValue . join $
-  [ "rotate("
-  , show rotateAngle
-  , ")"
-  ]
-
--- | Specifies a rotation by @rotate-angle@ degrees about the given time @rx,ry@
-rotateAround :: Show a => a -> a -> a -> AttributeValue
-rotateAround rotateAngle rx ry = toValue . join $
-  [ "rotate("
-  , show rotateAngle, ","
-  , show rx, ",", show ry
-  , ")"
-  ]
-
-skewX, skewY :: Show a => a -> AttributeValue
-
--- | Skew tansformation along x-axis
-skewX skewAngle = toValue . join $
-  [ "skewX("
-  , show skewAngle
-  , ")"
-  ]
-
--- | Skew tansformation along y-axis
-skewY skewAngle = toValue . join $
-  [ "skewY("
-  , show skewAngle
-  , ")"
-  ]
-
--- | Specifies a transform in the form of a transformation matrix
-matrix :: Show a => a -> a -> a -> a -> a -> a -> AttributeValue
-matrix a b c_ d e f =  toValue . join $
-  [  "matrix("
-  ,  show a, ","
-  ,  show b, ","
-  ,  show c_, ","
-  ,  show d, ","
-  ,  show e, ","
-  ,  show f
-  , ")"
-  ]
diff --git a/Text/Blaze/Svg/Renderer/Pretty.hs b/Text/Blaze/Svg/Renderer/Pretty.hs
deleted file mode 100644
--- a/Text/Blaze/Svg/Renderer/Pretty.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
--- | A renderer that produces pretty SVG, mostly meant for debugging purposes.
---
-module Text.Blaze.Svg.Renderer.Pretty
-    ( renderSvg
-    ) where
-
-import Text.Blaze.Renderer.Pretty (renderMarkup)
-
-renderSvg = renderMarkup
diff --git a/Text/Blaze/Svg/Renderer/String.hs b/Text/Blaze/Svg/Renderer/String.hs
deleted file mode 100644
--- a/Text/Blaze/Svg/Renderer/String.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
--- | A renderer that produces a native Haskell 'String', mostly meant for
--- debugging purposes.
---
-module Text.Blaze.Svg.Renderer.String
-    ( renderSvg
-    ) where
-
-import Text.Blaze.Renderer.String (renderMarkup)
-
-renderSvg = renderMarkup
diff --git a/Text/Blaze/Svg/Renderer/Text.hs b/Text/Blaze/Svg/Renderer/Text.hs
deleted file mode 100644
--- a/Text/Blaze/Svg/Renderer/Text.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
--- | A renderer that produces a lazy 'L.Text' value, using the Text Builder.
---
-module Text.Blaze.Svg.Renderer.Text
-    ( renderSvg
-    ) where
-
-import Text.Blaze.Renderer.Text (renderMarkup)
-
-renderSvg = renderMarkup
diff --git a/Text/Blaze/Svg/Renderer/Utf8.hs b/Text/Blaze/Svg/Renderer/Utf8.hs
deleted file mode 100644
--- a/Text/Blaze/Svg/Renderer/Utf8.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
-module Text.Blaze.Svg.Renderer.Utf8
-    ( renderSvg
-    ) where
-
-import Text.Blaze.Renderer.Utf8 (renderMarkup)
-
-renderSvg = renderMarkup
diff --git a/Text/Blaze/Svg11.hs b/Text/Blaze/Svg11.hs
deleted file mode 100644
--- a/Text/Blaze/Svg11.hs
+++ /dev/null
@@ -1,864 +0,0 @@
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:69
---
-{-# LANGUAGE OverloadedStrings #-}
--- | This module exports SVG combinators used to create documents.
---
-module Text.Blaze.Svg11
-    ( module Text.Blaze
-    , module Text.Blaze.Svg
-    , docType
-    , docTypeSvg
-    , a
-    , altglyph
-    , altglyphdef
-    , altglyphitem
-    , animate
-    , animatecolor
-    , animatemotion
-    , animatetransform
-    , circle
-    , clippath
-    , colorProfile
-    , cursor
-    , defs
-    , desc
-    , ellipse
-    , feblend
-    , fecolormatrix
-    , fecomponenttransfer
-    , fecomposite
-    , feconvolvematrix
-    , fediffuselighting
-    , fedisplacementmap
-    , fedistantlight
-    , feflood
-    , fefunca
-    , fefuncb
-    , fefuncg
-    , fefuncr
-    , fegaussianblur
-    , feimage
-    , femerge
-    , femergenode
-    , femorphology
-    , feoffset
-    , fepointlight
-    , fespecularlighting
-    , fespotlight
-    , fetile
-    , feturbulence
-    , filter_
-    , font
-    , fontFace
-    , fontFaceFormat
-    , fontFaceName
-    , fontFaceSrc
-    , fontFaceUri
-    , foreignobject
-    , g
-    , glyph
-    , glyphref
-    , hkern
-    , image
-    , line
-    , lineargradient
-    , marker
-    , mask
-    , metadata
-    , missingGlyph
-    , mpath
-    , path
-    , pattern
-    , polygon
-    , polyline
-    , radialgradient
-    , rect
-    , script
-    , set
-    , stop
-    , style
-    , svg
-    , switch
-    , symbol
-    , text_
-    , textpath
-    , title
-    , tref
-    , tspan
-    , use
-    , view
-    , vkern
-    ) where
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:78
---
-import Prelude ((>>), (.), ($))
-
-import Text.Blaze
-import Text.Blaze.Svg
-import Text.Blaze.Internal
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:157
---
--- | Combinator for the document type. This should be placed at the top
--- of every SVG page.
---
--- > <?xml version="1.0" encoding="UTF-8"?>
--- > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
--- >     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
---
-docType :: Svg  -- ^ The document type SVG.
-docType = preEscapedText "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n    \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"
-{-# INLINE docType #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:172
---
--- | Combinator for the @\<svg>@ element. This combinator will also
--- insert the correct doctype.
---
--- > <?xml version="1.0" encoding="UTF-8"?>
--- > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
--- >     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
--- > <svg><span>foo</span></svg>
---
-docTypeSvg :: Svg  -- ^ Inner SVG.
-            -> Svg  -- ^ Resulting SVG.
-docTypeSvg inner = docType >> (svg ! attribute "xmlns" " xmlns=\"" "http://www.w3.org/2000/svg" ! attribute "xmlns:xlink" " xmlns:xlink=\"" "http://www.w3.org/1999/xlink"  $ inner)
-{-# INLINE docTypeSvg #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<a>@ element.
---
-a :: Svg  -- ^ Inner SVG.
-  -> Svg  -- ^ Resulting SVG.
-a = Parent "a" "<a" "</a>"
-{-# INLINE a #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<altGlyph />@ element.
---
-altglyph :: Svg  -- ^ Resulting SVG.
-altglyph = Leaf "altGlyph" "<altGlyph" " />"
-{-# INLINE altglyph #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<altGlyphDef />@ element.
---
-altglyphdef :: Svg  -- ^ Resulting SVG.
-altglyphdef = Leaf "altGlyphDef" "<altGlyphDef" " />"
-{-# INLINE altglyphdef #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<altGlyphItem />@ element.
---
-altglyphitem :: Svg  -- ^ Resulting SVG.
-altglyphitem = Leaf "altGlyphItem" "<altGlyphItem" " />"
-{-# INLINE altglyphitem #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<animate />@ element.
---
-animate :: Svg  -- ^ Resulting SVG.
-animate = Leaf "animate" "<animate" " />"
-{-# INLINE animate #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<animateColor />@ element.
---
-animatecolor :: Svg  -- ^ Resulting SVG.
-animatecolor = Leaf "animateColor" "<animateColor" " />"
-{-# INLINE animatecolor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<animateMotion />@ element.
---
-animatemotion :: Svg  -- ^ Resulting SVG.
-animatemotion = Leaf "animateMotion" "<animateMotion" " />"
-{-# INLINE animatemotion #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<animateTransform />@ element.
---
-animatetransform :: Svg  -- ^ Resulting SVG.
-animatetransform = Leaf "animateTransform" "<animateTransform" " />"
-{-# INLINE animatetransform #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<circle />@ element.
---
-circle :: Svg  -- ^ Resulting SVG.
-circle = Leaf "circle" "<circle" " />"
-{-# INLINE circle #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<clipPath />@ element.
---
-clippath :: Svg  -- ^ Resulting SVG.
-clippath = Leaf "clipPath" "<clipPath" " />"
-{-# INLINE clippath #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<color-profile />@ element.
---
-colorProfile :: Svg  -- ^ Resulting SVG.
-colorProfile = Leaf "color-profile" "<color-profile" " />"
-{-# INLINE colorProfile #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<cursor />@ element.
---
-cursor :: Svg  -- ^ Resulting SVG.
-cursor = Leaf "cursor" "<cursor" " />"
-{-# INLINE cursor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<defs>@ element.
---
-defs :: Svg  -- ^ Inner SVG.
-     -> Svg  -- ^ Resulting SVG.
-defs = Parent "defs" "<defs" "</defs>"
-{-# INLINE defs #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<desc />@ element.
---
-desc :: Svg  -- ^ Resulting SVG.
-desc = Leaf "desc" "<desc" " />"
-{-# INLINE desc #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<ellipse />@ element.
---
-ellipse :: Svg  -- ^ Resulting SVG.
-ellipse = Leaf "ellipse" "<ellipse" " />"
-{-# INLINE ellipse #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feBlend />@ element.
---
-feblend :: Svg  -- ^ Resulting SVG.
-feblend = Leaf "feBlend" "<feBlend" " />"
-{-# INLINE feblend #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feColorMatrix />@ element.
---
-fecolormatrix :: Svg  -- ^ Resulting SVG.
-fecolormatrix = Leaf "feColorMatrix" "<feColorMatrix" " />"
-{-# INLINE fecolormatrix #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feComponentTransfer />@ element.
---
-fecomponenttransfer :: Svg  -- ^ Resulting SVG.
-fecomponenttransfer = Leaf "feComponentTransfer" "<feComponentTransfer" " />"
-{-# INLINE fecomponenttransfer #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feComposite />@ element.
---
-fecomposite :: Svg  -- ^ Resulting SVG.
-fecomposite = Leaf "feComposite" "<feComposite" " />"
-{-# INLINE fecomposite #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feConvolveMatrix />@ element.
---
-feconvolvematrix :: Svg  -- ^ Resulting SVG.
-feconvolvematrix = Leaf "feConvolveMatrix" "<feConvolveMatrix" " />"
-{-# INLINE feconvolvematrix #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feDiffuseLighting />@ element.
---
-fediffuselighting :: Svg  -- ^ Resulting SVG.
-fediffuselighting = Leaf "feDiffuseLighting" "<feDiffuseLighting" " />"
-{-# INLINE fediffuselighting #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feDisplacementMap />@ element.
---
-fedisplacementmap :: Svg  -- ^ Resulting SVG.
-fedisplacementmap = Leaf "feDisplacementMap" "<feDisplacementMap" " />"
-{-# INLINE fedisplacementmap #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feDistantLight />@ element.
---
-fedistantlight :: Svg  -- ^ Resulting SVG.
-fedistantlight = Leaf "feDistantLight" "<feDistantLight" " />"
-{-# INLINE fedistantlight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feFlood />@ element.
---
-feflood :: Svg  -- ^ Resulting SVG.
-feflood = Leaf "feFlood" "<feFlood" " />"
-{-# INLINE feflood #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feFuncA />@ element.
---
-fefunca :: Svg  -- ^ Resulting SVG.
-fefunca = Leaf "feFuncA" "<feFuncA" " />"
-{-# INLINE fefunca #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feFuncB />@ element.
---
-fefuncb :: Svg  -- ^ Resulting SVG.
-fefuncb = Leaf "feFuncB" "<feFuncB" " />"
-{-# INLINE fefuncb #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feFuncG />@ element.
---
-fefuncg :: Svg  -- ^ Resulting SVG.
-fefuncg = Leaf "feFuncG" "<feFuncG" " />"
-{-# INLINE fefuncg #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feFuncR />@ element.
---
-fefuncr :: Svg  -- ^ Resulting SVG.
-fefuncr = Leaf "feFuncR" "<feFuncR" " />"
-{-# INLINE fefuncr #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feGaussianBlur />@ element.
---
-fegaussianblur :: Svg  -- ^ Resulting SVG.
-fegaussianblur = Leaf "feGaussianBlur" "<feGaussianBlur" " />"
-{-# INLINE fegaussianblur #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feImage />@ element.
---
-feimage :: Svg  -- ^ Resulting SVG.
-feimage = Leaf "feImage" "<feImage" " />"
-{-# INLINE feimage #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feMerge />@ element.
---
-femerge :: Svg  -- ^ Resulting SVG.
-femerge = Leaf "feMerge" "<feMerge" " />"
-{-# INLINE femerge #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feMergeNode />@ element.
---
-femergenode :: Svg  -- ^ Resulting SVG.
-femergenode = Leaf "feMergeNode" "<feMergeNode" " />"
-{-# INLINE femergenode #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feMorphology />@ element.
---
-femorphology :: Svg  -- ^ Resulting SVG.
-femorphology = Leaf "feMorphology" "<feMorphology" " />"
-{-# INLINE femorphology #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feOffset />@ element.
---
-feoffset :: Svg  -- ^ Resulting SVG.
-feoffset = Leaf "feOffset" "<feOffset" " />"
-{-# INLINE feoffset #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<fePointLight />@ element.
---
-fepointlight :: Svg  -- ^ Resulting SVG.
-fepointlight = Leaf "fePointLight" "<fePointLight" " />"
-{-# INLINE fepointlight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feSpecularLighting />@ element.
---
-fespecularlighting :: Svg  -- ^ Resulting SVG.
-fespecularlighting = Leaf "feSpecularLighting" "<feSpecularLighting" " />"
-{-# INLINE fespecularlighting #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feSpotLight />@ element.
---
-fespotlight :: Svg  -- ^ Resulting SVG.
-fespotlight = Leaf "feSpotLight" "<feSpotLight" " />"
-{-# INLINE fespotlight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feTile />@ element.
---
-fetile :: Svg  -- ^ Resulting SVG.
-fetile = Leaf "feTile" "<feTile" " />"
-{-# INLINE fetile #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<feTurbulence />@ element.
---
-feturbulence :: Svg  -- ^ Resulting SVG.
-feturbulence = Leaf "feTurbulence" "<feTurbulence" " />"
-{-# INLINE feturbulence #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<filter />@ element.
---
-filter_ :: Svg  -- ^ Resulting SVG.
-filter_ = Leaf "filter" "<filter" " />"
-{-# INLINE filter_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<font />@ element.
---
-font :: Svg  -- ^ Resulting SVG.
-font = Leaf "font" "<font" " />"
-{-# INLINE font #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<font-face />@ element.
---
-fontFace :: Svg  -- ^ Resulting SVG.
-fontFace = Leaf "font-face" "<font-face" " />"
-{-# INLINE fontFace #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<font-face-format />@ element.
---
-fontFaceFormat :: Svg  -- ^ Resulting SVG.
-fontFaceFormat = Leaf "font-face-format" "<font-face-format" " />"
-{-# INLINE fontFaceFormat #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<font-face-name />@ element.
---
-fontFaceName :: Svg  -- ^ Resulting SVG.
-fontFaceName = Leaf "font-face-name" "<font-face-name" " />"
-{-# INLINE fontFaceName #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<font-face-src />@ element.
---
-fontFaceSrc :: Svg  -- ^ Resulting SVG.
-fontFaceSrc = Leaf "font-face-src" "<font-face-src" " />"
-{-# INLINE fontFaceSrc #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<font-face-uri />@ element.
---
-fontFaceUri :: Svg  -- ^ Resulting SVG.
-fontFaceUri = Leaf "font-face-uri" "<font-face-uri" " />"
-{-# INLINE fontFaceUri #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<foreignObject />@ element.
---
-foreignobject :: Svg  -- ^ Resulting SVG.
-foreignobject = Leaf "foreignObject" "<foreignObject" " />"
-{-# INLINE foreignobject #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<g>@ element.
---
-g :: Svg  -- ^ Inner SVG.
-  -> Svg  -- ^ Resulting SVG.
-g = Parent "g" "<g" "</g>"
-{-# INLINE g #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<glyph>@ element.
---
-glyph :: Svg  -- ^ Inner SVG.
-      -> Svg  -- ^ Resulting SVG.
-glyph = Parent "glyph" "<glyph" "</glyph>"
-{-# INLINE glyph #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<glyphRef />@ element.
---
-glyphref :: Svg  -- ^ Resulting SVG.
-glyphref = Leaf "glyphRef" "<glyphRef" " />"
-{-# INLINE glyphref #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<hkern />@ element.
---
-hkern :: Svg  -- ^ Resulting SVG.
-hkern = Leaf "hkern" "<hkern" " />"
-{-# INLINE hkern #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<image />@ element.
---
-image :: Svg  -- ^ Resulting SVG.
-image = Leaf "image" "<image" " />"
-{-# INLINE image #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<line />@ element.
---
-line :: Svg  -- ^ Resulting SVG.
-line = Leaf "line" "<line" " />"
-{-# INLINE line #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<linearGradient>@ element.
---
-lineargradient :: Svg  -- ^ Inner SVG.
-               -> Svg  -- ^ Resulting SVG.
-lineargradient = Parent "linearGradient" "<linearGradient" "</linearGradient>"
-{-# INLINE lineargradient #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<marker>@ element.
---
-marker :: Svg  -- ^ Inner SVG.
-       -> Svg  -- ^ Resulting SVG.
-marker = Parent "marker" "<marker" "</marker>"
-{-# INLINE marker #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<mask>@ element.
---
-mask :: Svg  -- ^ Inner SVG.
-     -> Svg  -- ^ Resulting SVG.
-mask = Parent "mask" "<mask" "</mask>"
-{-# INLINE mask #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<metadata />@ element.
---
-metadata :: Svg  -- ^ Resulting SVG.
-metadata = Leaf "metadata" "<metadata" " />"
-{-# INLINE metadata #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<missing-glyph>@ element.
---
-missingGlyph :: Svg  -- ^ Inner SVG.
-             -> Svg  -- ^ Resulting SVG.
-missingGlyph = Parent "missing-glyph" "<missing-glyph" "</missing-glyph>"
-{-# INLINE missingGlyph #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<mpath />@ element.
---
-mpath :: Svg  -- ^ Resulting SVG.
-mpath = Leaf "mpath" "<mpath" " />"
-{-# INLINE mpath #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<path />@ element.
---
-path :: Svg  -- ^ Resulting SVG.
-path = Leaf "path" "<path" " />"
-{-# INLINE path #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<pattern>@ element.
---
-pattern :: Svg  -- ^ Inner SVG.
-        -> Svg  -- ^ Resulting SVG.
-pattern = Parent "pattern" "<pattern" "</pattern>"
-{-# INLINE pattern #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<polygon />@ element.
---
-polygon :: Svg  -- ^ Resulting SVG.
-polygon = Leaf "polygon" "<polygon" " />"
-{-# INLINE polygon #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<polyline />@ element.
---
-polyline :: Svg  -- ^ Resulting SVG.
-polyline = Leaf "polyline" "<polyline" " />"
-{-# INLINE polyline #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<radialGradient>@ element.
---
-radialgradient :: Svg  -- ^ Inner SVG.
-               -> Svg  -- ^ Resulting SVG.
-radialgradient = Parent "radialGradient" "<radialGradient" "</radialGradient>"
-{-# INLINE radialgradient #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<rect />@ element.
---
-rect :: Svg  -- ^ Resulting SVG.
-rect = Leaf "rect" "<rect" " />"
-{-# INLINE rect #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<script />@ element.
---
-script :: Svg  -- ^ Resulting SVG.
-script = Leaf "script" "<script" " />"
-{-# INLINE script #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<set />@ element.
---
-set :: Svg  -- ^ Resulting SVG.
-set = Leaf "set" "<set" " />"
-{-# INLINE set #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<stop />@ element.
---
-stop :: Svg  -- ^ Resulting SVG.
-stop = Leaf "stop" "<stop" " />"
-{-# INLINE stop #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<style />@ element.
---
-style :: Svg  -- ^ Resulting SVG.
-style = Leaf "style" "<style" " />"
-{-# INLINE style #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<svg>@ element.
---
-svg :: Svg  -- ^ Inner SVG.
-    -> Svg  -- ^ Resulting SVG.
-svg = Parent "svg" "<svg" "</svg>"
-{-# INLINE svg #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<switch>@ element.
---
-switch :: Svg  -- ^ Inner SVG.
-       -> Svg  -- ^ Resulting SVG.
-switch = Parent "switch" "<switch" "</switch>"
-{-# INLINE switch #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:188
---
--- | Combinator for the @\<symbol>@ element.
---
-symbol :: Svg  -- ^ Inner SVG.
-       -> Svg  -- ^ Resulting SVG.
-symbol = Parent "symbol" "<symbol" "</symbol>"
-{-# INLINE symbol #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<text />@ element.
---
-text_ :: Svg  -- ^ Resulting SVG.
-text_ = Leaf "text" "<text" " />"
-{-# INLINE text_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<textPath />@ element.
---
-textpath :: Svg  -- ^ Resulting SVG.
-textpath = Leaf "textPath" "<textPath" " />"
-{-# INLINE textpath #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<title />@ element.
---
-title :: Svg  -- ^ Resulting SVG.
-title = Leaf "title" "<title" " />"
-{-# INLINE title #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<tref />@ element.
---
-tref :: Svg  -- ^ Resulting SVG.
-tref = Leaf "tref" "<tref" " />"
-{-# INLINE tref #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<tspan />@ element.
---
-tspan :: Svg  -- ^ Resulting SVG.
-tspan = Leaf "tspan" "<tspan" " />"
-{-# INLINE tspan #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<use />@ element.
---
-use :: Svg  -- ^ Resulting SVG.
-use = Leaf "use" "<use" " />"
-{-# INLINE use #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<view />@ element.
---
-view :: Svg  -- ^ Resulting SVG.
-view = Leaf "view" "<view" " />"
-{-# INLINE view #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:207
---
--- | Combinator for the @\<vkern />@ element.
---
-vkern :: Svg  -- ^ Resulting SVG.
-vkern = Leaf "vkern" "<vkern" " />"
-{-# INLINE vkern #-}
diff --git a/Text/Blaze/Svg11/Attributes.hs b/Text/Blaze/Svg11/Attributes.hs
deleted file mode 100644
--- a/Text/Blaze/Svg11/Attributes.hs
+++ /dev/null
@@ -1,2942 +0,0 @@
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:94
---
--- | This module exports combinators that provide you with the
--- ability to set attributes on SVG elements.
---
-{-# LANGUAGE OverloadedStrings #-}
-module Text.Blaze.Svg11.Attributes
-    ( accentHeight
-    , accumulate
-    , additive
-    , alignmentBaseline
-    , alphabetic
-    , amplitude
-    , arabicForm
-    , ascent
-    , attributename
-    , attributetype
-    , azimuth
-    , basefrequency
-    , baseprofile
-    , baselineShift
-    , bbox
-    , begin
-    , bias
-    , by
-    , calcmode
-    , capHeight
-    , class_
-    , clip
-    , clipPath
-    , clipRule
-    , clippathunits
-    , color
-    , colorInterpolation
-    , colorInterpolationFilters
-    , colorProfile
-    , colorRendering
-    , contentscripttype
-    , contentstyletype
-    , cursor
-    , cx
-    , cy
-    , d
-    , descent
-    , diffuseconstant
-    , direction
-    , display
-    , divisor
-    , dominantBaseline
-    , dur
-    , dx
-    , dy
-    , edgemode
-    , elevation
-    , enableBackground
-    , end
-    , exponent_
-    , externalresourcesrequired
-    , fill
-    , fillOpacity
-    , fillRule
-    , filter_
-    , filterres
-    , filterunits
-    , floodColor
-    , floodOpacity
-    , fontFamily
-    , fontSize
-    , fontSizeAdjust
-    , fontStretch
-    , fontStyle
-    , fontVariant
-    , fontWeight
-    , format
-    , from
-    , fx
-    , fy
-    , g1
-    , g2
-    , glyphName
-    , glyphOrientationHorizontal
-    , glyphOrientationVertical
-    , glyphref
-    , gradienttransform
-    , gradientunits
-    , hanging
-    , height
-    , horizAdvX
-    , horizOriginX
-    , horizOriginY
-    , id_
-    , ideographic
-    , imageRendering
-    , in_
-    , in2
-    , intercept
-    , k
-    , k1
-    , k2
-    , k3
-    , k4
-    , kernelmatrix
-    , kernelunitlength
-    , kerning
-    , keypoints
-    , keysplines
-    , keytimes
-    , lang
-    , lengthadjust
-    , letterSpacing
-    , lightingColor
-    , limitingconeangle
-    , local
-    , markerEnd
-    , markerMid
-    , markerStart
-    , markerheight
-    , markerunits
-    , markerwidth
-    , mask
-    , maskcontentunits
-    , maskunits
-    , mathematical
-    , max_
-    , media
-    , method
-    , min_
-    , mode
-    , name
-    , numoctaves
-    , offset
-    , onabort
-    , onactivate
-    , onbegin
-    , onclick
-    , onend
-    , onerror
-    , onfocusin
-    , onfocusout
-    , onload
-    , onmousedown
-    , onmousemove
-    , onmouseout
-    , onmouseover
-    , onmouseup
-    , onrepeat
-    , onresize
-    , onscroll
-    , onunload
-    , onzoom
-    , opacity
-    , operator
-    , order
-    , orient
-    , orientation
-    , origin
-    , overflow
-    , overlinePosition
-    , overlineThickness
-    , panose1
-    , path
-    , pathlength
-    , patterncontentunits
-    , patterntransform
-    , patternunits
-    , pointerEvents
-    , points
-    , pointsatx
-    , pointsaty
-    , pointsatz
-    , preservealpha
-    , preserveaspectratio
-    , primitiveunits
-    , r
-    , radius
-    , refx
-    , refy
-    , renderingIntent
-    , repeatcount
-    , repeatdur
-    , requiredextensions
-    , requiredfeatures
-    , restart
-    , result
-    , rotate
-    , rx
-    , ry
-    , scale
-    , seed
-    , shapeRendering
-    , slope
-    , spacing
-    , specularconstant
-    , specularexponent
-    , spreadmethod
-    , startoffset
-    , stddeviation
-    , stemh
-    , stemv
-    , stitchtiles
-    , stopColor
-    , stopOpacity
-    , strikethroughPosition
-    , strikethroughThickness
-    , string
-    , stroke
-    , strokeDasharray
-    , strokeDashoffset
-    , strokeLinecap
-    , strokeLinejoin
-    , strokeMiterlimit
-    , strokeOpacity
-    , strokeWidth
-    , style
-    , surfacescale
-    , systemlanguage
-    , tablevalues
-    , target
-    , targetx
-    , targety
-    , textAnchor
-    , textDecoration
-    , textRendering
-    , textlength
-    , title
-    , to
-    , transform
-    , type_
-    , u1
-    , u2
-    , underlinePosition
-    , underlineThickness
-    , unicode
-    , unicodeBidi
-    , unicodeRange
-    , unitsPerEm
-    , vAlphabetic
-    , vHanging
-    , vIdeographic
-    , vMathematical
-    , values
-    , version
-    , vertAdvY
-    , vertOriginX
-    , vertOriginY
-    , viewbox
-    , viewtarget
-    , visibility
-    , width
-    , widths
-    , wordSpacing
-    , writingMode
-    , x
-    , xHeight
-    , x1
-    , x2
-    , xchannelselector
-    , xlinkActuate
-    , xlinkArcrole
-    , xlinkHref
-    , xlinkRole
-    , xlinkShow
-    , xlinkTitle
-    , xlinkType
-    , xmlBase
-    , xmlLang
-    , xmlSpace
-    , y
-    , y1
-    , y2
-    , ychannelselector
-    , z
-    , zoomandpan
-    ) where
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:100
---
-import Prelude ()
-
-import Text.Blaze.Internal (Attribute, AttributeValue, attribute)
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @accent-height@ attribute.
---
-accentHeight :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-accentHeight = attribute "accent-height" " accent-height=\""
-{-# INLINE accentHeight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @accumulate@ attribute.
---
-accumulate :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-accumulate = attribute "accumulate" " accumulate=\""
-{-# INLINE accumulate #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @additive@ attribute.
---
-additive :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-additive = attribute "additive" " additive=\""
-{-# INLINE additive #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @alignment-baseline@ attribute.
---
-alignmentBaseline :: AttributeValue  -- ^ Attribute value.
-                  -> Attribute       -- ^ Resulting attribute.
-alignmentBaseline = attribute "alignment-baseline" " alignment-baseline=\""
-{-# INLINE alignmentBaseline #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @alphabetic@ attribute.
---
-alphabetic :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-alphabetic = attribute "alphabetic" " alphabetic=\""
-{-# INLINE alphabetic #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @amplitude@ attribute.
---
-amplitude :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-amplitude = attribute "amplitude" " amplitude=\""
-{-# INLINE amplitude #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @arabic-form@ attribute.
---
-arabicForm :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-arabicForm = attribute "arabic-form" " arabic-form=\""
-{-# INLINE arabicForm #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @ascent@ attribute.
---
-ascent :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-ascent = attribute "ascent" " ascent=\""
-{-# INLINE ascent #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @attributeName@ attribute.
---
-attributename :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-attributename = attribute "attributeName" " attributeName=\""
-{-# INLINE attributename #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @attributeType@ attribute.
---
-attributetype :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-attributetype = attribute "attributeType" " attributeType=\""
-{-# INLINE attributetype #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @azimuth@ attribute.
---
-azimuth :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-azimuth = attribute "azimuth" " azimuth=\""
-{-# INLINE azimuth #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @baseFrequency@ attribute.
---
-basefrequency :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-basefrequency = attribute "baseFrequency" " baseFrequency=\""
-{-# INLINE basefrequency #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @baseProfile@ attribute.
---
-baseprofile :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-baseprofile = attribute "baseProfile" " baseProfile=\""
-{-# INLINE baseprofile #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @baseline-shift@ attribute.
---
-baselineShift :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-baselineShift = attribute "baseline-shift" " baseline-shift=\""
-{-# INLINE baselineShift #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @bbox@ attribute.
---
-bbox :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-bbox = attribute "bbox" " bbox=\""
-{-# INLINE bbox #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @begin@ attribute.
---
-begin :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-begin = attribute "begin" " begin=\""
-{-# INLINE begin #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @bias@ attribute.
---
-bias :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-bias = attribute "bias" " bias=\""
-{-# INLINE bias #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @by@ attribute.
---
-by :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-by = attribute "by" " by=\""
-{-# INLINE by #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @calcMode@ attribute.
---
-calcmode :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-calcmode = attribute "calcMode" " calcMode=\""
-{-# INLINE calcmode #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @cap-height@ attribute.
---
-capHeight :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-capHeight = attribute "cap-height" " cap-height=\""
-{-# INLINE capHeight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @class@ attribute.
---
-class_ :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-class_ = attribute "class" " class=\""
-{-# INLINE class_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @clip@ attribute.
---
-clip :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-clip = attribute "clip" " clip=\""
-{-# INLINE clip #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @clip-path@ attribute.
---
-clipPath :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-clipPath = attribute "clip-path" " clip-path=\""
-{-# INLINE clipPath #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @clip-rule@ attribute.
---
-clipRule :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-clipRule = attribute "clip-rule" " clip-rule=\""
-{-# INLINE clipRule #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @clipPathUnits@ attribute.
---
-clippathunits :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-clippathunits = attribute "clipPathUnits" " clipPathUnits=\""
-{-# INLINE clippathunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @color@ attribute.
---
-color :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-color = attribute "color" " color=\""
-{-# INLINE color #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @color-interpolation@ attribute.
---
-colorInterpolation :: AttributeValue  -- ^ Attribute value.
-                   -> Attribute       -- ^ Resulting attribute.
-colorInterpolation = attribute "color-interpolation" " color-interpolation=\""
-{-# INLINE colorInterpolation #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @color-interpolation-filters@ attribute.
---
-colorInterpolationFilters :: AttributeValue  -- ^ Attribute value.
-                          -> Attribute       -- ^ Resulting attribute.
-colorInterpolationFilters = attribute "color-interpolation-filters" " color-interpolation-filters=\""
-{-# INLINE colorInterpolationFilters #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @color-profile@ attribute.
---
-colorProfile :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-colorProfile = attribute "color-profile" " color-profile=\""
-{-# INLINE colorProfile #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @color-rendering@ attribute.
---
-colorRendering :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-colorRendering = attribute "color-rendering" " color-rendering=\""
-{-# INLINE colorRendering #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @contentScriptType@ attribute.
---
-contentscripttype :: AttributeValue  -- ^ Attribute value.
-                  -> Attribute       -- ^ Resulting attribute.
-contentscripttype = attribute "contentScriptType" " contentScriptType=\""
-{-# INLINE contentscripttype #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @contentStyleType@ attribute.
---
-contentstyletype :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-contentstyletype = attribute "contentStyleType" " contentStyleType=\""
-{-# INLINE contentstyletype #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @cursor@ attribute.
---
-cursor :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-cursor = attribute "cursor" " cursor=\""
-{-# INLINE cursor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @cx@ attribute.
---
-cx :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-cx = attribute "cx" " cx=\""
-{-# INLINE cx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @cy@ attribute.
---
-cy :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-cy = attribute "cy" " cy=\""
-{-# INLINE cy #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @d@ attribute.
---
-d :: AttributeValue  -- ^ Attribute value.
-  -> Attribute       -- ^ Resulting attribute.
-d = attribute "d" " d=\""
-{-# INLINE d #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @descent@ attribute.
---
-descent :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-descent = attribute "descent" " descent=\""
-{-# INLINE descent #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @diffuseConstant@ attribute.
---
-diffuseconstant :: AttributeValue  -- ^ Attribute value.
-                -> Attribute       -- ^ Resulting attribute.
-diffuseconstant = attribute "diffuseConstant" " diffuseConstant=\""
-{-# INLINE diffuseconstant #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @direction@ attribute.
---
-direction :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-direction = attribute "direction" " direction=\""
-{-# INLINE direction #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @display@ attribute.
---
-display :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-display = attribute "display" " display=\""
-{-# INLINE display #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @divisor@ attribute.
---
-divisor :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-divisor = attribute "divisor" " divisor=\""
-{-# INLINE divisor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @dominant-baseline@ attribute.
---
-dominantBaseline :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-dominantBaseline = attribute "dominant-baseline" " dominant-baseline=\""
-{-# INLINE dominantBaseline #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @dur@ attribute.
---
-dur :: AttributeValue  -- ^ Attribute value.
-    -> Attribute       -- ^ Resulting attribute.
-dur = attribute "dur" " dur=\""
-{-# INLINE dur #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @dx@ attribute.
---
-dx :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-dx = attribute "dx" " dx=\""
-{-# INLINE dx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @dy@ attribute.
---
-dy :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-dy = attribute "dy" " dy=\""
-{-# INLINE dy #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @edgeMode@ attribute.
---
-edgemode :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-edgemode = attribute "edgeMode" " edgeMode=\""
-{-# INLINE edgemode #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @elevation@ attribute.
---
-elevation :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-elevation = attribute "elevation" " elevation=\""
-{-# INLINE elevation #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @enable-background@ attribute.
---
-enableBackground :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-enableBackground = attribute "enable-background" " enable-background=\""
-{-# INLINE enableBackground #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @end@ attribute.
---
-end :: AttributeValue  -- ^ Attribute value.
-    -> Attribute       -- ^ Resulting attribute.
-end = attribute "end" " end=\""
-{-# INLINE end #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @exponent@ attribute.
---
-exponent_ :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-exponent_ = attribute "exponent" " exponent=\""
-{-# INLINE exponent_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @externalResourcesRequired@ attribute.
---
-externalresourcesrequired :: AttributeValue  -- ^ Attribute value.
-                          -> Attribute       -- ^ Resulting attribute.
-externalresourcesrequired = attribute "externalResourcesRequired" " externalResourcesRequired=\""
-{-# INLINE externalresourcesrequired #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @fill@ attribute.
---
-fill :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-fill = attribute "fill" " fill=\""
-{-# INLINE fill #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @fill-opacity@ attribute.
---
-fillOpacity :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-fillOpacity = attribute "fill-opacity" " fill-opacity=\""
-{-# INLINE fillOpacity #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @fill-rule@ attribute.
---
-fillRule :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-fillRule = attribute "fill-rule" " fill-rule=\""
-{-# INLINE fillRule #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @filter@ attribute.
---
-filter_ :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-filter_ = attribute "filter" " filter=\""
-{-# INLINE filter_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @filterRes@ attribute.
---
-filterres :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-filterres = attribute "filterRes" " filterRes=\""
-{-# INLINE filterres #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @filterUnits@ attribute.
---
-filterunits :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-filterunits = attribute "filterUnits" " filterUnits=\""
-{-# INLINE filterunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @flood-color@ attribute.
---
-floodColor :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-floodColor = attribute "flood-color" " flood-color=\""
-{-# INLINE floodColor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @flood-opacity@ attribute.
---
-floodOpacity :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-floodOpacity = attribute "flood-opacity" " flood-opacity=\""
-{-# INLINE floodOpacity #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-family@ attribute.
---
-fontFamily :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-fontFamily = attribute "font-family" " font-family=\""
-{-# INLINE fontFamily #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-size@ attribute.
---
-fontSize :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-fontSize = attribute "font-size" " font-size=\""
-{-# INLINE fontSize #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-size-adjust@ attribute.
---
-fontSizeAdjust :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-fontSizeAdjust = attribute "font-size-adjust" " font-size-adjust=\""
-{-# INLINE fontSizeAdjust #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-stretch@ attribute.
---
-fontStretch :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-fontStretch = attribute "font-stretch" " font-stretch=\""
-{-# INLINE fontStretch #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-style@ attribute.
---
-fontStyle :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-fontStyle = attribute "font-style" " font-style=\""
-{-# INLINE fontStyle #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-variant@ attribute.
---
-fontVariant :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-fontVariant = attribute "font-variant" " font-variant=\""
-{-# INLINE fontVariant #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @font-weight@ attribute.
---
-fontWeight :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-fontWeight = attribute "font-weight" " font-weight=\""
-{-# INLINE fontWeight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @format@ attribute.
---
-format :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-format = attribute "format" " format=\""
-{-# INLINE format #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @from@ attribute.
---
-from :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-from = attribute "from" " from=\""
-{-# INLINE from #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @fx@ attribute.
---
-fx :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-fx = attribute "fx" " fx=\""
-{-# INLINE fx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @fy@ attribute.
---
-fy :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-fy = attribute "fy" " fy=\""
-{-# INLINE fy #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @g1@ attribute.
---
-g1 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-g1 = attribute "g1" " g1=\""
-{-# INLINE g1 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @g2@ attribute.
---
-g2 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-g2 = attribute "g2" " g2=\""
-{-# INLINE g2 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @glyph-name@ attribute.
---
-glyphName :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-glyphName = attribute "glyph-name" " glyph-name=\""
-{-# INLINE glyphName #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @glyph-orientation-horizontal@ attribute.
---
-glyphOrientationHorizontal :: AttributeValue  -- ^ Attribute value.
-                           -> Attribute       -- ^ Resulting attribute.
-glyphOrientationHorizontal = attribute "glyph-orientation-horizontal" " glyph-orientation-horizontal=\""
-{-# INLINE glyphOrientationHorizontal #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @glyph-orientation-vertical@ attribute.
---
-glyphOrientationVertical :: AttributeValue  -- ^ Attribute value.
-                         -> Attribute       -- ^ Resulting attribute.
-glyphOrientationVertical = attribute "glyph-orientation-vertical" " glyph-orientation-vertical=\""
-{-# INLINE glyphOrientationVertical #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @glyphRef@ attribute.
---
-glyphref :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-glyphref = attribute "glyphRef" " glyphRef=\""
-{-# INLINE glyphref #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @gradientTransform@ attribute.
---
-gradienttransform :: AttributeValue  -- ^ Attribute value.
-                  -> Attribute       -- ^ Resulting attribute.
-gradienttransform = attribute "gradientTransform" " gradientTransform=\""
-{-# INLINE gradienttransform #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @gradientUnits@ attribute.
---
-gradientunits :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-gradientunits = attribute "gradientUnits" " gradientUnits=\""
-{-# INLINE gradientunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @hanging@ attribute.
---
-hanging :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-hanging = attribute "hanging" " hanging=\""
-{-# INLINE hanging #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @height@ attribute.
---
-height :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-height = attribute "height" " height=\""
-{-# INLINE height #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @horiz-adv-x@ attribute.
---
-horizAdvX :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-horizAdvX = attribute "horiz-adv-x" " horiz-adv-x=\""
-{-# INLINE horizAdvX #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @horiz-origin-x@ attribute.
---
-horizOriginX :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-horizOriginX = attribute "horiz-origin-x" " horiz-origin-x=\""
-{-# INLINE horizOriginX #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @horiz-origin-y@ attribute.
---
-horizOriginY :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-horizOriginY = attribute "horiz-origin-y" " horiz-origin-y=\""
-{-# INLINE horizOriginY #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @id@ attribute.
---
-id_ :: AttributeValue  -- ^ Attribute value.
-    -> Attribute       -- ^ Resulting attribute.
-id_ = attribute "id" " id=\""
-{-# INLINE id_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @ideographic@ attribute.
---
-ideographic :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-ideographic = attribute "ideographic" " ideographic=\""
-{-# INLINE ideographic #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @image-rendering@ attribute.
---
-imageRendering :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-imageRendering = attribute "image-rendering" " image-rendering=\""
-{-# INLINE imageRendering #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @in@ attribute.
---
-in_ :: AttributeValue  -- ^ Attribute value.
-    -> Attribute       -- ^ Resulting attribute.
-in_ = attribute "in" " in=\""
-{-# INLINE in_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @in2@ attribute.
---
-in2 :: AttributeValue  -- ^ Attribute value.
-    -> Attribute       -- ^ Resulting attribute.
-in2 = attribute "in2" " in2=\""
-{-# INLINE in2 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @intercept@ attribute.
---
-intercept :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-intercept = attribute "intercept" " intercept=\""
-{-# INLINE intercept #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @k@ attribute.
---
-k :: AttributeValue  -- ^ Attribute value.
-  -> Attribute       -- ^ Resulting attribute.
-k = attribute "k" " k=\""
-{-# INLINE k #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @k1@ attribute.
---
-k1 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-k1 = attribute "k1" " k1=\""
-{-# INLINE k1 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @k2@ attribute.
---
-k2 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-k2 = attribute "k2" " k2=\""
-{-# INLINE k2 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @k3@ attribute.
---
-k3 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-k3 = attribute "k3" " k3=\""
-{-# INLINE k3 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @k4@ attribute.
---
-k4 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-k4 = attribute "k4" " k4=\""
-{-# INLINE k4 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @kernelMatrix@ attribute.
---
-kernelmatrix :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-kernelmatrix = attribute "kernelMatrix" " kernelMatrix=\""
-{-# INLINE kernelmatrix #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @kernelUnitLength@ attribute.
---
-kernelunitlength :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-kernelunitlength = attribute "kernelUnitLength" " kernelUnitLength=\""
-{-# INLINE kernelunitlength #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @kerning@ attribute.
---
-kerning :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-kerning = attribute "kerning" " kerning=\""
-{-# INLINE kerning #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @keyPoints@ attribute.
---
-keypoints :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-keypoints = attribute "keyPoints" " keyPoints=\""
-{-# INLINE keypoints #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @keySplines@ attribute.
---
-keysplines :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-keysplines = attribute "keySplines" " keySplines=\""
-{-# INLINE keysplines #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @keyTimes@ attribute.
---
-keytimes :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-keytimes = attribute "keyTimes" " keyTimes=\""
-{-# INLINE keytimes #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @lang@ attribute.
---
-lang :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-lang = attribute "lang" " lang=\""
-{-# INLINE lang #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @lengthAdjust@ attribute.
---
-lengthadjust :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-lengthadjust = attribute "lengthAdjust" " lengthAdjust=\""
-{-# INLINE lengthadjust #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @letter-spacing@ attribute.
---
-letterSpacing :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-letterSpacing = attribute "letter-spacing" " letter-spacing=\""
-{-# INLINE letterSpacing #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @lighting-color@ attribute.
---
-lightingColor :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-lightingColor = attribute "lighting-color" " lighting-color=\""
-{-# INLINE lightingColor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @limitingConeAngle@ attribute.
---
-limitingconeangle :: AttributeValue  -- ^ Attribute value.
-                  -> Attribute       -- ^ Resulting attribute.
-limitingconeangle = attribute "limitingConeAngle" " limitingConeAngle=\""
-{-# INLINE limitingconeangle #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @local@ attribute.
---
-local :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-local = attribute "local" " local=\""
-{-# INLINE local #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @marker-end@ attribute.
---
-markerEnd :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-markerEnd = attribute "marker-end" " marker-end=\""
-{-# INLINE markerEnd #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @marker-mid@ attribute.
---
-markerMid :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-markerMid = attribute "marker-mid" " marker-mid=\""
-{-# INLINE markerMid #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @marker-start@ attribute.
---
-markerStart :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-markerStart = attribute "marker-start" " marker-start=\""
-{-# INLINE markerStart #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @markerHeight@ attribute.
---
-markerheight :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-markerheight = attribute "markerHeight" " markerHeight=\""
-{-# INLINE markerheight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @markerUnits@ attribute.
---
-markerunits :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-markerunits = attribute "markerUnits" " markerUnits=\""
-{-# INLINE markerunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @markerWidth@ attribute.
---
-markerwidth :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-markerwidth = attribute "markerWidth" " markerWidth=\""
-{-# INLINE markerwidth #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @mask@ attribute.
---
-mask :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-mask = attribute "mask" " mask=\""
-{-# INLINE mask #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @maskContentUnits@ attribute.
---
-maskcontentunits :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-maskcontentunits = attribute "maskContentUnits" " maskContentUnits=\""
-{-# INLINE maskcontentunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @maskUnits@ attribute.
---
-maskunits :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-maskunits = attribute "maskUnits" " maskUnits=\""
-{-# INLINE maskunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @mathematical@ attribute.
---
-mathematical :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-mathematical = attribute "mathematical" " mathematical=\""
-{-# INLINE mathematical #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @max@ attribute.
---
-max_ :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-max_ = attribute "max" " max=\""
-{-# INLINE max_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @media@ attribute.
---
-media :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-media = attribute "media" " media=\""
-{-# INLINE media #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @method@ attribute.
---
-method :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-method = attribute "method" " method=\""
-{-# INLINE method #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @min@ attribute.
---
-min_ :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-min_ = attribute "min" " min=\""
-{-# INLINE min_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @mode@ attribute.
---
-mode :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-mode = attribute "mode" " mode=\""
-{-# INLINE mode #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @name@ attribute.
---
-name :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-name = attribute "name" " name=\""
-{-# INLINE name #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @numOctaves@ attribute.
---
-numoctaves :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-numoctaves = attribute "numOctaves" " numOctaves=\""
-{-# INLINE numoctaves #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @offset@ attribute.
---
-offset :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-offset = attribute "offset" " offset=\""
-{-# INLINE offset #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onabort@ attribute.
---
-onabort :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-onabort = attribute "onabort" " onabort=\""
-{-# INLINE onabort #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onactivate@ attribute.
---
-onactivate :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-onactivate = attribute "onactivate" " onactivate=\""
-{-# INLINE onactivate #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onbegin@ attribute.
---
-onbegin :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-onbegin = attribute "onbegin" " onbegin=\""
-{-# INLINE onbegin #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onclick@ attribute.
---
-onclick :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-onclick = attribute "onclick" " onclick=\""
-{-# INLINE onclick #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onend@ attribute.
---
-onend :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-onend = attribute "onend" " onend=\""
-{-# INLINE onend #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onerror@ attribute.
---
-onerror :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-onerror = attribute "onerror" " onerror=\""
-{-# INLINE onerror #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onfocusin@ attribute.
---
-onfocusin :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-onfocusin = attribute "onfocusin" " onfocusin=\""
-{-# INLINE onfocusin #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onfocusout@ attribute.
---
-onfocusout :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-onfocusout = attribute "onfocusout" " onfocusout=\""
-{-# INLINE onfocusout #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onload@ attribute.
---
-onload :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-onload = attribute "onload" " onload=\""
-{-# INLINE onload #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onmousedown@ attribute.
---
-onmousedown :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-onmousedown = attribute "onmousedown" " onmousedown=\""
-{-# INLINE onmousedown #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onmousemove@ attribute.
---
-onmousemove :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-onmousemove = attribute "onmousemove" " onmousemove=\""
-{-# INLINE onmousemove #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onmouseout@ attribute.
---
-onmouseout :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-onmouseout = attribute "onmouseout" " onmouseout=\""
-{-# INLINE onmouseout #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onmouseover@ attribute.
---
-onmouseover :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-onmouseover = attribute "onmouseover" " onmouseover=\""
-{-# INLINE onmouseover #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onmouseup@ attribute.
---
-onmouseup :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-onmouseup = attribute "onmouseup" " onmouseup=\""
-{-# INLINE onmouseup #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onrepeat@ attribute.
---
-onrepeat :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-onrepeat = attribute "onrepeat" " onrepeat=\""
-{-# INLINE onrepeat #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onresize@ attribute.
---
-onresize :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-onresize = attribute "onresize" " onresize=\""
-{-# INLINE onresize #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onscroll@ attribute.
---
-onscroll :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-onscroll = attribute "onscroll" " onscroll=\""
-{-# INLINE onscroll #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onunload@ attribute.
---
-onunload :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-onunload = attribute "onunload" " onunload=\""
-{-# INLINE onunload #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @onzoom@ attribute.
---
-onzoom :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-onzoom = attribute "onzoom" " onzoom=\""
-{-# INLINE onzoom #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @opacity@ attribute.
---
-opacity :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-opacity = attribute "opacity" " opacity=\""
-{-# INLINE opacity #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @operator@ attribute.
---
-operator :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-operator = attribute "operator" " operator=\""
-{-# INLINE operator #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @order@ attribute.
---
-order :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-order = attribute "order" " order=\""
-{-# INLINE order #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @orient@ attribute.
---
-orient :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-orient = attribute "orient" " orient=\""
-{-# INLINE orient #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @orientation@ attribute.
---
-orientation :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-orientation = attribute "orientation" " orientation=\""
-{-# INLINE orientation #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @origin@ attribute.
---
-origin :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-origin = attribute "origin" " origin=\""
-{-# INLINE origin #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @overflow@ attribute.
---
-overflow :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-overflow = attribute "overflow" " overflow=\""
-{-# INLINE overflow #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @overline-position@ attribute.
---
-overlinePosition :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-overlinePosition = attribute "overline-position" " overline-position=\""
-{-# INLINE overlinePosition #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @overline-thickness@ attribute.
---
-overlineThickness :: AttributeValue  -- ^ Attribute value.
-                  -> Attribute       -- ^ Resulting attribute.
-overlineThickness = attribute "overline-thickness" " overline-thickness=\""
-{-# INLINE overlineThickness #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @panose-1@ attribute.
---
-panose1 :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-panose1 = attribute "panose-1" " panose-1=\""
-{-# INLINE panose1 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @path@ attribute.
---
-path :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-path = attribute "path" " path=\""
-{-# INLINE path #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @pathLength@ attribute.
---
-pathlength :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-pathlength = attribute "pathLength" " pathLength=\""
-{-# INLINE pathlength #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @patternContentUnits@ attribute.
---
-patterncontentunits :: AttributeValue  -- ^ Attribute value.
-                    -> Attribute       -- ^ Resulting attribute.
-patterncontentunits = attribute "patternContentUnits" " patternContentUnits=\""
-{-# INLINE patterncontentunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @patternTransform@ attribute.
---
-patterntransform :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-patterntransform = attribute "patternTransform" " patternTransform=\""
-{-# INLINE patterntransform #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @patternUnits@ attribute.
---
-patternunits :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-patternunits = attribute "patternUnits" " patternUnits=\""
-{-# INLINE patternunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @pointer-events@ attribute.
---
-pointerEvents :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-pointerEvents = attribute "pointer-events" " pointer-events=\""
-{-# INLINE pointerEvents #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @points@ attribute.
---
-points :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-points = attribute "points" " points=\""
-{-# INLINE points #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @pointsAtX@ attribute.
---
-pointsatx :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-pointsatx = attribute "pointsAtX" " pointsAtX=\""
-{-# INLINE pointsatx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @pointsAtY@ attribute.
---
-pointsaty :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-pointsaty = attribute "pointsAtY" " pointsAtY=\""
-{-# INLINE pointsaty #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @pointsAtZ@ attribute.
---
-pointsatz :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-pointsatz = attribute "pointsAtZ" " pointsAtZ=\""
-{-# INLINE pointsatz #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @preserveAlpha@ attribute.
---
-preservealpha :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-preservealpha = attribute "preserveAlpha" " preserveAlpha=\""
-{-# INLINE preservealpha #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @preserveAspectRatio@ attribute.
---
-preserveaspectratio :: AttributeValue  -- ^ Attribute value.
-                    -> Attribute       -- ^ Resulting attribute.
-preserveaspectratio = attribute "preserveAspectRatio" " preserveAspectRatio=\""
-{-# INLINE preserveaspectratio #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @primitiveUnits@ attribute.
---
-primitiveunits :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-primitiveunits = attribute "primitiveUnits" " primitiveUnits=\""
-{-# INLINE primitiveunits #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @r@ attribute.
---
-r :: AttributeValue  -- ^ Attribute value.
-  -> Attribute       -- ^ Resulting attribute.
-r = attribute "r" " r=\""
-{-# INLINE r #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @radius@ attribute.
---
-radius :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-radius = attribute "radius" " radius=\""
-{-# INLINE radius #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @refX@ attribute.
---
-refx :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-refx = attribute "refX" " refX=\""
-{-# INLINE refx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @refY@ attribute.
---
-refy :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-refy = attribute "refY" " refY=\""
-{-# INLINE refy #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @rendering-intent@ attribute.
---
-renderingIntent :: AttributeValue  -- ^ Attribute value.
-                -> Attribute       -- ^ Resulting attribute.
-renderingIntent = attribute "rendering-intent" " rendering-intent=\""
-{-# INLINE renderingIntent #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @repeatCount@ attribute.
---
-repeatcount :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-repeatcount = attribute "repeatCount" " repeatCount=\""
-{-# INLINE repeatcount #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @repeatDur@ attribute.
---
-repeatdur :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-repeatdur = attribute "repeatDur" " repeatDur=\""
-{-# INLINE repeatdur #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @requiredExtensions@ attribute.
---
-requiredextensions :: AttributeValue  -- ^ Attribute value.
-                   -> Attribute       -- ^ Resulting attribute.
-requiredextensions = attribute "requiredExtensions" " requiredExtensions=\""
-{-# INLINE requiredextensions #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @requiredFeatures@ attribute.
---
-requiredfeatures :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-requiredfeatures = attribute "requiredFeatures" " requiredFeatures=\""
-{-# INLINE requiredfeatures #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @restart@ attribute.
---
-restart :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-restart = attribute "restart" " restart=\""
-{-# INLINE restart #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @result@ attribute.
---
-result :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-result = attribute "result" " result=\""
-{-# INLINE result #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @rotate@ attribute.
---
-rotate :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-rotate = attribute "rotate" " rotate=\""
-{-# INLINE rotate #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @rx@ attribute.
---
-rx :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-rx = attribute "rx" " rx=\""
-{-# INLINE rx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @ry@ attribute.
---
-ry :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-ry = attribute "ry" " ry=\""
-{-# INLINE ry #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @scale@ attribute.
---
-scale :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-scale = attribute "scale" " scale=\""
-{-# INLINE scale #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @seed@ attribute.
---
-seed :: AttributeValue  -- ^ Attribute value.
-     -> Attribute       -- ^ Resulting attribute.
-seed = attribute "seed" " seed=\""
-{-# INLINE seed #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @shape-rendering@ attribute.
---
-shapeRendering :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-shapeRendering = attribute "shape-rendering" " shape-rendering=\""
-{-# INLINE shapeRendering #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @slope@ attribute.
---
-slope :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-slope = attribute "slope" " slope=\""
-{-# INLINE slope #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @spacing@ attribute.
---
-spacing :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-spacing = attribute "spacing" " spacing=\""
-{-# INLINE spacing #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @specularConstant@ attribute.
---
-specularconstant :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-specularconstant = attribute "specularConstant" " specularConstant=\""
-{-# INLINE specularconstant #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @specularExponent@ attribute.
---
-specularexponent :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-specularexponent = attribute "specularExponent" " specularExponent=\""
-{-# INLINE specularexponent #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @spreadMethod@ attribute.
---
-spreadmethod :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-spreadmethod = attribute "spreadMethod" " spreadMethod=\""
-{-# INLINE spreadmethod #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @startOffset@ attribute.
---
-startoffset :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-startoffset = attribute "startOffset" " startOffset=\""
-{-# INLINE startoffset #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stdDeviation@ attribute.
---
-stddeviation :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-stddeviation = attribute "stdDeviation" " stdDeviation=\""
-{-# INLINE stddeviation #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stemh@ attribute.
---
-stemh :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-stemh = attribute "stemh" " stemh=\""
-{-# INLINE stemh #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stemv@ attribute.
---
-stemv :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-stemv = attribute "stemv" " stemv=\""
-{-# INLINE stemv #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stitchTiles@ attribute.
---
-stitchtiles :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-stitchtiles = attribute "stitchTiles" " stitchTiles=\""
-{-# INLINE stitchtiles #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stop-color@ attribute.
---
-stopColor :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-stopColor = attribute "stop-color" " stop-color=\""
-{-# INLINE stopColor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stop-opacity@ attribute.
---
-stopOpacity :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-stopOpacity = attribute "stop-opacity" " stop-opacity=\""
-{-# INLINE stopOpacity #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @strikethrough-position@ attribute.
---
-strikethroughPosition :: AttributeValue  -- ^ Attribute value.
-                      -> Attribute       -- ^ Resulting attribute.
-strikethroughPosition = attribute "strikethrough-position" " strikethrough-position=\""
-{-# INLINE strikethroughPosition #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @strikethrough-thickness@ attribute.
---
-strikethroughThickness :: AttributeValue  -- ^ Attribute value.
-                       -> Attribute       -- ^ Resulting attribute.
-strikethroughThickness = attribute "strikethrough-thickness" " strikethrough-thickness=\""
-{-# INLINE strikethroughThickness #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @string@ attribute.
---
-string :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-string = attribute "string" " string=\""
-{-# INLINE string #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke@ attribute.
---
-stroke :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-stroke = attribute "stroke" " stroke=\""
-{-# INLINE stroke #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-dasharray@ attribute.
---
-strokeDasharray :: AttributeValue  -- ^ Attribute value.
-                -> Attribute       -- ^ Resulting attribute.
-strokeDasharray = attribute "stroke-dasharray" " stroke-dasharray=\""
-{-# INLINE strokeDasharray #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-dashoffset@ attribute.
---
-strokeDashoffset :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-strokeDashoffset = attribute "stroke-dashoffset" " stroke-dashoffset=\""
-{-# INLINE strokeDashoffset #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-linecap@ attribute.
---
-strokeLinecap :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-strokeLinecap = attribute "stroke-linecap" " stroke-linecap=\""
-{-# INLINE strokeLinecap #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-linejoin@ attribute.
---
-strokeLinejoin :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-strokeLinejoin = attribute "stroke-linejoin" " stroke-linejoin=\""
-{-# INLINE strokeLinejoin #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-miterlimit@ attribute.
---
-strokeMiterlimit :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-strokeMiterlimit = attribute "stroke-miterlimit" " stroke-miterlimit=\""
-{-# INLINE strokeMiterlimit #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-opacity@ attribute.
---
-strokeOpacity :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-strokeOpacity = attribute "stroke-opacity" " stroke-opacity=\""
-{-# INLINE strokeOpacity #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @stroke-width@ attribute.
---
-strokeWidth :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-strokeWidth = attribute "stroke-width" " stroke-width=\""
-{-# INLINE strokeWidth #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @style@ attribute.
---
-style :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-style = attribute "style" " style=\""
-{-# INLINE style #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @surfaceScale@ attribute.
---
-surfacescale :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-surfacescale = attribute "surfaceScale" " surfaceScale=\""
-{-# INLINE surfacescale #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @systemLanguage@ attribute.
---
-systemlanguage :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-systemlanguage = attribute "systemLanguage" " systemLanguage=\""
-{-# INLINE systemlanguage #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @tableValues@ attribute.
---
-tablevalues :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-tablevalues = attribute "tableValues" " tableValues=\""
-{-# INLINE tablevalues #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @target@ attribute.
---
-target :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-target = attribute "target" " target=\""
-{-# INLINE target #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @targetX@ attribute.
---
-targetx :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-targetx = attribute "targetX" " targetX=\""
-{-# INLINE targetx #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @targetY@ attribute.
---
-targety :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-targety = attribute "targetY" " targetY=\""
-{-# INLINE targety #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @text-anchor@ attribute.
---
-textAnchor :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-textAnchor = attribute "text-anchor" " text-anchor=\""
-{-# INLINE textAnchor #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @text-decoration@ attribute.
---
-textDecoration :: AttributeValue  -- ^ Attribute value.
-               -> Attribute       -- ^ Resulting attribute.
-textDecoration = attribute "text-decoration" " text-decoration=\""
-{-# INLINE textDecoration #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @text-rendering@ attribute.
---
-textRendering :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-textRendering = attribute "text-rendering" " text-rendering=\""
-{-# INLINE textRendering #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @textLength@ attribute.
---
-textlength :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-textlength = attribute "textLength" " textLength=\""
-{-# INLINE textlength #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @title@ attribute.
---
-title :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-title = attribute "title" " title=\""
-{-# INLINE title #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @to@ attribute.
---
-to :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-to = attribute "to" " to=\""
-{-# INLINE to #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @transform@ attribute.
---
-transform :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-transform = attribute "transform" " transform=\""
-{-# INLINE transform #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @type@ attribute.
---
-type_ :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-type_ = attribute "type" " type=\""
-{-# INLINE type_ #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @u1@ attribute.
---
-u1 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-u1 = attribute "u1" " u1=\""
-{-# INLINE u1 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @u2@ attribute.
---
-u2 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-u2 = attribute "u2" " u2=\""
-{-# INLINE u2 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @underline-position@ attribute.
---
-underlinePosition :: AttributeValue  -- ^ Attribute value.
-                  -> Attribute       -- ^ Resulting attribute.
-underlinePosition = attribute "underline-position" " underline-position=\""
-{-# INLINE underlinePosition #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @underline-thickness@ attribute.
---
-underlineThickness :: AttributeValue  -- ^ Attribute value.
-                   -> Attribute       -- ^ Resulting attribute.
-underlineThickness = attribute "underline-thickness" " underline-thickness=\""
-{-# INLINE underlineThickness #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @unicode@ attribute.
---
-unicode :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-unicode = attribute "unicode" " unicode=\""
-{-# INLINE unicode #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @unicode-bidi@ attribute.
---
-unicodeBidi :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-unicodeBidi = attribute "unicode-bidi" " unicode-bidi=\""
-{-# INLINE unicodeBidi #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @unicode-range@ attribute.
---
-unicodeRange :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-unicodeRange = attribute "unicode-range" " unicode-range=\""
-{-# INLINE unicodeRange #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @units-per-em@ attribute.
---
-unitsPerEm :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-unitsPerEm = attribute "units-per-em" " units-per-em=\""
-{-# INLINE unitsPerEm #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @v-alphabetic@ attribute.
---
-vAlphabetic :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-vAlphabetic = attribute "v-alphabetic" " v-alphabetic=\""
-{-# INLINE vAlphabetic #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @v-hanging@ attribute.
---
-vHanging :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-vHanging = attribute "v-hanging" " v-hanging=\""
-{-# INLINE vHanging #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @v-ideographic@ attribute.
---
-vIdeographic :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-vIdeographic = attribute "v-ideographic" " v-ideographic=\""
-{-# INLINE vIdeographic #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @v-mathematical@ attribute.
---
-vMathematical :: AttributeValue  -- ^ Attribute value.
-              -> Attribute       -- ^ Resulting attribute.
-vMathematical = attribute "v-mathematical" " v-mathematical=\""
-{-# INLINE vMathematical #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @values@ attribute.
---
-values :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-values = attribute "values" " values=\""
-{-# INLINE values #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @version@ attribute.
---
-version :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-version = attribute "version" " version=\""
-{-# INLINE version #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @vert-adv-y@ attribute.
---
-vertAdvY :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-vertAdvY = attribute "vert-adv-y" " vert-adv-y=\""
-{-# INLINE vertAdvY #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @vert-origin-x@ attribute.
---
-vertOriginX :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-vertOriginX = attribute "vert-origin-x" " vert-origin-x=\""
-{-# INLINE vertOriginX #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @vert-origin-y@ attribute.
---
-vertOriginY :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-vertOriginY = attribute "vert-origin-y" " vert-origin-y=\""
-{-# INLINE vertOriginY #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @viewBox@ attribute.
---
-viewbox :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-viewbox = attribute "viewBox" " viewBox=\""
-{-# INLINE viewbox #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @viewTarget@ attribute.
---
-viewtarget :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-viewtarget = attribute "viewTarget" " viewTarget=\""
-{-# INLINE viewtarget #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @visibility@ attribute.
---
-visibility :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-visibility = attribute "visibility" " visibility=\""
-{-# INLINE visibility #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @width@ attribute.
---
-width :: AttributeValue  -- ^ Attribute value.
-      -> Attribute       -- ^ Resulting attribute.
-width = attribute "width" " width=\""
-{-# INLINE width #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @widths@ attribute.
---
-widths :: AttributeValue  -- ^ Attribute value.
-       -> Attribute       -- ^ Resulting attribute.
-widths = attribute "widths" " widths=\""
-{-# INLINE widths #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @word-spacing@ attribute.
---
-wordSpacing :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-wordSpacing = attribute "word-spacing" " word-spacing=\""
-{-# INLINE wordSpacing #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @writing-mode@ attribute.
---
-writingMode :: AttributeValue  -- ^ Attribute value.
-            -> Attribute       -- ^ Resulting attribute.
-writingMode = attribute "writing-mode" " writing-mode=\""
-{-# INLINE writingMode #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @x@ attribute.
---
-x :: AttributeValue  -- ^ Attribute value.
-  -> Attribute       -- ^ Resulting attribute.
-x = attribute "x" " x=\""
-{-# INLINE x #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @x-height@ attribute.
---
-xHeight :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-xHeight = attribute "x-height" " x-height=\""
-{-# INLINE xHeight #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @x1@ attribute.
---
-x1 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-x1 = attribute "x1" " x1=\""
-{-# INLINE x1 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @x2@ attribute.
---
-x2 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-x2 = attribute "x2" " x2=\""
-{-# INLINE x2 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xChannelSelector@ attribute.
---
-xchannelselector :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-xchannelselector = attribute "xChannelSelector" " xChannelSelector=\""
-{-# INLINE xchannelselector #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:actuate@ attribute.
---
-xlinkActuate :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-xlinkActuate = attribute "xlink:actuate" " xlink:actuate=\""
-{-# INLINE xlinkActuate #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:arcrole@ attribute.
---
-xlinkArcrole :: AttributeValue  -- ^ Attribute value.
-             -> Attribute       -- ^ Resulting attribute.
-xlinkArcrole = attribute "xlink:arcrole" " xlink:arcrole=\""
-{-# INLINE xlinkArcrole #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:href@ attribute.
---
-xlinkHref :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-xlinkHref = attribute "xlink:href" " xlink:href=\""
-{-# INLINE xlinkHref #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:role@ attribute.
---
-xlinkRole :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-xlinkRole = attribute "xlink:role" " xlink:role=\""
-{-# INLINE xlinkRole #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:show@ attribute.
---
-xlinkShow :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-xlinkShow = attribute "xlink:show" " xlink:show=\""
-{-# INLINE xlinkShow #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:title@ attribute.
---
-xlinkTitle :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-xlinkTitle = attribute "xlink:title" " xlink:title=\""
-{-# INLINE xlinkTitle #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xlink:type@ attribute.
---
-xlinkType :: AttributeValue  -- ^ Attribute value.
-          -> Attribute       -- ^ Resulting attribute.
-xlinkType = attribute "xlink:type" " xlink:type=\""
-{-# INLINE xlinkType #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xml:base@ attribute.
---
-xmlBase :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-xmlBase = attribute "xml:base" " xml:base=\""
-{-# INLINE xmlBase #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xml:lang@ attribute.
---
-xmlLang :: AttributeValue  -- ^ Attribute value.
-        -> Attribute       -- ^ Resulting attribute.
-xmlLang = attribute "xml:lang" " xml:lang=\""
-{-# INLINE xmlLang #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @xml:space@ attribute.
---
-xmlSpace :: AttributeValue  -- ^ Attribute value.
-         -> Attribute       -- ^ Resulting attribute.
-xmlSpace = attribute "xml:space" " xml:space=\""
-{-# INLINE xmlSpace #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @y@ attribute.
---
-y :: AttributeValue  -- ^ Attribute value.
-  -> Attribute       -- ^ Resulting attribute.
-y = attribute "y" " y=\""
-{-# INLINE y #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @y1@ attribute.
---
-y1 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-y1 = attribute "y1" " y1=\""
-{-# INLINE y1 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @y2@ attribute.
---
-y2 :: AttributeValue  -- ^ Attribute value.
-   -> Attribute       -- ^ Resulting attribute.
-y2 = attribute "y2" " y2=\""
-{-# INLINE y2 #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @yChannelSelector@ attribute.
---
-ychannelselector :: AttributeValue  -- ^ Attribute value.
-                 -> Attribute       -- ^ Resulting attribute.
-ychannelselector = attribute "yChannelSelector" " yChannelSelector=\""
-{-# INLINE ychannelselector #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @z@ attribute.
---
-z :: AttributeValue  -- ^ Attribute value.
-  -> Attribute       -- ^ Resulting attribute.
-z = attribute "z" " z=\""
-{-# INLINE z #-}
-
--- WARNING: The next block of code was automatically generated by
--- Util/GenerateSvgCombinators.hs:222
---
--- | Combinator for the @zoomAndPan@ attribute.
---
-zoomandpan :: AttributeValue  -- ^ Attribute value.
-           -> Attribute       -- ^ Resulting attribute.
-zoomandpan = attribute "zoomAndPan" " zoomAndPan=\""
-{-# INLINE zoomandpan #-}
diff --git a/Util/GenerateSvgCombinators.hs b/Util/GenerateSvgCombinators.hs
deleted file mode 100644
--- a/Util/GenerateSvgCombinators.hs
+++ /dev/null
@@ -1,329 +0,0 @@
-{-# LANGUAGE CPP #-}
-
-#define DO_NOT_EDIT (doNotEdit __FILE__ __LINE__)
-
--- | Generates code for SVG tags.
---
-module Util.GenerateSvgCombinators where
-
-import Control.Arrow ((&&&))
-import Data.List (sort, sortBy, intersperse, intercalate)
-import Data.Ord (comparing)
-import System.Directory (createDirectoryIfMissing)
-import System.FilePath ((</>), (<.>))
-import Data.Map (Map)
-import qualified Data.Map as M
-import Data.Char (toLower)
-import qualified Data.Set as S
-
-import Util.Sanitize (sanitize, prelude)
-
--- | Datatype for an SVG variant.
---
-data SvgVariant = SvgVariant
-    { version     :: [String]
-    , docType     :: [String]
-    , parents     :: [String]
-    , leafs       :: [String]
-    , attributes  :: [String]
-    , selfClosing :: Bool
-    } deriving (Eq)
-
-instance Show SvgVariant where
-    show = map toLower . intercalate "-" . version
-
--- | Get the full module name for an SVG variant.
---
-getModuleName :: SvgVariant -> String
-getModuleName = ("Text.Blaze." ++) . intercalate "." . version
-
--- | Get the attribute module name for an SVG variant.
---
-getAttributeModuleName :: SvgVariant -> String
-getAttributeModuleName = (++ ".Attributes") . getModuleName
-
--- | Check if a given name causes a name clash.
---
-isNameClash :: SvgVariant -> String -> Bool
-isNameClash v t
-    -- Both an element and an attribute
-    | (t `elem` parents v || t `elem` leafs v) && t `elem` attributes v = True
-    -- Already a prelude function
-    | sanitize t `S.member` prelude = True
-    | otherwise = False
-
--- | Write an SVG variant.
---
-writeSvgVariant :: SvgVariant -> IO ()
-writeSvgVariant svgVariant = do
-    -- Make a directory.
-    createDirectoryIfMissing True basePath
-
-    let tags =  zip parents' (repeat makeParent)
-             ++ zip leafs' (repeat (makeLeaf $ selfClosing svgVariant))
-        sortedTags = sortBy (comparing fst) tags
-        appliedTags = map (\(x, f) -> f x) sortedTags
-
-    -- Write the main module.
-    writeFile' (basePath <.> "hs") $ removeTrailingNewlines $ unlines
-        [ DO_NOT_EDIT
-        , "{-# LANGUAGE OverloadedStrings #-}"
-        , "-- | This module exports SVG combinators used to create documents."
-        , "--"
-        , exportList modulName $ "module Text.Blaze"
-                                : "module Text.Blaze.Svg"
-                                : "docType"
-                                : "docTypeSvg"
-                                : map (sanitize . fst) sortedTags
-        , DO_NOT_EDIT
-        , "import Prelude ((>>), (.), ($))"
-        , ""
-        , "import Text.Blaze"
-        , "import Text.Blaze.Svg"
-        , "import Text.Blaze.Internal"
-        , ""
-        , makeDocType $ docType svgVariant
-        , makeDocTypeSvg $ docType svgVariant
-        , unlines appliedTags
-        ]
-
-    let sortedAttributes = sort attributes'
-
-    -- Write the attribute module.
-    writeFile' (basePath </> "Attributes.hs") $ removeTrailingNewlines $ unlines
-        [ DO_NOT_EDIT
-        , "-- | This module exports combinators that provide you with the"
-        , "-- ability to set attributes on SVG elements."
-        , "--"
-        , "{-# LANGUAGE OverloadedStrings #-}"
-        , exportList attributeModuleName $ map sanitize sortedAttributes
-        , DO_NOT_EDIT
-        , "import Prelude ()"
-        , ""
-        , "import Text.Blaze.Internal (Attribute, AttributeValue, attribute)"
-        , ""
-        , unlines (map makeAttribute sortedAttributes)
-        ]
-  where
-    basePath = "Text" </> "Blaze" </> foldl1 (</>) version'
-    modulName = getModuleName svgVariant
-    attributeModuleName = getAttributeModuleName svgVariant
-    attributes' = attributes svgVariant
-    parents'    = parents svgVariant
-    leafs'      = leafs svgVariant
-    version'    = version svgVariant
-    removeTrailingNewlines = reverse . drop 2 . reverse
-    writeFile' file content = do
-        putStrLn ("Generating " ++ file)
-        writeFile file content
-
--- | Create a string, consisting of @x@ spaces, where @x@ is the length of the
--- argument.
---
-spaces :: String -> String
-spaces = flip replicate ' ' . length
-
--- | Join blocks of code with a newline in between.
---
-unblocks :: [String] -> String
-unblocks = unlines . intersperse "\n"
-
--- | A warning to not edit the generated code.
---
-doNotEdit :: FilePath -> Int -> String
-doNotEdit fileName lineNumber = init $ unlines
-    [ "-- WARNING: The next block of code was automatically generated by"
-    , "-- " ++ fileName ++ ":" ++ show lineNumber
-    , "--"
-    ]
-
--- | Generate an export list for a Haskell module.
---
-exportList :: String   -- ^ Module name.
-           -> [String] -- ^ List of functions.
-           -> String   -- ^ Resulting string.
-exportList _    []            = error "exportList without functions."
-exportList name (f:functions) = unlines $
-    [ "module " ++ name
-    , "    ( " ++ f
-    ] ++
-    map ("    , " ++) functions ++
-    [ "    ) where"]
-
--- | Generate a function for a doctype.
---
-makeDocType :: [String] -> String
-makeDocType lines' = unlines
-    [ DO_NOT_EDIT
-    , "-- | Combinator for the document type. This should be placed at the top"
-    , "-- of every SVG page."
-    , "--"
-    , unlines (map ("-- > " ++) lines') ++ "--"
-    , "docType :: Svg  -- ^ The document type SVG."
-    , "docType = preEscapedText " ++ show (unlines lines')
-    , "{-# INLINE docType #-}"
-    ]
-
--- | Generate a function for the SVG tag (including the doctype).
---
-makeDocTypeSvg :: [String]  -- ^ The doctype.
-                -> String    -- ^ Resulting combinator function.
-makeDocTypeSvg lines' = unlines
-    [ DO_NOT_EDIT
-    , "-- | Combinator for the @\\<svg>@ element. This combinator will also"
-    , "-- insert the correct doctype."
-    , "--"
-    , unlines (map ("-- > " ++) lines') ++ "-- > <svg><span>foo</span></svg>"
-    , "--"
-    , "docTypeSvg :: Svg  -- ^ Inner SVG."
-    , "            -> Svg  -- ^ Resulting SVG."
-    , "docTypeSvg inner = docType >> (svg ! attribute \"xmlns\" \" xmlns=\\\"\" \"http://www.w3.org/2000/svg\" ! attribute \"xmlns:xlink\" \" xmlns:xlink=\\\"\" \"http://www.w3.org/1999/xlink\"  $ inner)"
-    , "{-# INLINE docTypeSvg #-}"
-    ]
-
--- | Generate a function for an SVG tag that can be a parent.
---
-makeParent :: String -> String
-makeParent tag = unlines
-    [ DO_NOT_EDIT
-    , "-- | Combinator for the @\\<" ++ tag ++ ">@ element."
-    , "--"
-    , function        ++ " :: Svg  -- ^ Inner SVG."
-    , spaces function ++ " -> Svg  -- ^ Resulting SVG."
-    , function        ++ " = Parent \"" ++ tag ++ "\" \"<" ++ tag
-                      ++ "\" \"</" ++ tag ++ ">\"" ++ modifier
-    , "{-# INLINE " ++ function ++ " #-}"
-    ]
-  where
-    function = sanitize tag
-    modifier = if tag `elem` ["style", "script"] then " . external" else ""
-
--- | Generate a function for an SVG tag that must be a leaf.
---
-makeLeaf :: Bool    -- ^ Make leaf tags self-closing
-         -> String  -- ^ Tag for the combinator
-         -> String  -- ^ Combinator code
-makeLeaf closing tag = unlines
-    [ DO_NOT_EDIT
-    , "-- | Combinator for the @\\<" ++ tag ++ " />@ element."
-    , "--"
-    , function ++ " :: Svg  -- ^ Resulting SVG."
-    , function ++ " = Leaf \"" ++ tag ++ "\" \"<" ++ tag ++ "\" " ++ "\""
-               ++ (if closing then " /" else "") ++ ">\""
-    , "{-# INLINE " ++ function ++ " #-}"
-    ]
-  where
-    function = sanitize tag
-
--- | Generate a function for an SVG attribute.
---
-makeAttribute :: String -> String
-makeAttribute name = unlines
-    [ DO_NOT_EDIT
-    , "-- | Combinator for the @" ++ name ++ "@ attribute."
-    , "--"
-    , function        ++ " :: AttributeValue  -- ^ Attribute value."
-    , spaces function ++ " -> Attribute       -- ^ Resulting attribute."
-    , function        ++ " = attribute \"" ++ name ++ "\" \" "
-                      ++ name ++ "=\\\"\""
-    , "{-# INLINE " ++ function ++ " #-}"
-    ]
-  where
-    function = sanitize name
-
--- | SVG 1.1
--- Reference: https://developer.mozilla.org/en/SVG
---
-svg11 :: SvgVariant
-svg11 = SvgVariant
-    { version = ["Svg11"]
-    , docType =
-        [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-        , "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""
-        , "    \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"
-        ]
-    , parents =
-        [ "a","defs","glyph","g","marker","mask","missing-glyph","pattern", "svg"
-        , "switch", "symbol", "linearGradient", "radialGradient"
-        ]
-    , leafs =
-        [ "altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor"
-        , "animateMotion", "animateTransform", "circle", "clipPath"
-        , "color-profile" , "cursor", "desc", "ellipse", "feBlend"
-        , "feColorMatrix", "feComponentTransfer" , "feComposite"
-        , "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap"
-        , "feDistantLight", "feFlood", "feFuncA", "feFuncB" , "feFuncG"
-        , "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode"
-        , "feMorphology", "feOffset", "fePointLight", "feSpecularLighting"
-        , "feSpotLight" , "feTile", "feTurbulence", "filter", "font"
-        , "font-face", "font-face-format" , "font-face-name", "font-face-src"
-        , "font-face-uri", "foreignObject" , "glyphRef", "hkern", "image"
-        , "line", "metadata", "mpath", "path"
-        , "polygon" , "polyline", "rect", "script", "set"
-        , "stop", "style" , "text", "textPath", "title", "tref", "tspan", "use"
-        , "view", "vkern"
-        ]
-    , attributes =
-        [ "accent-height", "accumulate", "additive", "alphabetic", "amplitude"
-        , "arabic-form", "ascent", "attributeName", "attributeType", "azimuth"
-        , "baseFrequency", "baseProfile", "bbox", "begin", "bias", "by", "calcMode"
-        , "cap-height", "class", "clipPathUnits", "contentScriptType"
-        , "contentStyleType", "cx", "cy", "d", "descent", "diffuseConstant", "divisor"
-        , "dur", "dx", "dy", "edgeMode", "elevation", "end", "exponent"
-        , "externalResourcesRequired", "fill", "filterRes", "filterUnits", "font-family"
-        , "font-size", "font-stretch", "font-style", "font-variant", "font-weight"
-        , "format", "from", "fx", "fy", "g1", "g2", "glyph-name", "glyphRef"
-        , "gradientTransform", "gradientUnits", "hanging", "height", "horiz-adv-x"
-        , "horiz-origin-x", "horiz-origin-y", "id", "ideographic", "in", "in2"
-        , "intercept", "k", "k1", "k2", "k3", "k4", "kernelMatrix", "kernelUnitLength"
-        , "keyPoints", "keySplines", "keyTimes", "lang", "lengthAdjust"
-        , "limitingConeAngle", "local", "markerHeight", "markerUnits", "markerWidth"
-        , "maskContentUnits", "maskUnits", "mathematical", "max", "media", "method"
-        , "min", "mode", "name", "numOctaves", "offset", "onabort", "onactivate"
-        , "onbegin", "onclick", "onend", "onerror", "onfocusin", "onfocusout", "onload"
-        , "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup"
-        , "onrepeat", "onresize", "onscroll", "onunload", "onzoom", "operator", "order"
-        , "orient", "orientation", "origin", "overline-position", "overline-thickness"
-        , "panose-1", "path", "pathLength", "patternContentUnits", "patternTransform"
-        , "patternUnits", "points", "pointsAtX", "pointsAtY", "pointsAtZ"
-        , "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "r", "radius"
-        , "refX", "refY", "rendering-intent", "repeatCount", "repeatDur"
-        , "requiredExtensions", "requiredFeatures", "restart", "result", "rotate", "rx"
-        , "ry", "scale", "seed", "slope", "spacing", "specularConstant"
-        , "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stemh"
-        , "stemv", "stitchTiles", "strikethrough-position", "strikethrough-thickness"
-        , "string", "style", "surfaceScale", "systemLanguage", "tableValues", "target"
-        , "targetX", "targetY", "textLength", "title", "to", "transform", "type", "u1"
-        , "u2", "underline-position", "underline-thickness", "unicode", "unicode-range"
-        , "units-per-em", "v-alphabetic", "v-hanging", "v-ideographic", "v-mathematical"
-        , "values", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "viewBox"
-        , "viewTarget", "width", "widths", "x", "x-height", "x1", "x2"
-        , "xChannelSelector", "xlink:actuate", "xlink:arcrole", "xlink:href"
-        , "xlink:role", "xlink:show", "xlink:title", "xlink:type", "xml:base"
-        , "xml:lang", "xml:space", "y", "y1", "y2", "yChannelSelector", "z", "zoomAndPan"
-        -- Presentation Attributes
-        , "alignment-baseline", "baseline-shift", "clip-path", "clip-rule"
-        , "clip", "color-interpolation-filters", "color-interpolation"
-        , "color-profile", "color-rendering", "color", "cursor", "direction"
-        , "display", "dominant-baseline", "enable-background", "fill-opacity"
-        , "fill-rule", "filter", "flood-color", "flood-opacity"
-        , "font-size-adjust", "glyph-orientation-horizontal"
-        , "glyph-orientation-vertical", "image-rendering", "kerning", "letter-spacing"
-        , "lighting-color", "marker-end", "marker-mid", "marker-start", "mask"
-        , "opacity", "overflow", "pointer-events", "shape-rendering", "stop-color"
-        , "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap"
-        , "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width"
-        , "stroke", "text-anchor", "text-decoration", "text-rendering", "unicode-bidi"
-        , "visibility", "word-spacing", "writing-mode"
-        ]
-    , selfClosing = True
-    }
-
--- | A map of SVG variants, per version, lowercase.
---
-svgVariants :: Map String SvgVariant
-svgVariants = M.fromList $ map (show &&& id)
-    [ svg11 ]
-
-main :: IO ()
-main = mapM_ (writeSvgVariant . snd) $ M.toList svgVariants
diff --git a/Util/Sanitize.hs b/Util/Sanitize.hs
deleted file mode 100644
--- a/Util/Sanitize.hs
+++ /dev/null
@@ -1,78 +0,0 @@
--- | A program to sanitize an HTML tag to a Haskell function.
---
-module Util.Sanitize
-    ( sanitize
-    , keywords
-    , prelude
-    ) where
-
-import Data.Char (toLower, toUpper)
-import Data.Set (Set)
-import qualified Data.Set as S
-
--- | Sanitize a tag. This function returns a name that can be used as
--- combinator in haskell source code.
---
--- Examples:
---
--- > sanitize "class" == "class_"
--- > sanitize "http-equiv" == "httpEquiv"
---
-sanitize :: String -> String
-sanitize = appendUnderscore . removeDashOrColon . map toLower
-  where
-    -- Remove a dash, replacing it by camelcase notation
-    --
-    -- Example:
-    --
-    -- > removeDashOrColon "foo-bar" == "fooBar"
-    --
-    removeDashOrColon ('-' : x : xs) = toUpper x : removeDashOrColon xs
-    removeDashOrColon (':' : x : xs) = toUpper x : removeDashOrColon xs
-    removeDashOrColon (x : xs) = x : removeDashOrColon xs
-    removeDashOrColon [] = []
-
-    appendUnderscore t | t `S.member` keywords = t ++ "_"
-                       | t `S.member` prelude  = t ++ "_"
-                       | otherwise             = t
-
--- | A set of standard Haskell keywords, which cannot be used as combinators.
---
-keywords :: Set String
-keywords = S.fromList
-    [ "case", "class", "data", "default", "deriving", "do", "else", "if"
-    , "import", "in", "infix", "infixl", "infixr", "instance" , "let", "module"
-    , "newtype", "of", "then", "type", "where"
-    ]
-
--- | Set of functions from the Prelude, which we do not use as combinators.
---
-prelude :: Set String
-prelude = S.fromList
-    [ "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf"
-    , "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling"
-    , "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", "cycle"
-    , "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", "elem"
-    , "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", "enumFromTo"
-    , "error", "even", "exp", "exponent", "fail", "filter", "flip"
-    , "floatDigits", "floatRadix", "floatRange", "floor", "fmap", "foldl"
-    , "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", "fromIntegral"
-    , "fromRational", "fst", "gcd", "getChar", "getContents", "getLine", "head"
-    , "id", "init", "interact", "ioError", "isDenormalized", "isIEEE"
-    , "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", "lcm"
-    , "length", "lex", "lines", "log", "logBase", "lookup", "map", "mapM"
-    , "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound"
-    , "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or"
-    , "otherwise", "pi", "pred", "print", "product", "properFraction", "putChar"
-    , "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", "readIO"
-    , "readList", "readLn", "readParen", "reads", "readsPrec", "realToFrac"
-    , "recip", "rem", "repeat", "replicate", "return", "reverse", "round"
-    , "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", "sequence"
-    , "sequence_", "show", "showChar", "showList", "showParen", "showString"
-    , "shows", "showsPrec", "significand", "signum", "sin", "sinh", "snd"
-    , "span", "splitAt", "sqrt", "subtract", "succ", "sum", "tail", "take"
-    , "takeWhile", "tan", "tanh", "toEnum", "toInteger", "toRational"
-    , "truncate", "text", "uncurry", "undefined", "unlines", "until", "unwords", "unzip"
-    , "unzip3", "userError", "words", "writeFile", "zip", "zip3", "zipWith"
-    , "zipWith3"
-    ]
diff --git a/blaze-svg.cabal b/blaze-svg.cabal
--- a/blaze-svg.cabal
+++ b/blaze-svg.cabal
@@ -1,7 +1,6 @@
 name:                blaze-svg
-version:             0.3.0.0
+version:             0.3.0.1
 synopsis:            SVG combinator library
-description:         SVG combinator library
 homepage:            https://github.com/deepakjois/blaze-svg
 license:             BSD3
 license-file:        LICENSE
@@ -9,13 +8,29 @@
 maintainer:          deepak.jois@gmail.com
 category:            Graphics
 build-type:          Simple
-cabal-version:       >=1.6
+cabal-version:       >=1.8
+description:
+  A blazingly fast SVG combinator library for the Haskell
+  programming language. The "Text.Blaze.SVG" module is a good
+  starting point.
+  .
+  Other documentation:
+  .
+  * Programs in the /examples/ folder of this project: <https://github.com/deepakjois/blaze-svg/tree/master/examples/>
+  .
+  * Jasper Van Der Jeugt has written  tutorial below is for /blaze-html/,
+    which is a sister library of /blaze-svg/, but gives a good overview
+    on how to use the  combinators in "Text.Blaze.Svg11" and
+    "Text.Blaze.Svg11.Attributes":
+    <http://jaspervdj.be/blaze/tutorial.html>.
 
 Extra-source-files:
-  Util/Sanitize.hs
-  Util/GenerateSvgCombinators.hs
+  src/Util/Sanitize.hs
+  src/Util/GenerateSvgCombinators.hs
+  examples/*.hs
 
 Library
+  Hs-Source-Dirs: src
   Ghc-Options:       -Wall
 
   Exposed-modules:
@@ -28,12 +43,10 @@
     Text.Blaze.Svg.Renderer.Text
     Text.Blaze.Svg.Renderer.Utf8
 
-
   Build-depends:
     base            >= 4  && < 5,
     mtl             >= 2  && < 3,
     blaze-markup    >= 0.5 && < 0.6
-
 
 Source-repository head
   Type:     git
diff --git a/examples/Example.hs b/examples/Example.hs
new file mode 100644
--- /dev/null
+++ b/examples/Example.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+import Text.Blaze.Svg11 ((!), mkPath, rotate, l, m)
+import qualified Text.Blaze.Svg11 as S
+import qualified Text.Blaze.Svg11.Attributes as A
+import Text.Blaze.Svg.Renderer.String (renderSvg)
+
+main :: IO ()
+main = do
+  let a = renderSvg svgDoc
+  putStrLn a
+
+svgDoc :: S.Svg
+svgDoc = S.docTypeSvg ! A.version "1.1" ! A.width "150" ! A.height "100" ! A.viewbox "0 0 3 2" $ do
+    S.g ! A.transform makeTransform $ do
+      S.rect ! A.width "1" ! A.height "2" ! A.fill "#008d46"
+      S.rect ! A.width "1" ! A.height "2" ! A.fill "#ffffff"
+      S.rect ! A.width "1" ! A.height "2" ! A.fill "#d2232c"
+      S.path ! A.d makePath
+
+makePath :: S.AttributeValue
+makePath = mkPath $ do
+  l 2 3
+  m 4 5
+
+makeTransform :: S.AttributeValue
+makeTransform = rotate 50
diff --git a/src/Text/Blaze/Svg.hs b/src/Text/Blaze/Svg.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE OverloadedStrings #-}
+module Text.Blaze.Svg
+    (
+      Svg
+    , Path
+    -- * SVG Path combinators
+    , mkPath
+    -- ** \"moveto\" commands
+    , m, mr
+    -- ** \"closepath\" command
+    , z
+    -- ** \"lineto\" commands
+    , l, lr, h, hr, v, vr
+    -- ** The cubic Bézier curve commands   
+    , c, cr, s, sr
+    -- ** The quadratic Bézier curve commands
+    , q, qr, t, tr
+    -- * SVG Transform combinators
+    , translate, rotate, scale
+    , skewX, skewY
+    , matrix
+    ) where
+
+import Text.Blaze.Svg.Internal
diff --git a/src/Text/Blaze/Svg/Internal.hs b/src/Text/Blaze/Svg/Internal.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg/Internal.hs
@@ -0,0 +1,249 @@
+{-# OPTIONS_HADDOCK hide #-}
+module Text.Blaze.Svg.Internal where
+
+import Control.Monad.State
+import Data.Monoid (mappend, mempty)
+
+import Text.Blaze
+
+-- | Type to represent an SVG document fragment.
+type Svg = Markup
+
+-- | Type to accumulate an SVG path.
+type Path = State AttributeValue ()
+
+-- | Construct SVG path values using path instruction combinators.
+-- See simple example below of how you can use @mkPath@ to
+-- specify a path using the path instruction combinators
+-- that are included as part of the same module.
+--
+-- More information available at: <http://www.w3.org/TR/SVG/paths.html>
+--
+-- > import Text.Blaze.Svg11 ((!), mkPath, l, m)
+-- > import qualified Text.Blaze.Svg11 as S
+-- > import qualified Text.Blaze.Svg11.Attributes as A
+-- >
+-- > svgDoc :: S.Svg
+-- > svgDoc = S.docTypeSvg ! A.version "1.1" ! A.width "150" ! A.height "100" $ do
+-- >  path ! d makeSimplePath
+-- >
+-- > makeSimplePath :: S.AttributeValue
+-- > makeSimplePath =  mkPath do
+-- >   l 2 3
+-- >   m 4 5
+mkPath :: Path -> AttributeValue
+mkPath path = snd $ runState path mempty
+
+appendToPath :: [String] -> Path
+appendToPath  = modify . flip mappend . toValue . join
+
+-- | Moveto
+m :: Show a => a -> a -> Path
+m x y = appendToPath
+  [ "M "
+  , show x, ",", show y
+  , " "
+  ]
+
+-- | Moveto (relative)
+mr :: Show a => a -> a -> Path
+mr dx dy = appendToPath
+  [ "m "
+  , show dx, ",", show dy
+  , " "
+  ]
+
+-- | ClosePath
+z :: Path
+z = modify (`mappend` toValue "Z")
+
+-- | Lineto
+l :: Show a => a -> a -> Path
+l x y = appendToPath
+  [ "L "
+  , show x, ",", show y
+  , " "
+  ]
+
+-- | Lineto (relative)
+lr :: Show a => a -> a -> Path
+lr dx dy = appendToPath
+  [ "l "
+  , show dx, ",", show dy
+  , " "
+  ]
+
+-- | Horizontal lineto
+h :: Show a => a -> Path
+h x = appendToPath
+  [ "H "
+  , show x
+  , " "
+  ]
+
+-- | Horizontal lineto (relative)
+hr :: Show a => a -> Path
+hr dx = appendToPath
+  [ "h "
+  , show dx
+  , " "
+  ]
+
+
+-- | Vertical lineto
+v :: Show a => a -> Path
+v y = appendToPath
+  [ "V "
+  , show y
+  , " "
+  ]
+
+-- | Vertical lineto (relative)
+vr :: Show a => a -> Path
+vr dy = appendToPath
+  [ "v "
+  , show dy
+  , " "
+  ]
+
+-- | Cubic Bezier curve
+c :: Show a => a -> a -> a -> a -> a -> a -> Path
+c c1x c1y c2x c2y x y = appendToPath
+  [ "C "
+  , show c1x, ",", show c1y
+  , " "
+  , show c2x, ",", show c2y
+  , " "
+  , show x, " ", show y
+  ]
+
+-- | Cubic Bezier curve (relative)
+cr :: Show a => a -> a -> a -> a -> a -> a -> Path
+cr dc1x dc1y dc2x dc2y dx dy = appendToPath
+  [ "c "
+  , show dc1x, ",", show dc1y
+  , " "
+  , show dc2x, ",", show dc2y
+  , " "
+  , show dx, " ", show dy
+  ]
+
+-- | Smooth Cubic Bezier curve
+s :: Show a => a -> a -> a -> a -> Path
+s c2x c2y x y = appendToPath
+  [ "S "
+  , show c2x, ",", show c2y
+  , " "
+  , show x, ",", show y
+  , " "
+  ]
+
+-- | Smooth Cubic Bezier curve (relative)
+sr :: Show a => a -> a -> a -> a -> Path
+sr dc2x dc2y dx dy = appendToPath
+  [ "s "
+  , show dc2x, ",", show dc2y
+  , " "
+  , show dx, ",", show dy
+  , " "
+  ]
+
+-- | Quadratic Bezier curve
+q :: Show a => a -> a -> a -> a -> Path
+q cx cy x y = appendToPath
+  [ "Q "
+  , show cx, ",", show cy
+  , " "
+  , show x, ",", show y
+  , " "
+  ]
+
+-- | Quadratic Bezier curve (relative)
+qr :: Show a => a -> a -> a -> a  -> Path
+qr dcx dcy dx dy = appendToPath
+  [ "q "
+  , show dcx, ",", show dcy
+  , " "
+  , show dx, ",", show dy
+  , " "
+  ]
+
+-- | Smooth Quadratic Bezier curve
+t  :: Show a => a -> a -> Path
+t x y = appendToPath
+  [ "T "
+  , " "
+  , show x, ",", show y
+  , " "
+  ]
+
+-- | Smooth Quadratic Bezier curve (relative)
+tr :: Show a => a -> a -> Path
+tr x y = appendToPath
+  [ "t "
+  , " "
+  , show x, ",", show y
+  , " "
+  ]
+
+-- | Specifies a translation by @x@ and @y@
+translate :: Show a => a -> a -> AttributeValue
+translate x y = toValue . join $
+  [ "translate("
+  , show x, " ", show y
+  , ")"
+  ]
+
+-- | Specifies a scale operation by @x@ and @y@
+scale :: Show a => a -> a -> AttributeValue
+scale x y = toValue . join $
+  [ "scale("
+  , show x, " ", show y
+  , ")"
+  ]
+
+-- | Specifies a rotation by @rotate-angle@ degrees
+rotate :: Show a => a -> AttributeValue
+rotate rotateAngle = toValue . join $
+  [ "rotate("
+  , show rotateAngle
+  , ")"
+  ]
+
+-- | Specifies a rotation by @rotate-angle@ degrees about the given time @rx,ry@
+rotateAround :: Show a => a -> a -> a -> AttributeValue
+rotateAround rotateAngle rx ry = toValue . join $
+  [ "rotate("
+  , show rotateAngle, ","
+  , show rx, ",", show ry
+  , ")"
+  ]
+
+-- | Skew tansformation along x-axis
+skewX :: Show a => a -> AttributeValue
+skewX skewAngle = toValue . join $
+  [ "skewX("
+  , show skewAngle
+  , ")"
+  ]
+
+-- | Skew tansformation along y-axis
+skewY :: Show a => a -> AttributeValue
+skewY skewAngle = toValue . join $
+  [ "skewY("
+  , show skewAngle
+  , ")"
+  ]
+
+-- | Specifies a transform in the form of a transformation matrix
+matrix :: Show a => a -> a -> a -> a -> a -> a -> AttributeValue
+matrix a b c_ d e f =  toValue . join $
+  [  "matrix("
+  ,  show a, ","
+  ,  show b, ","
+  ,  show c_, ","
+  ,  show d, ","
+  ,  show e, ","
+  ,  show f
+  , ")"
+  ]
diff --git a/src/Text/Blaze/Svg/Renderer/Pretty.hs b/src/Text/Blaze/Svg/Renderer/Pretty.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg/Renderer/Pretty.hs
@@ -0,0 +1,10 @@
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+-- | A renderer that produces pretty SVG, mostly meant for debugging purposes.
+--
+module Text.Blaze.Svg.Renderer.Pretty
+    ( renderSvg
+    ) where
+
+import Text.Blaze.Renderer.Pretty (renderMarkup)
+
+renderSvg = renderMarkup
diff --git a/src/Text/Blaze/Svg/Renderer/String.hs b/src/Text/Blaze/Svg/Renderer/String.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg/Renderer/String.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+-- | A renderer that produces a native Haskell 'String', mostly meant for
+-- debugging purposes.
+--
+module Text.Blaze.Svg.Renderer.String
+    ( renderSvg
+    ) where
+
+import Text.Blaze.Renderer.String (renderMarkup)
+
+renderSvg = renderMarkup
diff --git a/src/Text/Blaze/Svg/Renderer/Text.hs b/src/Text/Blaze/Svg/Renderer/Text.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg/Renderer/Text.hs
@@ -0,0 +1,10 @@
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+-- | A renderer that produces a lazy 'Text' value, using the Text Builder.
+--
+module Text.Blaze.Svg.Renderer.Text
+    ( renderSvg
+    ) where
+
+import Text.Blaze.Renderer.Text (renderMarkup)
+
+renderSvg = renderMarkup
diff --git a/src/Text/Blaze/Svg/Renderer/Utf8.hs b/src/Text/Blaze/Svg/Renderer/Utf8.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg/Renderer/Utf8.hs
@@ -0,0 +1,8 @@
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+module Text.Blaze.Svg.Renderer.Utf8
+    ( renderSvg
+    ) where
+
+import Text.Blaze.Renderer.Utf8 (renderMarkup)
+
+renderSvg = renderMarkup
diff --git a/src/Text/Blaze/Svg11.hs b/src/Text/Blaze/Svg11.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg11.hs
@@ -0,0 +1,859 @@
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:69
+--
+{-# LANGUAGE OverloadedStrings #-}
+-- | This module exports SVG combinators used to create documents.
+--
+module Text.Blaze.Svg11
+    ( module Text.Blaze
+    , module Text.Blaze.Svg
+    , docType
+    , docTypeSvg
+    , a
+    , altglyph
+    , altglyphdef
+    , altglyphitem
+    , animate
+    , animatecolor
+    , animatemotion
+    , animatetransform
+    , circle
+    , clippath
+    , colorProfile
+    , cursor
+    , defs
+    , desc
+    , ellipse
+    , feblend
+    , fecolormatrix
+    , fecomponenttransfer
+    , fecomposite
+    , feconvolvematrix
+    , fediffuselighting
+    , fedisplacementmap
+    , fedistantlight
+    , feflood
+    , fefunca
+    , fefuncb
+    , fefuncg
+    , fefuncr
+    , fegaussianblur
+    , feimage
+    , femerge
+    , femergenode
+    , femorphology
+    , feoffset
+    , fepointlight
+    , fespecularlighting
+    , fespotlight
+    , fetile
+    , feturbulence
+    , filter_
+    , font
+    , fontFace
+    , fontFaceFormat
+    , fontFaceName
+    , fontFaceSrc
+    , fontFaceUri
+    , foreignobject
+    , g
+    , glyph
+    , glyphref
+    , hkern
+    , image
+    , line
+    , lineargradient
+    , marker
+    , mask
+    , metadata
+    , missingGlyph
+    , mpath
+    , path
+    , pattern
+    , polygon
+    , polyline
+    , radialgradient
+    , rect
+    , script
+    , set
+    , stop
+    , style
+    , svg
+    , switch
+    , symbol
+    , text_
+    , textpath
+    , title
+    , tref
+    , tspan
+    , use
+    , view
+    , vkern
+    ) where
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:78
+--
+import Prelude ((>>), (.), ($))
+
+import Text.Blaze
+import Text.Blaze.Svg
+import Text.Blaze.Internal
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:157
+--
+-- | Combinator for the document type. This should be placed at the top
+-- of every SVG page.
+--
+-- > <?xml version="1.0" encoding="UTF-8"?>
+-- > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+-- >     "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+--
+docType :: Svg  -- ^ The document type SVG.
+docType = preEscapedText "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n    \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"
+{-# INLINE docType #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:172
+--
+-- | Combinator for the @\<svg>@ element. This combinator will also
+-- insert the correct doctype.
+--
+docTypeSvg :: Svg  -- ^ Inner SVG.
+            -> Svg  -- ^ Resulting SVG.
+docTypeSvg inner = docType >> (svg ! attribute "xmlns" " xmlns=\"" "http://www.w3.org/2000/svg" ! attribute "xmlns:xlink" " xmlns:xlink=\"" "http://www.w3.org/1999/xlink"  $ inner)
+{-# INLINE docTypeSvg #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<a>@ element.
+--
+a :: Svg  -- ^ Inner SVG.
+  -> Svg  -- ^ Resulting SVG.
+a = Parent "a" "<a" "</a>"
+{-# INLINE a #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<altGlyph />@ element.
+--
+altglyph :: Svg  -- ^ Resulting SVG.
+altglyph = Leaf "altGlyph" "<altGlyph" " />"
+{-# INLINE altglyph #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<altGlyphDef />@ element.
+--
+altglyphdef :: Svg  -- ^ Resulting SVG.
+altglyphdef = Leaf "altGlyphDef" "<altGlyphDef" " />"
+{-# INLINE altglyphdef #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<altGlyphItem />@ element.
+--
+altglyphitem :: Svg  -- ^ Resulting SVG.
+altglyphitem = Leaf "altGlyphItem" "<altGlyphItem" " />"
+{-# INLINE altglyphitem #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<animate />@ element.
+--
+animate :: Svg  -- ^ Resulting SVG.
+animate = Leaf "animate" "<animate" " />"
+{-# INLINE animate #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<animateColor />@ element.
+--
+animatecolor :: Svg  -- ^ Resulting SVG.
+animatecolor = Leaf "animateColor" "<animateColor" " />"
+{-# INLINE animatecolor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<animateMotion />@ element.
+--
+animatemotion :: Svg  -- ^ Resulting SVG.
+animatemotion = Leaf "animateMotion" "<animateMotion" " />"
+{-# INLINE animatemotion #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<animateTransform />@ element.
+--
+animatetransform :: Svg  -- ^ Resulting SVG.
+animatetransform = Leaf "animateTransform" "<animateTransform" " />"
+{-# INLINE animatetransform #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<circle />@ element.
+--
+circle :: Svg  -- ^ Resulting SVG.
+circle = Leaf "circle" "<circle" " />"
+{-# INLINE circle #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<clipPath />@ element.
+--
+clippath :: Svg  -- ^ Resulting SVG.
+clippath = Leaf "clipPath" "<clipPath" " />"
+{-# INLINE clippath #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<color-profile />@ element.
+--
+colorProfile :: Svg  -- ^ Resulting SVG.
+colorProfile = Leaf "color-profile" "<color-profile" " />"
+{-# INLINE colorProfile #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<cursor />@ element.
+--
+cursor :: Svg  -- ^ Resulting SVG.
+cursor = Leaf "cursor" "<cursor" " />"
+{-# INLINE cursor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<defs>@ element.
+--
+defs :: Svg  -- ^ Inner SVG.
+     -> Svg  -- ^ Resulting SVG.
+defs = Parent "defs" "<defs" "</defs>"
+{-# INLINE defs #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<desc />@ element.
+--
+desc :: Svg  -- ^ Resulting SVG.
+desc = Leaf "desc" "<desc" " />"
+{-# INLINE desc #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<ellipse />@ element.
+--
+ellipse :: Svg  -- ^ Resulting SVG.
+ellipse = Leaf "ellipse" "<ellipse" " />"
+{-# INLINE ellipse #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feBlend />@ element.
+--
+feblend :: Svg  -- ^ Resulting SVG.
+feblend = Leaf "feBlend" "<feBlend" " />"
+{-# INLINE feblend #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feColorMatrix />@ element.
+--
+fecolormatrix :: Svg  -- ^ Resulting SVG.
+fecolormatrix = Leaf "feColorMatrix" "<feColorMatrix" " />"
+{-# INLINE fecolormatrix #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feComponentTransfer />@ element.
+--
+fecomponenttransfer :: Svg  -- ^ Resulting SVG.
+fecomponenttransfer = Leaf "feComponentTransfer" "<feComponentTransfer" " />"
+{-# INLINE fecomponenttransfer #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feComposite />@ element.
+--
+fecomposite :: Svg  -- ^ Resulting SVG.
+fecomposite = Leaf "feComposite" "<feComposite" " />"
+{-# INLINE fecomposite #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feConvolveMatrix />@ element.
+--
+feconvolvematrix :: Svg  -- ^ Resulting SVG.
+feconvolvematrix = Leaf "feConvolveMatrix" "<feConvolveMatrix" " />"
+{-# INLINE feconvolvematrix #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feDiffuseLighting />@ element.
+--
+fediffuselighting :: Svg  -- ^ Resulting SVG.
+fediffuselighting = Leaf "feDiffuseLighting" "<feDiffuseLighting" " />"
+{-# INLINE fediffuselighting #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feDisplacementMap />@ element.
+--
+fedisplacementmap :: Svg  -- ^ Resulting SVG.
+fedisplacementmap = Leaf "feDisplacementMap" "<feDisplacementMap" " />"
+{-# INLINE fedisplacementmap #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feDistantLight />@ element.
+--
+fedistantlight :: Svg  -- ^ Resulting SVG.
+fedistantlight = Leaf "feDistantLight" "<feDistantLight" " />"
+{-# INLINE fedistantlight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feFlood />@ element.
+--
+feflood :: Svg  -- ^ Resulting SVG.
+feflood = Leaf "feFlood" "<feFlood" " />"
+{-# INLINE feflood #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feFuncA />@ element.
+--
+fefunca :: Svg  -- ^ Resulting SVG.
+fefunca = Leaf "feFuncA" "<feFuncA" " />"
+{-# INLINE fefunca #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feFuncB />@ element.
+--
+fefuncb :: Svg  -- ^ Resulting SVG.
+fefuncb = Leaf "feFuncB" "<feFuncB" " />"
+{-# INLINE fefuncb #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feFuncG />@ element.
+--
+fefuncg :: Svg  -- ^ Resulting SVG.
+fefuncg = Leaf "feFuncG" "<feFuncG" " />"
+{-# INLINE fefuncg #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feFuncR />@ element.
+--
+fefuncr :: Svg  -- ^ Resulting SVG.
+fefuncr = Leaf "feFuncR" "<feFuncR" " />"
+{-# INLINE fefuncr #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feGaussianBlur />@ element.
+--
+fegaussianblur :: Svg  -- ^ Resulting SVG.
+fegaussianblur = Leaf "feGaussianBlur" "<feGaussianBlur" " />"
+{-# INLINE fegaussianblur #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feImage />@ element.
+--
+feimage :: Svg  -- ^ Resulting SVG.
+feimage = Leaf "feImage" "<feImage" " />"
+{-# INLINE feimage #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feMerge />@ element.
+--
+femerge :: Svg  -- ^ Resulting SVG.
+femerge = Leaf "feMerge" "<feMerge" " />"
+{-# INLINE femerge #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feMergeNode />@ element.
+--
+femergenode :: Svg  -- ^ Resulting SVG.
+femergenode = Leaf "feMergeNode" "<feMergeNode" " />"
+{-# INLINE femergenode #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feMorphology />@ element.
+--
+femorphology :: Svg  -- ^ Resulting SVG.
+femorphology = Leaf "feMorphology" "<feMorphology" " />"
+{-# INLINE femorphology #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feOffset />@ element.
+--
+feoffset :: Svg  -- ^ Resulting SVG.
+feoffset = Leaf "feOffset" "<feOffset" " />"
+{-# INLINE feoffset #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<fePointLight />@ element.
+--
+fepointlight :: Svg  -- ^ Resulting SVG.
+fepointlight = Leaf "fePointLight" "<fePointLight" " />"
+{-# INLINE fepointlight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feSpecularLighting />@ element.
+--
+fespecularlighting :: Svg  -- ^ Resulting SVG.
+fespecularlighting = Leaf "feSpecularLighting" "<feSpecularLighting" " />"
+{-# INLINE fespecularlighting #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feSpotLight />@ element.
+--
+fespotlight :: Svg  -- ^ Resulting SVG.
+fespotlight = Leaf "feSpotLight" "<feSpotLight" " />"
+{-# INLINE fespotlight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feTile />@ element.
+--
+fetile :: Svg  -- ^ Resulting SVG.
+fetile = Leaf "feTile" "<feTile" " />"
+{-# INLINE fetile #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<feTurbulence />@ element.
+--
+feturbulence :: Svg  -- ^ Resulting SVG.
+feturbulence = Leaf "feTurbulence" "<feTurbulence" " />"
+{-# INLINE feturbulence #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<filter />@ element.
+--
+filter_ :: Svg  -- ^ Resulting SVG.
+filter_ = Leaf "filter" "<filter" " />"
+{-# INLINE filter_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<font />@ element.
+--
+font :: Svg  -- ^ Resulting SVG.
+font = Leaf "font" "<font" " />"
+{-# INLINE font #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<font-face />@ element.
+--
+fontFace :: Svg  -- ^ Resulting SVG.
+fontFace = Leaf "font-face" "<font-face" " />"
+{-# INLINE fontFace #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<font-face-format />@ element.
+--
+fontFaceFormat :: Svg  -- ^ Resulting SVG.
+fontFaceFormat = Leaf "font-face-format" "<font-face-format" " />"
+{-# INLINE fontFaceFormat #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<font-face-name />@ element.
+--
+fontFaceName :: Svg  -- ^ Resulting SVG.
+fontFaceName = Leaf "font-face-name" "<font-face-name" " />"
+{-# INLINE fontFaceName #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<font-face-src />@ element.
+--
+fontFaceSrc :: Svg  -- ^ Resulting SVG.
+fontFaceSrc = Leaf "font-face-src" "<font-face-src" " />"
+{-# INLINE fontFaceSrc #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<font-face-uri />@ element.
+--
+fontFaceUri :: Svg  -- ^ Resulting SVG.
+fontFaceUri = Leaf "font-face-uri" "<font-face-uri" " />"
+{-# INLINE fontFaceUri #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<foreignObject />@ element.
+--
+foreignobject :: Svg  -- ^ Resulting SVG.
+foreignobject = Leaf "foreignObject" "<foreignObject" " />"
+{-# INLINE foreignobject #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<g>@ element.
+--
+g :: Svg  -- ^ Inner SVG.
+  -> Svg  -- ^ Resulting SVG.
+g = Parent "g" "<g" "</g>"
+{-# INLINE g #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<glyph>@ element.
+--
+glyph :: Svg  -- ^ Inner SVG.
+      -> Svg  -- ^ Resulting SVG.
+glyph = Parent "glyph" "<glyph" "</glyph>"
+{-# INLINE glyph #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<glyphRef />@ element.
+--
+glyphref :: Svg  -- ^ Resulting SVG.
+glyphref = Leaf "glyphRef" "<glyphRef" " />"
+{-# INLINE glyphref #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<hkern />@ element.
+--
+hkern :: Svg  -- ^ Resulting SVG.
+hkern = Leaf "hkern" "<hkern" " />"
+{-# INLINE hkern #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<image />@ element.
+--
+image :: Svg  -- ^ Resulting SVG.
+image = Leaf "image" "<image" " />"
+{-# INLINE image #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<line />@ element.
+--
+line :: Svg  -- ^ Resulting SVG.
+line = Leaf "line" "<line" " />"
+{-# INLINE line #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<linearGradient>@ element.
+--
+lineargradient :: Svg  -- ^ Inner SVG.
+               -> Svg  -- ^ Resulting SVG.
+lineargradient = Parent "linearGradient" "<linearGradient" "</linearGradient>"
+{-# INLINE lineargradient #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<marker>@ element.
+--
+marker :: Svg  -- ^ Inner SVG.
+       -> Svg  -- ^ Resulting SVG.
+marker = Parent "marker" "<marker" "</marker>"
+{-# INLINE marker #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<mask>@ element.
+--
+mask :: Svg  -- ^ Inner SVG.
+     -> Svg  -- ^ Resulting SVG.
+mask = Parent "mask" "<mask" "</mask>"
+{-# INLINE mask #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<metadata />@ element.
+--
+metadata :: Svg  -- ^ Resulting SVG.
+metadata = Leaf "metadata" "<metadata" " />"
+{-# INLINE metadata #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<missing-glyph>@ element.
+--
+missingGlyph :: Svg  -- ^ Inner SVG.
+             -> Svg  -- ^ Resulting SVG.
+missingGlyph = Parent "missing-glyph" "<missing-glyph" "</missing-glyph>"
+{-# INLINE missingGlyph #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<mpath />@ element.
+--
+mpath :: Svg  -- ^ Resulting SVG.
+mpath = Leaf "mpath" "<mpath" " />"
+{-# INLINE mpath #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<path />@ element.
+--
+path :: Svg  -- ^ Resulting SVG.
+path = Leaf "path" "<path" " />"
+{-# INLINE path #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<pattern>@ element.
+--
+pattern :: Svg  -- ^ Inner SVG.
+        -> Svg  -- ^ Resulting SVG.
+pattern = Parent "pattern" "<pattern" "</pattern>"
+{-# INLINE pattern #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<polygon />@ element.
+--
+polygon :: Svg  -- ^ Resulting SVG.
+polygon = Leaf "polygon" "<polygon" " />"
+{-# INLINE polygon #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<polyline />@ element.
+--
+polyline :: Svg  -- ^ Resulting SVG.
+polyline = Leaf "polyline" "<polyline" " />"
+{-# INLINE polyline #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<radialGradient>@ element.
+--
+radialgradient :: Svg  -- ^ Inner SVG.
+               -> Svg  -- ^ Resulting SVG.
+radialgradient = Parent "radialGradient" "<radialGradient" "</radialGradient>"
+{-# INLINE radialgradient #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<rect />@ element.
+--
+rect :: Svg  -- ^ Resulting SVG.
+rect = Leaf "rect" "<rect" " />"
+{-# INLINE rect #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<script />@ element.
+--
+script :: Svg  -- ^ Resulting SVG.
+script = Leaf "script" "<script" " />"
+{-# INLINE script #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<set />@ element.
+--
+set :: Svg  -- ^ Resulting SVG.
+set = Leaf "set" "<set" " />"
+{-# INLINE set #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<stop />@ element.
+--
+stop :: Svg  -- ^ Resulting SVG.
+stop = Leaf "stop" "<stop" " />"
+{-# INLINE stop #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<style />@ element.
+--
+style :: Svg  -- ^ Resulting SVG.
+style = Leaf "style" "<style" " />"
+{-# INLINE style #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<svg>@ element.
+--
+svg :: Svg  -- ^ Inner SVG.
+    -> Svg  -- ^ Resulting SVG.
+svg = Parent "svg" "<svg" "</svg>"
+{-# INLINE svg #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<switch>@ element.
+--
+switch :: Svg  -- ^ Inner SVG.
+       -> Svg  -- ^ Resulting SVG.
+switch = Parent "switch" "<switch" "</switch>"
+{-# INLINE switch #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:186
+--
+-- | Combinator for the @\<symbol>@ element.
+--
+symbol :: Svg  -- ^ Inner SVG.
+       -> Svg  -- ^ Resulting SVG.
+symbol = Parent "symbol" "<symbol" "</symbol>"
+{-# INLINE symbol #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<text />@ element.
+--
+text_ :: Svg  -- ^ Resulting SVG.
+text_ = Leaf "text" "<text" " />"
+{-# INLINE text_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<textPath />@ element.
+--
+textpath :: Svg  -- ^ Resulting SVG.
+textpath = Leaf "textPath" "<textPath" " />"
+{-# INLINE textpath #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<title />@ element.
+--
+title :: Svg  -- ^ Resulting SVG.
+title = Leaf "title" "<title" " />"
+{-# INLINE title #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<tref />@ element.
+--
+tref :: Svg  -- ^ Resulting SVG.
+tref = Leaf "tref" "<tref" " />"
+{-# INLINE tref #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<tspan />@ element.
+--
+tspan :: Svg  -- ^ Resulting SVG.
+tspan = Leaf "tspan" "<tspan" " />"
+{-# INLINE tspan #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<use />@ element.
+--
+use :: Svg  -- ^ Resulting SVG.
+use = Leaf "use" "<use" " />"
+{-# INLINE use #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<view />@ element.
+--
+view :: Svg  -- ^ Resulting SVG.
+view = Leaf "view" "<view" " />"
+{-# INLINE view #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:205
+--
+-- | Combinator for the @\<vkern />@ element.
+--
+vkern :: Svg  -- ^ Resulting SVG.
+vkern = Leaf "vkern" "<vkern" " />"
+{-# INLINE vkern #-}
diff --git a/src/Text/Blaze/Svg11/Attributes.hs b/src/Text/Blaze/Svg11/Attributes.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Blaze/Svg11/Attributes.hs
@@ -0,0 +1,2942 @@
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:94
+--
+-- | This module exports combinators that provide you with the
+-- ability to set attributes on SVG elements.
+--
+{-# LANGUAGE OverloadedStrings #-}
+module Text.Blaze.Svg11.Attributes
+    ( accentHeight
+    , accumulate
+    , additive
+    , alignmentBaseline
+    , alphabetic
+    , amplitude
+    , arabicForm
+    , ascent
+    , attributename
+    , attributetype
+    , azimuth
+    , basefrequency
+    , baseprofile
+    , baselineShift
+    , bbox
+    , begin
+    , bias
+    , by
+    , calcmode
+    , capHeight
+    , class_
+    , clip
+    , clipPath
+    , clipRule
+    , clippathunits
+    , color
+    , colorInterpolation
+    , colorInterpolationFilters
+    , colorProfile
+    , colorRendering
+    , contentscripttype
+    , contentstyletype
+    , cursor
+    , cx
+    , cy
+    , d
+    , descent
+    , diffuseconstant
+    , direction
+    , display
+    , divisor
+    , dominantBaseline
+    , dur
+    , dx
+    , dy
+    , edgemode
+    , elevation
+    , enableBackground
+    , end
+    , exponent_
+    , externalresourcesrequired
+    , fill
+    , fillOpacity
+    , fillRule
+    , filter_
+    , filterres
+    , filterunits
+    , floodColor
+    , floodOpacity
+    , fontFamily
+    , fontSize
+    , fontSizeAdjust
+    , fontStretch
+    , fontStyle
+    , fontVariant
+    , fontWeight
+    , format
+    , from
+    , fx
+    , fy
+    , g1
+    , g2
+    , glyphName
+    , glyphOrientationHorizontal
+    , glyphOrientationVertical
+    , glyphref
+    , gradienttransform
+    , gradientunits
+    , hanging
+    , height
+    , horizAdvX
+    , horizOriginX
+    , horizOriginY
+    , id_
+    , ideographic
+    , imageRendering
+    , in_
+    , in2
+    , intercept
+    , k
+    , k1
+    , k2
+    , k3
+    , k4
+    , kernelmatrix
+    , kernelunitlength
+    , kerning
+    , keypoints
+    , keysplines
+    , keytimes
+    , lang
+    , lengthadjust
+    , letterSpacing
+    , lightingColor
+    , limitingconeangle
+    , local
+    , markerEnd
+    , markerMid
+    , markerStart
+    , markerheight
+    , markerunits
+    , markerwidth
+    , mask
+    , maskcontentunits
+    , maskunits
+    , mathematical
+    , max_
+    , media
+    , method
+    , min_
+    , mode
+    , name
+    , numoctaves
+    , offset
+    , onabort
+    , onactivate
+    , onbegin
+    , onclick
+    , onend
+    , onerror
+    , onfocusin
+    , onfocusout
+    , onload
+    , onmousedown
+    , onmousemove
+    , onmouseout
+    , onmouseover
+    , onmouseup
+    , onrepeat
+    , onresize
+    , onscroll
+    , onunload
+    , onzoom
+    , opacity
+    , operator
+    , order
+    , orient
+    , orientation
+    , origin
+    , overflow
+    , overlinePosition
+    , overlineThickness
+    , panose1
+    , path
+    , pathlength
+    , patterncontentunits
+    , patterntransform
+    , patternunits
+    , pointerEvents
+    , points
+    , pointsatx
+    , pointsaty
+    , pointsatz
+    , preservealpha
+    , preserveaspectratio
+    , primitiveunits
+    , r
+    , radius
+    , refx
+    , refy
+    , renderingIntent
+    , repeatcount
+    , repeatdur
+    , requiredextensions
+    , requiredfeatures
+    , restart
+    , result
+    , rotate
+    , rx
+    , ry
+    , scale
+    , seed
+    , shapeRendering
+    , slope
+    , spacing
+    , specularconstant
+    , specularexponent
+    , spreadmethod
+    , startoffset
+    , stddeviation
+    , stemh
+    , stemv
+    , stitchtiles
+    , stopColor
+    , stopOpacity
+    , strikethroughPosition
+    , strikethroughThickness
+    , string
+    , stroke
+    , strokeDasharray
+    , strokeDashoffset
+    , strokeLinecap
+    , strokeLinejoin
+    , strokeMiterlimit
+    , strokeOpacity
+    , strokeWidth
+    , style
+    , surfacescale
+    , systemlanguage
+    , tablevalues
+    , target
+    , targetx
+    , targety
+    , textAnchor
+    , textDecoration
+    , textRendering
+    , textlength
+    , title
+    , to
+    , transform
+    , type_
+    , u1
+    , u2
+    , underlinePosition
+    , underlineThickness
+    , unicode
+    , unicodeBidi
+    , unicodeRange
+    , unitsPerEm
+    , vAlphabetic
+    , vHanging
+    , vIdeographic
+    , vMathematical
+    , values
+    , version
+    , vertAdvY
+    , vertOriginX
+    , vertOriginY
+    , viewbox
+    , viewtarget
+    , visibility
+    , width
+    , widths
+    , wordSpacing
+    , writingMode
+    , x
+    , xHeight
+    , x1
+    , x2
+    , xchannelselector
+    , xlinkActuate
+    , xlinkArcrole
+    , xlinkHref
+    , xlinkRole
+    , xlinkShow
+    , xlinkTitle
+    , xlinkType
+    , xmlBase
+    , xmlLang
+    , xmlSpace
+    , y
+    , y1
+    , y2
+    , ychannelselector
+    , z
+    , zoomandpan
+    ) where
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:100
+--
+import Prelude ()
+
+import Text.Blaze.Internal (Attribute, AttributeValue, attribute)
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @accent-height@ attribute.
+--
+accentHeight :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+accentHeight = attribute "accent-height" " accent-height=\""
+{-# INLINE accentHeight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @accumulate@ attribute.
+--
+accumulate :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+accumulate = attribute "accumulate" " accumulate=\""
+{-# INLINE accumulate #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @additive@ attribute.
+--
+additive :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+additive = attribute "additive" " additive=\""
+{-# INLINE additive #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @alignment-baseline@ attribute.
+--
+alignmentBaseline :: AttributeValue  -- ^ Attribute value.
+                  -> Attribute       -- ^ Resulting attribute.
+alignmentBaseline = attribute "alignment-baseline" " alignment-baseline=\""
+{-# INLINE alignmentBaseline #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @alphabetic@ attribute.
+--
+alphabetic :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+alphabetic = attribute "alphabetic" " alphabetic=\""
+{-# INLINE alphabetic #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @amplitude@ attribute.
+--
+amplitude :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+amplitude = attribute "amplitude" " amplitude=\""
+{-# INLINE amplitude #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @arabic-form@ attribute.
+--
+arabicForm :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+arabicForm = attribute "arabic-form" " arabic-form=\""
+{-# INLINE arabicForm #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @ascent@ attribute.
+--
+ascent :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+ascent = attribute "ascent" " ascent=\""
+{-# INLINE ascent #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @attributeName@ attribute.
+--
+attributename :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+attributename = attribute "attributeName" " attributeName=\""
+{-# INLINE attributename #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @attributeType@ attribute.
+--
+attributetype :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+attributetype = attribute "attributeType" " attributeType=\""
+{-# INLINE attributetype #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @azimuth@ attribute.
+--
+azimuth :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+azimuth = attribute "azimuth" " azimuth=\""
+{-# INLINE azimuth #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @baseFrequency@ attribute.
+--
+basefrequency :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+basefrequency = attribute "baseFrequency" " baseFrequency=\""
+{-# INLINE basefrequency #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @baseProfile@ attribute.
+--
+baseprofile :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+baseprofile = attribute "baseProfile" " baseProfile=\""
+{-# INLINE baseprofile #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @baseline-shift@ attribute.
+--
+baselineShift :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+baselineShift = attribute "baseline-shift" " baseline-shift=\""
+{-# INLINE baselineShift #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @bbox@ attribute.
+--
+bbox :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+bbox = attribute "bbox" " bbox=\""
+{-# INLINE bbox #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @begin@ attribute.
+--
+begin :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+begin = attribute "begin" " begin=\""
+{-# INLINE begin #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @bias@ attribute.
+--
+bias :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+bias = attribute "bias" " bias=\""
+{-# INLINE bias #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @by@ attribute.
+--
+by :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+by = attribute "by" " by=\""
+{-# INLINE by #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @calcMode@ attribute.
+--
+calcmode :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+calcmode = attribute "calcMode" " calcMode=\""
+{-# INLINE calcmode #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @cap-height@ attribute.
+--
+capHeight :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+capHeight = attribute "cap-height" " cap-height=\""
+{-# INLINE capHeight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @class@ attribute.
+--
+class_ :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+class_ = attribute "class" " class=\""
+{-# INLINE class_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @clip@ attribute.
+--
+clip :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+clip = attribute "clip" " clip=\""
+{-# INLINE clip #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @clip-path@ attribute.
+--
+clipPath :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+clipPath = attribute "clip-path" " clip-path=\""
+{-# INLINE clipPath #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @clip-rule@ attribute.
+--
+clipRule :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+clipRule = attribute "clip-rule" " clip-rule=\""
+{-# INLINE clipRule #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @clipPathUnits@ attribute.
+--
+clippathunits :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+clippathunits = attribute "clipPathUnits" " clipPathUnits=\""
+{-# INLINE clippathunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @color@ attribute.
+--
+color :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+color = attribute "color" " color=\""
+{-# INLINE color #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @color-interpolation@ attribute.
+--
+colorInterpolation :: AttributeValue  -- ^ Attribute value.
+                   -> Attribute       -- ^ Resulting attribute.
+colorInterpolation = attribute "color-interpolation" " color-interpolation=\""
+{-# INLINE colorInterpolation #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @color-interpolation-filters@ attribute.
+--
+colorInterpolationFilters :: AttributeValue  -- ^ Attribute value.
+                          -> Attribute       -- ^ Resulting attribute.
+colorInterpolationFilters = attribute "color-interpolation-filters" " color-interpolation-filters=\""
+{-# INLINE colorInterpolationFilters #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @color-profile@ attribute.
+--
+colorProfile :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+colorProfile = attribute "color-profile" " color-profile=\""
+{-# INLINE colorProfile #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @color-rendering@ attribute.
+--
+colorRendering :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+colorRendering = attribute "color-rendering" " color-rendering=\""
+{-# INLINE colorRendering #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @contentScriptType@ attribute.
+--
+contentscripttype :: AttributeValue  -- ^ Attribute value.
+                  -> Attribute       -- ^ Resulting attribute.
+contentscripttype = attribute "contentScriptType" " contentScriptType=\""
+{-# INLINE contentscripttype #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @contentStyleType@ attribute.
+--
+contentstyletype :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+contentstyletype = attribute "contentStyleType" " contentStyleType=\""
+{-# INLINE contentstyletype #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @cursor@ attribute.
+--
+cursor :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+cursor = attribute "cursor" " cursor=\""
+{-# INLINE cursor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @cx@ attribute.
+--
+cx :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+cx = attribute "cx" " cx=\""
+{-# INLINE cx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @cy@ attribute.
+--
+cy :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+cy = attribute "cy" " cy=\""
+{-# INLINE cy #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @d@ attribute.
+--
+d :: AttributeValue  -- ^ Attribute value.
+  -> Attribute       -- ^ Resulting attribute.
+d = attribute "d" " d=\""
+{-# INLINE d #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @descent@ attribute.
+--
+descent :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+descent = attribute "descent" " descent=\""
+{-# INLINE descent #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @diffuseConstant@ attribute.
+--
+diffuseconstant :: AttributeValue  -- ^ Attribute value.
+                -> Attribute       -- ^ Resulting attribute.
+diffuseconstant = attribute "diffuseConstant" " diffuseConstant=\""
+{-# INLINE diffuseconstant #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @direction@ attribute.
+--
+direction :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+direction = attribute "direction" " direction=\""
+{-# INLINE direction #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @display@ attribute.
+--
+display :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+display = attribute "display" " display=\""
+{-# INLINE display #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @divisor@ attribute.
+--
+divisor :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+divisor = attribute "divisor" " divisor=\""
+{-# INLINE divisor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @dominant-baseline@ attribute.
+--
+dominantBaseline :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+dominantBaseline = attribute "dominant-baseline" " dominant-baseline=\""
+{-# INLINE dominantBaseline #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @dur@ attribute.
+--
+dur :: AttributeValue  -- ^ Attribute value.
+    -> Attribute       -- ^ Resulting attribute.
+dur = attribute "dur" " dur=\""
+{-# INLINE dur #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @dx@ attribute.
+--
+dx :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+dx = attribute "dx" " dx=\""
+{-# INLINE dx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @dy@ attribute.
+--
+dy :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+dy = attribute "dy" " dy=\""
+{-# INLINE dy #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @edgeMode@ attribute.
+--
+edgemode :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+edgemode = attribute "edgeMode" " edgeMode=\""
+{-# INLINE edgemode #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @elevation@ attribute.
+--
+elevation :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+elevation = attribute "elevation" " elevation=\""
+{-# INLINE elevation #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @enable-background@ attribute.
+--
+enableBackground :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+enableBackground = attribute "enable-background" " enable-background=\""
+{-# INLINE enableBackground #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @end@ attribute.
+--
+end :: AttributeValue  -- ^ Attribute value.
+    -> Attribute       -- ^ Resulting attribute.
+end = attribute "end" " end=\""
+{-# INLINE end #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @exponent@ attribute.
+--
+exponent_ :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+exponent_ = attribute "exponent" " exponent=\""
+{-# INLINE exponent_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @externalResourcesRequired@ attribute.
+--
+externalresourcesrequired :: AttributeValue  -- ^ Attribute value.
+                          -> Attribute       -- ^ Resulting attribute.
+externalresourcesrequired = attribute "externalResourcesRequired" " externalResourcesRequired=\""
+{-# INLINE externalresourcesrequired #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @fill@ attribute.
+--
+fill :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+fill = attribute "fill" " fill=\""
+{-# INLINE fill #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @fill-opacity@ attribute.
+--
+fillOpacity :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+fillOpacity = attribute "fill-opacity" " fill-opacity=\""
+{-# INLINE fillOpacity #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @fill-rule@ attribute.
+--
+fillRule :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+fillRule = attribute "fill-rule" " fill-rule=\""
+{-# INLINE fillRule #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @filter@ attribute.
+--
+filter_ :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+filter_ = attribute "filter" " filter=\""
+{-# INLINE filter_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @filterRes@ attribute.
+--
+filterres :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+filterres = attribute "filterRes" " filterRes=\""
+{-# INLINE filterres #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @filterUnits@ attribute.
+--
+filterunits :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+filterunits = attribute "filterUnits" " filterUnits=\""
+{-# INLINE filterunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @flood-color@ attribute.
+--
+floodColor :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+floodColor = attribute "flood-color" " flood-color=\""
+{-# INLINE floodColor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @flood-opacity@ attribute.
+--
+floodOpacity :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+floodOpacity = attribute "flood-opacity" " flood-opacity=\""
+{-# INLINE floodOpacity #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-family@ attribute.
+--
+fontFamily :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+fontFamily = attribute "font-family" " font-family=\""
+{-# INLINE fontFamily #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-size@ attribute.
+--
+fontSize :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+fontSize = attribute "font-size" " font-size=\""
+{-# INLINE fontSize #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-size-adjust@ attribute.
+--
+fontSizeAdjust :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+fontSizeAdjust = attribute "font-size-adjust" " font-size-adjust=\""
+{-# INLINE fontSizeAdjust #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-stretch@ attribute.
+--
+fontStretch :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+fontStretch = attribute "font-stretch" " font-stretch=\""
+{-# INLINE fontStretch #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-style@ attribute.
+--
+fontStyle :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+fontStyle = attribute "font-style" " font-style=\""
+{-# INLINE fontStyle #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-variant@ attribute.
+--
+fontVariant :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+fontVariant = attribute "font-variant" " font-variant=\""
+{-# INLINE fontVariant #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @font-weight@ attribute.
+--
+fontWeight :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+fontWeight = attribute "font-weight" " font-weight=\""
+{-# INLINE fontWeight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @format@ attribute.
+--
+format :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+format = attribute "format" " format=\""
+{-# INLINE format #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @from@ attribute.
+--
+from :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+from = attribute "from" " from=\""
+{-# INLINE from #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @fx@ attribute.
+--
+fx :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+fx = attribute "fx" " fx=\""
+{-# INLINE fx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @fy@ attribute.
+--
+fy :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+fy = attribute "fy" " fy=\""
+{-# INLINE fy #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @g1@ attribute.
+--
+g1 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+g1 = attribute "g1" " g1=\""
+{-# INLINE g1 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @g2@ attribute.
+--
+g2 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+g2 = attribute "g2" " g2=\""
+{-# INLINE g2 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @glyph-name@ attribute.
+--
+glyphName :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+glyphName = attribute "glyph-name" " glyph-name=\""
+{-# INLINE glyphName #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @glyph-orientation-horizontal@ attribute.
+--
+glyphOrientationHorizontal :: AttributeValue  -- ^ Attribute value.
+                           -> Attribute       -- ^ Resulting attribute.
+glyphOrientationHorizontal = attribute "glyph-orientation-horizontal" " glyph-orientation-horizontal=\""
+{-# INLINE glyphOrientationHorizontal #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @glyph-orientation-vertical@ attribute.
+--
+glyphOrientationVertical :: AttributeValue  -- ^ Attribute value.
+                         -> Attribute       -- ^ Resulting attribute.
+glyphOrientationVertical = attribute "glyph-orientation-vertical" " glyph-orientation-vertical=\""
+{-# INLINE glyphOrientationVertical #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @glyphRef@ attribute.
+--
+glyphref :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+glyphref = attribute "glyphRef" " glyphRef=\""
+{-# INLINE glyphref #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @gradientTransform@ attribute.
+--
+gradienttransform :: AttributeValue  -- ^ Attribute value.
+                  -> Attribute       -- ^ Resulting attribute.
+gradienttransform = attribute "gradientTransform" " gradientTransform=\""
+{-# INLINE gradienttransform #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @gradientUnits@ attribute.
+--
+gradientunits :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+gradientunits = attribute "gradientUnits" " gradientUnits=\""
+{-# INLINE gradientunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @hanging@ attribute.
+--
+hanging :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+hanging = attribute "hanging" " hanging=\""
+{-# INLINE hanging #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @height@ attribute.
+--
+height :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+height = attribute "height" " height=\""
+{-# INLINE height #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @horiz-adv-x@ attribute.
+--
+horizAdvX :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+horizAdvX = attribute "horiz-adv-x" " horiz-adv-x=\""
+{-# INLINE horizAdvX #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @horiz-origin-x@ attribute.
+--
+horizOriginX :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+horizOriginX = attribute "horiz-origin-x" " horiz-origin-x=\""
+{-# INLINE horizOriginX #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @horiz-origin-y@ attribute.
+--
+horizOriginY :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+horizOriginY = attribute "horiz-origin-y" " horiz-origin-y=\""
+{-# INLINE horizOriginY #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @id@ attribute.
+--
+id_ :: AttributeValue  -- ^ Attribute value.
+    -> Attribute       -- ^ Resulting attribute.
+id_ = attribute "id" " id=\""
+{-# INLINE id_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @ideographic@ attribute.
+--
+ideographic :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+ideographic = attribute "ideographic" " ideographic=\""
+{-# INLINE ideographic #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @image-rendering@ attribute.
+--
+imageRendering :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+imageRendering = attribute "image-rendering" " image-rendering=\""
+{-# INLINE imageRendering #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @in@ attribute.
+--
+in_ :: AttributeValue  -- ^ Attribute value.
+    -> Attribute       -- ^ Resulting attribute.
+in_ = attribute "in" " in=\""
+{-# INLINE in_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @in2@ attribute.
+--
+in2 :: AttributeValue  -- ^ Attribute value.
+    -> Attribute       -- ^ Resulting attribute.
+in2 = attribute "in2" " in2=\""
+{-# INLINE in2 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @intercept@ attribute.
+--
+intercept :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+intercept = attribute "intercept" " intercept=\""
+{-# INLINE intercept #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @k@ attribute.
+--
+k :: AttributeValue  -- ^ Attribute value.
+  -> Attribute       -- ^ Resulting attribute.
+k = attribute "k" " k=\""
+{-# INLINE k #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @k1@ attribute.
+--
+k1 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+k1 = attribute "k1" " k1=\""
+{-# INLINE k1 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @k2@ attribute.
+--
+k2 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+k2 = attribute "k2" " k2=\""
+{-# INLINE k2 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @k3@ attribute.
+--
+k3 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+k3 = attribute "k3" " k3=\""
+{-# INLINE k3 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @k4@ attribute.
+--
+k4 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+k4 = attribute "k4" " k4=\""
+{-# INLINE k4 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @kernelMatrix@ attribute.
+--
+kernelmatrix :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+kernelmatrix = attribute "kernelMatrix" " kernelMatrix=\""
+{-# INLINE kernelmatrix #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @kernelUnitLength@ attribute.
+--
+kernelunitlength :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+kernelunitlength = attribute "kernelUnitLength" " kernelUnitLength=\""
+{-# INLINE kernelunitlength #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @kerning@ attribute.
+--
+kerning :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+kerning = attribute "kerning" " kerning=\""
+{-# INLINE kerning #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @keyPoints@ attribute.
+--
+keypoints :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+keypoints = attribute "keyPoints" " keyPoints=\""
+{-# INLINE keypoints #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @keySplines@ attribute.
+--
+keysplines :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+keysplines = attribute "keySplines" " keySplines=\""
+{-# INLINE keysplines #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @keyTimes@ attribute.
+--
+keytimes :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+keytimes = attribute "keyTimes" " keyTimes=\""
+{-# INLINE keytimes #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @lang@ attribute.
+--
+lang :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+lang = attribute "lang" " lang=\""
+{-# INLINE lang #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @lengthAdjust@ attribute.
+--
+lengthadjust :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+lengthadjust = attribute "lengthAdjust" " lengthAdjust=\""
+{-# INLINE lengthadjust #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @letter-spacing@ attribute.
+--
+letterSpacing :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+letterSpacing = attribute "letter-spacing" " letter-spacing=\""
+{-# INLINE letterSpacing #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @lighting-color@ attribute.
+--
+lightingColor :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+lightingColor = attribute "lighting-color" " lighting-color=\""
+{-# INLINE lightingColor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @limitingConeAngle@ attribute.
+--
+limitingconeangle :: AttributeValue  -- ^ Attribute value.
+                  -> Attribute       -- ^ Resulting attribute.
+limitingconeangle = attribute "limitingConeAngle" " limitingConeAngle=\""
+{-# INLINE limitingconeangle #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @local@ attribute.
+--
+local :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+local = attribute "local" " local=\""
+{-# INLINE local #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @marker-end@ attribute.
+--
+markerEnd :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+markerEnd = attribute "marker-end" " marker-end=\""
+{-# INLINE markerEnd #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @marker-mid@ attribute.
+--
+markerMid :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+markerMid = attribute "marker-mid" " marker-mid=\""
+{-# INLINE markerMid #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @marker-start@ attribute.
+--
+markerStart :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+markerStart = attribute "marker-start" " marker-start=\""
+{-# INLINE markerStart #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @markerHeight@ attribute.
+--
+markerheight :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+markerheight = attribute "markerHeight" " markerHeight=\""
+{-# INLINE markerheight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @markerUnits@ attribute.
+--
+markerunits :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+markerunits = attribute "markerUnits" " markerUnits=\""
+{-# INLINE markerunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @markerWidth@ attribute.
+--
+markerwidth :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+markerwidth = attribute "markerWidth" " markerWidth=\""
+{-# INLINE markerwidth #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @mask@ attribute.
+--
+mask :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+mask = attribute "mask" " mask=\""
+{-# INLINE mask #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @maskContentUnits@ attribute.
+--
+maskcontentunits :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+maskcontentunits = attribute "maskContentUnits" " maskContentUnits=\""
+{-# INLINE maskcontentunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @maskUnits@ attribute.
+--
+maskunits :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+maskunits = attribute "maskUnits" " maskUnits=\""
+{-# INLINE maskunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @mathematical@ attribute.
+--
+mathematical :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+mathematical = attribute "mathematical" " mathematical=\""
+{-# INLINE mathematical #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @max@ attribute.
+--
+max_ :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+max_ = attribute "max" " max=\""
+{-# INLINE max_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @media@ attribute.
+--
+media :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+media = attribute "media" " media=\""
+{-# INLINE media #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @method@ attribute.
+--
+method :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+method = attribute "method" " method=\""
+{-# INLINE method #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @min@ attribute.
+--
+min_ :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+min_ = attribute "min" " min=\""
+{-# INLINE min_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @mode@ attribute.
+--
+mode :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+mode = attribute "mode" " mode=\""
+{-# INLINE mode #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @name@ attribute.
+--
+name :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+name = attribute "name" " name=\""
+{-# INLINE name #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @numOctaves@ attribute.
+--
+numoctaves :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+numoctaves = attribute "numOctaves" " numOctaves=\""
+{-# INLINE numoctaves #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @offset@ attribute.
+--
+offset :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+offset = attribute "offset" " offset=\""
+{-# INLINE offset #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onabort@ attribute.
+--
+onabort :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+onabort = attribute "onabort" " onabort=\""
+{-# INLINE onabort #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onactivate@ attribute.
+--
+onactivate :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+onactivate = attribute "onactivate" " onactivate=\""
+{-# INLINE onactivate #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onbegin@ attribute.
+--
+onbegin :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+onbegin = attribute "onbegin" " onbegin=\""
+{-# INLINE onbegin #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onclick@ attribute.
+--
+onclick :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+onclick = attribute "onclick" " onclick=\""
+{-# INLINE onclick #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onend@ attribute.
+--
+onend :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+onend = attribute "onend" " onend=\""
+{-# INLINE onend #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onerror@ attribute.
+--
+onerror :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+onerror = attribute "onerror" " onerror=\""
+{-# INLINE onerror #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onfocusin@ attribute.
+--
+onfocusin :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+onfocusin = attribute "onfocusin" " onfocusin=\""
+{-# INLINE onfocusin #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onfocusout@ attribute.
+--
+onfocusout :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+onfocusout = attribute "onfocusout" " onfocusout=\""
+{-# INLINE onfocusout #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onload@ attribute.
+--
+onload :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+onload = attribute "onload" " onload=\""
+{-# INLINE onload #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onmousedown@ attribute.
+--
+onmousedown :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+onmousedown = attribute "onmousedown" " onmousedown=\""
+{-# INLINE onmousedown #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onmousemove@ attribute.
+--
+onmousemove :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+onmousemove = attribute "onmousemove" " onmousemove=\""
+{-# INLINE onmousemove #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onmouseout@ attribute.
+--
+onmouseout :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+onmouseout = attribute "onmouseout" " onmouseout=\""
+{-# INLINE onmouseout #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onmouseover@ attribute.
+--
+onmouseover :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+onmouseover = attribute "onmouseover" " onmouseover=\""
+{-# INLINE onmouseover #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onmouseup@ attribute.
+--
+onmouseup :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+onmouseup = attribute "onmouseup" " onmouseup=\""
+{-# INLINE onmouseup #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onrepeat@ attribute.
+--
+onrepeat :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+onrepeat = attribute "onrepeat" " onrepeat=\""
+{-# INLINE onrepeat #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onresize@ attribute.
+--
+onresize :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+onresize = attribute "onresize" " onresize=\""
+{-# INLINE onresize #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onscroll@ attribute.
+--
+onscroll :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+onscroll = attribute "onscroll" " onscroll=\""
+{-# INLINE onscroll #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onunload@ attribute.
+--
+onunload :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+onunload = attribute "onunload" " onunload=\""
+{-# INLINE onunload #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @onzoom@ attribute.
+--
+onzoom :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+onzoom = attribute "onzoom" " onzoom=\""
+{-# INLINE onzoom #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @opacity@ attribute.
+--
+opacity :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+opacity = attribute "opacity" " opacity=\""
+{-# INLINE opacity #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @operator@ attribute.
+--
+operator :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+operator = attribute "operator" " operator=\""
+{-# INLINE operator #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @order@ attribute.
+--
+order :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+order = attribute "order" " order=\""
+{-# INLINE order #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @orient@ attribute.
+--
+orient :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+orient = attribute "orient" " orient=\""
+{-# INLINE orient #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @orientation@ attribute.
+--
+orientation :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+orientation = attribute "orientation" " orientation=\""
+{-# INLINE orientation #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @origin@ attribute.
+--
+origin :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+origin = attribute "origin" " origin=\""
+{-# INLINE origin #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @overflow@ attribute.
+--
+overflow :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+overflow = attribute "overflow" " overflow=\""
+{-# INLINE overflow #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @overline-position@ attribute.
+--
+overlinePosition :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+overlinePosition = attribute "overline-position" " overline-position=\""
+{-# INLINE overlinePosition #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @overline-thickness@ attribute.
+--
+overlineThickness :: AttributeValue  -- ^ Attribute value.
+                  -> Attribute       -- ^ Resulting attribute.
+overlineThickness = attribute "overline-thickness" " overline-thickness=\""
+{-# INLINE overlineThickness #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @panose-1@ attribute.
+--
+panose1 :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+panose1 = attribute "panose-1" " panose-1=\""
+{-# INLINE panose1 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @path@ attribute.
+--
+path :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+path = attribute "path" " path=\""
+{-# INLINE path #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @pathLength@ attribute.
+--
+pathlength :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+pathlength = attribute "pathLength" " pathLength=\""
+{-# INLINE pathlength #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @patternContentUnits@ attribute.
+--
+patterncontentunits :: AttributeValue  -- ^ Attribute value.
+                    -> Attribute       -- ^ Resulting attribute.
+patterncontentunits = attribute "patternContentUnits" " patternContentUnits=\""
+{-# INLINE patterncontentunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @patternTransform@ attribute.
+--
+patterntransform :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+patterntransform = attribute "patternTransform" " patternTransform=\""
+{-# INLINE patterntransform #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @patternUnits@ attribute.
+--
+patternunits :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+patternunits = attribute "patternUnits" " patternUnits=\""
+{-# INLINE patternunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @pointer-events@ attribute.
+--
+pointerEvents :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+pointerEvents = attribute "pointer-events" " pointer-events=\""
+{-# INLINE pointerEvents #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @points@ attribute.
+--
+points :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+points = attribute "points" " points=\""
+{-# INLINE points #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @pointsAtX@ attribute.
+--
+pointsatx :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+pointsatx = attribute "pointsAtX" " pointsAtX=\""
+{-# INLINE pointsatx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @pointsAtY@ attribute.
+--
+pointsaty :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+pointsaty = attribute "pointsAtY" " pointsAtY=\""
+{-# INLINE pointsaty #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @pointsAtZ@ attribute.
+--
+pointsatz :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+pointsatz = attribute "pointsAtZ" " pointsAtZ=\""
+{-# INLINE pointsatz #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @preserveAlpha@ attribute.
+--
+preservealpha :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+preservealpha = attribute "preserveAlpha" " preserveAlpha=\""
+{-# INLINE preservealpha #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @preserveAspectRatio@ attribute.
+--
+preserveaspectratio :: AttributeValue  -- ^ Attribute value.
+                    -> Attribute       -- ^ Resulting attribute.
+preserveaspectratio = attribute "preserveAspectRatio" " preserveAspectRatio=\""
+{-# INLINE preserveaspectratio #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @primitiveUnits@ attribute.
+--
+primitiveunits :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+primitiveunits = attribute "primitiveUnits" " primitiveUnits=\""
+{-# INLINE primitiveunits #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @r@ attribute.
+--
+r :: AttributeValue  -- ^ Attribute value.
+  -> Attribute       -- ^ Resulting attribute.
+r = attribute "r" " r=\""
+{-# INLINE r #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @radius@ attribute.
+--
+radius :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+radius = attribute "radius" " radius=\""
+{-# INLINE radius #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @refX@ attribute.
+--
+refx :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+refx = attribute "refX" " refX=\""
+{-# INLINE refx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @refY@ attribute.
+--
+refy :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+refy = attribute "refY" " refY=\""
+{-# INLINE refy #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @rendering-intent@ attribute.
+--
+renderingIntent :: AttributeValue  -- ^ Attribute value.
+                -> Attribute       -- ^ Resulting attribute.
+renderingIntent = attribute "rendering-intent" " rendering-intent=\""
+{-# INLINE renderingIntent #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @repeatCount@ attribute.
+--
+repeatcount :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+repeatcount = attribute "repeatCount" " repeatCount=\""
+{-# INLINE repeatcount #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @repeatDur@ attribute.
+--
+repeatdur :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+repeatdur = attribute "repeatDur" " repeatDur=\""
+{-# INLINE repeatdur #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @requiredExtensions@ attribute.
+--
+requiredextensions :: AttributeValue  -- ^ Attribute value.
+                   -> Attribute       -- ^ Resulting attribute.
+requiredextensions = attribute "requiredExtensions" " requiredExtensions=\""
+{-# INLINE requiredextensions #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @requiredFeatures@ attribute.
+--
+requiredfeatures :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+requiredfeatures = attribute "requiredFeatures" " requiredFeatures=\""
+{-# INLINE requiredfeatures #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @restart@ attribute.
+--
+restart :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+restart = attribute "restart" " restart=\""
+{-# INLINE restart #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @result@ attribute.
+--
+result :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+result = attribute "result" " result=\""
+{-# INLINE result #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @rotate@ attribute.
+--
+rotate :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+rotate = attribute "rotate" " rotate=\""
+{-# INLINE rotate #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @rx@ attribute.
+--
+rx :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+rx = attribute "rx" " rx=\""
+{-# INLINE rx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @ry@ attribute.
+--
+ry :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+ry = attribute "ry" " ry=\""
+{-# INLINE ry #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @scale@ attribute.
+--
+scale :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+scale = attribute "scale" " scale=\""
+{-# INLINE scale #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @seed@ attribute.
+--
+seed :: AttributeValue  -- ^ Attribute value.
+     -> Attribute       -- ^ Resulting attribute.
+seed = attribute "seed" " seed=\""
+{-# INLINE seed #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @shape-rendering@ attribute.
+--
+shapeRendering :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+shapeRendering = attribute "shape-rendering" " shape-rendering=\""
+{-# INLINE shapeRendering #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @slope@ attribute.
+--
+slope :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+slope = attribute "slope" " slope=\""
+{-# INLINE slope #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @spacing@ attribute.
+--
+spacing :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+spacing = attribute "spacing" " spacing=\""
+{-# INLINE spacing #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @specularConstant@ attribute.
+--
+specularconstant :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+specularconstant = attribute "specularConstant" " specularConstant=\""
+{-# INLINE specularconstant #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @specularExponent@ attribute.
+--
+specularexponent :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+specularexponent = attribute "specularExponent" " specularExponent=\""
+{-# INLINE specularexponent #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @spreadMethod@ attribute.
+--
+spreadmethod :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+spreadmethod = attribute "spreadMethod" " spreadMethod=\""
+{-# INLINE spreadmethod #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @startOffset@ attribute.
+--
+startoffset :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+startoffset = attribute "startOffset" " startOffset=\""
+{-# INLINE startoffset #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stdDeviation@ attribute.
+--
+stddeviation :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+stddeviation = attribute "stdDeviation" " stdDeviation=\""
+{-# INLINE stddeviation #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stemh@ attribute.
+--
+stemh :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+stemh = attribute "stemh" " stemh=\""
+{-# INLINE stemh #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stemv@ attribute.
+--
+stemv :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+stemv = attribute "stemv" " stemv=\""
+{-# INLINE stemv #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stitchTiles@ attribute.
+--
+stitchtiles :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+stitchtiles = attribute "stitchTiles" " stitchTiles=\""
+{-# INLINE stitchtiles #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stop-color@ attribute.
+--
+stopColor :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+stopColor = attribute "stop-color" " stop-color=\""
+{-# INLINE stopColor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stop-opacity@ attribute.
+--
+stopOpacity :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+stopOpacity = attribute "stop-opacity" " stop-opacity=\""
+{-# INLINE stopOpacity #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @strikethrough-position@ attribute.
+--
+strikethroughPosition :: AttributeValue  -- ^ Attribute value.
+                      -> Attribute       -- ^ Resulting attribute.
+strikethroughPosition = attribute "strikethrough-position" " strikethrough-position=\""
+{-# INLINE strikethroughPosition #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @strikethrough-thickness@ attribute.
+--
+strikethroughThickness :: AttributeValue  -- ^ Attribute value.
+                       -> Attribute       -- ^ Resulting attribute.
+strikethroughThickness = attribute "strikethrough-thickness" " strikethrough-thickness=\""
+{-# INLINE strikethroughThickness #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @string@ attribute.
+--
+string :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+string = attribute "string" " string=\""
+{-# INLINE string #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke@ attribute.
+--
+stroke :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+stroke = attribute "stroke" " stroke=\""
+{-# INLINE stroke #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-dasharray@ attribute.
+--
+strokeDasharray :: AttributeValue  -- ^ Attribute value.
+                -> Attribute       -- ^ Resulting attribute.
+strokeDasharray = attribute "stroke-dasharray" " stroke-dasharray=\""
+{-# INLINE strokeDasharray #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-dashoffset@ attribute.
+--
+strokeDashoffset :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+strokeDashoffset = attribute "stroke-dashoffset" " stroke-dashoffset=\""
+{-# INLINE strokeDashoffset #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-linecap@ attribute.
+--
+strokeLinecap :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+strokeLinecap = attribute "stroke-linecap" " stroke-linecap=\""
+{-# INLINE strokeLinecap #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-linejoin@ attribute.
+--
+strokeLinejoin :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+strokeLinejoin = attribute "stroke-linejoin" " stroke-linejoin=\""
+{-# INLINE strokeLinejoin #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-miterlimit@ attribute.
+--
+strokeMiterlimit :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+strokeMiterlimit = attribute "stroke-miterlimit" " stroke-miterlimit=\""
+{-# INLINE strokeMiterlimit #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-opacity@ attribute.
+--
+strokeOpacity :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+strokeOpacity = attribute "stroke-opacity" " stroke-opacity=\""
+{-# INLINE strokeOpacity #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @stroke-width@ attribute.
+--
+strokeWidth :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+strokeWidth = attribute "stroke-width" " stroke-width=\""
+{-# INLINE strokeWidth #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @style@ attribute.
+--
+style :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+style = attribute "style" " style=\""
+{-# INLINE style #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @surfaceScale@ attribute.
+--
+surfacescale :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+surfacescale = attribute "surfaceScale" " surfaceScale=\""
+{-# INLINE surfacescale #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @systemLanguage@ attribute.
+--
+systemlanguage :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+systemlanguage = attribute "systemLanguage" " systemLanguage=\""
+{-# INLINE systemlanguage #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @tableValues@ attribute.
+--
+tablevalues :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+tablevalues = attribute "tableValues" " tableValues=\""
+{-# INLINE tablevalues #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @target@ attribute.
+--
+target :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+target = attribute "target" " target=\""
+{-# INLINE target #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @targetX@ attribute.
+--
+targetx :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+targetx = attribute "targetX" " targetX=\""
+{-# INLINE targetx #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @targetY@ attribute.
+--
+targety :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+targety = attribute "targetY" " targetY=\""
+{-# INLINE targety #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @text-anchor@ attribute.
+--
+textAnchor :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+textAnchor = attribute "text-anchor" " text-anchor=\""
+{-# INLINE textAnchor #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @text-decoration@ attribute.
+--
+textDecoration :: AttributeValue  -- ^ Attribute value.
+               -> Attribute       -- ^ Resulting attribute.
+textDecoration = attribute "text-decoration" " text-decoration=\""
+{-# INLINE textDecoration #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @text-rendering@ attribute.
+--
+textRendering :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+textRendering = attribute "text-rendering" " text-rendering=\""
+{-# INLINE textRendering #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @textLength@ attribute.
+--
+textlength :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+textlength = attribute "textLength" " textLength=\""
+{-# INLINE textlength #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @title@ attribute.
+--
+title :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+title = attribute "title" " title=\""
+{-# INLINE title #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @to@ attribute.
+--
+to :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+to = attribute "to" " to=\""
+{-# INLINE to #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @transform@ attribute.
+--
+transform :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+transform = attribute "transform" " transform=\""
+{-# INLINE transform #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @type@ attribute.
+--
+type_ :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+type_ = attribute "type" " type=\""
+{-# INLINE type_ #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @u1@ attribute.
+--
+u1 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+u1 = attribute "u1" " u1=\""
+{-# INLINE u1 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @u2@ attribute.
+--
+u2 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+u2 = attribute "u2" " u2=\""
+{-# INLINE u2 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @underline-position@ attribute.
+--
+underlinePosition :: AttributeValue  -- ^ Attribute value.
+                  -> Attribute       -- ^ Resulting attribute.
+underlinePosition = attribute "underline-position" " underline-position=\""
+{-# INLINE underlinePosition #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @underline-thickness@ attribute.
+--
+underlineThickness :: AttributeValue  -- ^ Attribute value.
+                   -> Attribute       -- ^ Resulting attribute.
+underlineThickness = attribute "underline-thickness" " underline-thickness=\""
+{-# INLINE underlineThickness #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @unicode@ attribute.
+--
+unicode :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+unicode = attribute "unicode" " unicode=\""
+{-# INLINE unicode #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @unicode-bidi@ attribute.
+--
+unicodeBidi :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+unicodeBidi = attribute "unicode-bidi" " unicode-bidi=\""
+{-# INLINE unicodeBidi #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @unicode-range@ attribute.
+--
+unicodeRange :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+unicodeRange = attribute "unicode-range" " unicode-range=\""
+{-# INLINE unicodeRange #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @units-per-em@ attribute.
+--
+unitsPerEm :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+unitsPerEm = attribute "units-per-em" " units-per-em=\""
+{-# INLINE unitsPerEm #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @v-alphabetic@ attribute.
+--
+vAlphabetic :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+vAlphabetic = attribute "v-alphabetic" " v-alphabetic=\""
+{-# INLINE vAlphabetic #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @v-hanging@ attribute.
+--
+vHanging :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+vHanging = attribute "v-hanging" " v-hanging=\""
+{-# INLINE vHanging #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @v-ideographic@ attribute.
+--
+vIdeographic :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+vIdeographic = attribute "v-ideographic" " v-ideographic=\""
+{-# INLINE vIdeographic #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @v-mathematical@ attribute.
+--
+vMathematical :: AttributeValue  -- ^ Attribute value.
+              -> Attribute       -- ^ Resulting attribute.
+vMathematical = attribute "v-mathematical" " v-mathematical=\""
+{-# INLINE vMathematical #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @values@ attribute.
+--
+values :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+values = attribute "values" " values=\""
+{-# INLINE values #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @version@ attribute.
+--
+version :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+version = attribute "version" " version=\""
+{-# INLINE version #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @vert-adv-y@ attribute.
+--
+vertAdvY :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+vertAdvY = attribute "vert-adv-y" " vert-adv-y=\""
+{-# INLINE vertAdvY #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @vert-origin-x@ attribute.
+--
+vertOriginX :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+vertOriginX = attribute "vert-origin-x" " vert-origin-x=\""
+{-# INLINE vertOriginX #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @vert-origin-y@ attribute.
+--
+vertOriginY :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+vertOriginY = attribute "vert-origin-y" " vert-origin-y=\""
+{-# INLINE vertOriginY #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @viewBox@ attribute.
+--
+viewbox :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+viewbox = attribute "viewBox" " viewBox=\""
+{-# INLINE viewbox #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @viewTarget@ attribute.
+--
+viewtarget :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+viewtarget = attribute "viewTarget" " viewTarget=\""
+{-# INLINE viewtarget #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @visibility@ attribute.
+--
+visibility :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+visibility = attribute "visibility" " visibility=\""
+{-# INLINE visibility #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @width@ attribute.
+--
+width :: AttributeValue  -- ^ Attribute value.
+      -> Attribute       -- ^ Resulting attribute.
+width = attribute "width" " width=\""
+{-# INLINE width #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @widths@ attribute.
+--
+widths :: AttributeValue  -- ^ Attribute value.
+       -> Attribute       -- ^ Resulting attribute.
+widths = attribute "widths" " widths=\""
+{-# INLINE widths #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @word-spacing@ attribute.
+--
+wordSpacing :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+wordSpacing = attribute "word-spacing" " word-spacing=\""
+{-# INLINE wordSpacing #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @writing-mode@ attribute.
+--
+writingMode :: AttributeValue  -- ^ Attribute value.
+            -> Attribute       -- ^ Resulting attribute.
+writingMode = attribute "writing-mode" " writing-mode=\""
+{-# INLINE writingMode #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @x@ attribute.
+--
+x :: AttributeValue  -- ^ Attribute value.
+  -> Attribute       -- ^ Resulting attribute.
+x = attribute "x" " x=\""
+{-# INLINE x #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @x-height@ attribute.
+--
+xHeight :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+xHeight = attribute "x-height" " x-height=\""
+{-# INLINE xHeight #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @x1@ attribute.
+--
+x1 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+x1 = attribute "x1" " x1=\""
+{-# INLINE x1 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @x2@ attribute.
+--
+x2 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+x2 = attribute "x2" " x2=\""
+{-# INLINE x2 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xChannelSelector@ attribute.
+--
+xchannelselector :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+xchannelselector = attribute "xChannelSelector" " xChannelSelector=\""
+{-# INLINE xchannelselector #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:actuate@ attribute.
+--
+xlinkActuate :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+xlinkActuate = attribute "xlink:actuate" " xlink:actuate=\""
+{-# INLINE xlinkActuate #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:arcrole@ attribute.
+--
+xlinkArcrole :: AttributeValue  -- ^ Attribute value.
+             -> Attribute       -- ^ Resulting attribute.
+xlinkArcrole = attribute "xlink:arcrole" " xlink:arcrole=\""
+{-# INLINE xlinkArcrole #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:href@ attribute.
+--
+xlinkHref :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+xlinkHref = attribute "xlink:href" " xlink:href=\""
+{-# INLINE xlinkHref #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:role@ attribute.
+--
+xlinkRole :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+xlinkRole = attribute "xlink:role" " xlink:role=\""
+{-# INLINE xlinkRole #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:show@ attribute.
+--
+xlinkShow :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+xlinkShow = attribute "xlink:show" " xlink:show=\""
+{-# INLINE xlinkShow #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:title@ attribute.
+--
+xlinkTitle :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+xlinkTitle = attribute "xlink:title" " xlink:title=\""
+{-# INLINE xlinkTitle #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xlink:type@ attribute.
+--
+xlinkType :: AttributeValue  -- ^ Attribute value.
+          -> Attribute       -- ^ Resulting attribute.
+xlinkType = attribute "xlink:type" " xlink:type=\""
+{-# INLINE xlinkType #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xml:base@ attribute.
+--
+xmlBase :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+xmlBase = attribute "xml:base" " xml:base=\""
+{-# INLINE xmlBase #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xml:lang@ attribute.
+--
+xmlLang :: AttributeValue  -- ^ Attribute value.
+        -> Attribute       -- ^ Resulting attribute.
+xmlLang = attribute "xml:lang" " xml:lang=\""
+{-# INLINE xmlLang #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @xml:space@ attribute.
+--
+xmlSpace :: AttributeValue  -- ^ Attribute value.
+         -> Attribute       -- ^ Resulting attribute.
+xmlSpace = attribute "xml:space" " xml:space=\""
+{-# INLINE xmlSpace #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @y@ attribute.
+--
+y :: AttributeValue  -- ^ Attribute value.
+  -> Attribute       -- ^ Resulting attribute.
+y = attribute "y" " y=\""
+{-# INLINE y #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @y1@ attribute.
+--
+y1 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+y1 = attribute "y1" " y1=\""
+{-# INLINE y1 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @y2@ attribute.
+--
+y2 :: AttributeValue  -- ^ Attribute value.
+   -> Attribute       -- ^ Resulting attribute.
+y2 = attribute "y2" " y2=\""
+{-# INLINE y2 #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @yChannelSelector@ attribute.
+--
+ychannelselector :: AttributeValue  -- ^ Attribute value.
+                 -> Attribute       -- ^ Resulting attribute.
+ychannelselector = attribute "yChannelSelector" " yChannelSelector=\""
+{-# INLINE ychannelselector #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @z@ attribute.
+--
+z :: AttributeValue  -- ^ Attribute value.
+  -> Attribute       -- ^ Resulting attribute.
+z = attribute "z" " z=\""
+{-# INLINE z #-}
+
+-- WARNING: The next block of code was automatically generated by
+-- src/Util/GenerateSvgCombinators.hs:220
+--
+-- | Combinator for the @zoomAndPan@ attribute.
+--
+zoomandpan :: AttributeValue  -- ^ Attribute value.
+           -> Attribute       -- ^ Resulting attribute.
+zoomandpan = attribute "zoomAndPan" " zoomAndPan=\""
+{-# INLINE zoomandpan #-}
diff --git a/src/Util/GenerateSvgCombinators.hs b/src/Util/GenerateSvgCombinators.hs
new file mode 100644
--- /dev/null
+++ b/src/Util/GenerateSvgCombinators.hs
@@ -0,0 +1,327 @@
+{-# LANGUAGE CPP #-}
+
+#define DO_NOT_EDIT (doNotEdit __FILE__ __LINE__)
+
+-- | Generates code for SVG tags.
+--
+module Util.GenerateSvgCombinators where
+
+import Control.Arrow ((&&&))
+import Data.List (sort, sortBy, intersperse, intercalate)
+import Data.Ord (comparing)
+import System.Directory (createDirectoryIfMissing)
+import System.FilePath ((</>), (<.>))
+import Data.Map (Map)
+import qualified Data.Map as M
+import Data.Char (toLower)
+import qualified Data.Set as S
+
+import Util.Sanitize (sanitize, prelude)
+
+-- | Datatype for an SVG variant.
+--
+data SvgVariant = SvgVariant
+    { version     :: [String]
+    , docType     :: [String]
+    , parents     :: [String]
+    , leafs       :: [String]
+    , attributes  :: [String]
+    , selfClosing :: Bool
+    } deriving (Eq)
+
+instance Show SvgVariant where
+    show = map toLower . intercalate "-" . version
+
+-- | Get the full module name for an SVG variant.
+--
+getModuleName :: SvgVariant -> String
+getModuleName = ("Text.Blaze." ++) . intercalate "." . version
+
+-- | Get the attribute module name for an SVG variant.
+--
+getAttributeModuleName :: SvgVariant -> String
+getAttributeModuleName = (++ ".Attributes") . getModuleName
+
+-- | Check if a given name causes a name clash.
+--
+isNameClash :: SvgVariant -> String -> Bool
+isNameClash v t
+    -- Both an element and an attribute
+    | (t `elem` parents v || t `elem` leafs v) && t `elem` attributes v = True
+    -- Already a prelude function
+    | sanitize t `S.member` prelude = True
+    | otherwise = False
+
+-- | Write an SVG variant.
+--
+writeSvgVariant :: SvgVariant -> IO ()
+writeSvgVariant svgVariant = do
+    -- Make a directory.
+    createDirectoryIfMissing True basePath
+
+    let tags =  zip parents' (repeat makeParent)
+             ++ zip leafs' (repeat (makeLeaf $ selfClosing svgVariant))
+        sortedTags = sortBy (comparing fst) tags
+        appliedTags = map (\(x, f) -> f x) sortedTags
+
+    -- Write the main module.
+    writeFile' (basePath <.> "hs") $ removeTrailingNewlines $ unlines
+        [ DO_NOT_EDIT
+        , "{-# LANGUAGE OverloadedStrings #-}"
+        , "-- | This module exports SVG combinators used to create documents."
+        , "--"
+        , exportList modulName $ "module Text.Blaze"
+                                : "module Text.Blaze.Svg"
+                                : "docType"
+                                : "docTypeSvg"
+                                : map (sanitize . fst) sortedTags
+        , DO_NOT_EDIT
+        , "import Prelude ((>>), (.), ($))"
+        , ""
+        , "import Text.Blaze"
+        , "import Text.Blaze.Svg"
+        , "import Text.Blaze.Internal"
+        , ""
+        , makeDocType $ docType svgVariant
+        , makeDocTypeSvg $ docType svgVariant
+        , unlines appliedTags
+        ]
+
+    let sortedAttributes = sort attributes'
+
+    -- Write the attribute module.
+    writeFile' (basePath </> "Attributes.hs") $ removeTrailingNewlines $ unlines
+        [ DO_NOT_EDIT
+        , "-- | This module exports combinators that provide you with the"
+        , "-- ability to set attributes on SVG elements."
+        , "--"
+        , "{-# LANGUAGE OverloadedStrings #-}"
+        , exportList attributeModuleName $ map sanitize sortedAttributes
+        , DO_NOT_EDIT
+        , "import Prelude ()"
+        , ""
+        , "import Text.Blaze.Internal (Attribute, AttributeValue, attribute)"
+        , ""
+        , unlines (map makeAttribute sortedAttributes)
+        ]
+  where
+    basePath = "src" </> "Text" </> "Blaze" </> foldl1 (</>) version'
+    modulName = getModuleName svgVariant
+    attributeModuleName = getAttributeModuleName svgVariant
+    attributes' = attributes svgVariant
+    parents'    = parents svgVariant
+    leafs'      = leafs svgVariant
+    version'    = version svgVariant
+    removeTrailingNewlines = reverse . drop 2 . reverse
+    writeFile' file content = do
+        putStrLn ("Generating " ++ file)
+        writeFile file content
+
+-- | Create a string, consisting of @x@ spaces, where @x@ is the length of the
+-- argument.
+--
+spaces :: String -> String
+spaces = flip replicate ' ' . length
+
+-- | Join blocks of code with a newline in between.
+--
+unblocks :: [String] -> String
+unblocks = unlines . intersperse "\n"
+
+-- | A warning to not edit the generated code.
+--
+doNotEdit :: FilePath -> Int -> String
+doNotEdit fileName lineNumber = init $ unlines
+    [ "-- WARNING: The next block of code was automatically generated by"
+    , "-- " ++ fileName ++ ":" ++ show lineNumber
+    , "--"
+    ]
+
+-- | Generate an export list for a Haskell module.
+--
+exportList :: String   -- ^ Module name.
+           -> [String] -- ^ List of functions.
+           -> String   -- ^ Resulting string.
+exportList _    []            = error "exportList without functions."
+exportList name (f:functions) = unlines $
+    [ "module " ++ name
+    , "    ( " ++ f
+    ] ++
+    map ("    , " ++) functions ++
+    [ "    ) where"]
+
+-- | Generate a function for a doctype.
+--
+makeDocType :: [String] -> String
+makeDocType lines' = unlines
+    [ DO_NOT_EDIT
+    , "-- | Combinator for the document type. This should be placed at the top"
+    , "-- of every SVG page."
+    , "--"
+    , unlines (map ("-- > " ++) lines') ++ "--"
+    , "docType :: Svg  -- ^ The document type SVG."
+    , "docType = preEscapedText " ++ show (unlines lines')
+    , "{-# INLINE docType #-}"
+    ]
+
+-- | Generate a function for the SVG tag (including the doctype).
+--
+makeDocTypeSvg :: [String]  -- ^ The doctype.
+                -> String    -- ^ Resulting combinator function.
+makeDocTypeSvg lines' = unlines
+    [ DO_NOT_EDIT
+    , "-- | Combinator for the @\\<svg>@ element. This combinator will also"
+    , "-- insert the correct doctype."
+    , "--"
+    , "docTypeSvg :: Svg  -- ^ Inner SVG."
+    , "            -> Svg  -- ^ Resulting SVG."
+    , "docTypeSvg inner = docType >> (svg ! attribute \"xmlns\" \" xmlns=\\\"\" \"http://www.w3.org/2000/svg\" ! attribute \"xmlns:xlink\" \" xmlns:xlink=\\\"\" \"http://www.w3.org/1999/xlink\"  $ inner)"
+    , "{-# INLINE docTypeSvg #-}"
+    ]
+
+-- | Generate a function for an SVG tag that can be a parent.
+--
+makeParent :: String -> String
+makeParent tag = unlines
+    [ DO_NOT_EDIT
+    , "-- | Combinator for the @\\<" ++ tag ++ ">@ element."
+    , "--"
+    , function        ++ " :: Svg  -- ^ Inner SVG."
+    , spaces function ++ " -> Svg  -- ^ Resulting SVG."
+    , function        ++ " = Parent \"" ++ tag ++ "\" \"<" ++ tag
+                      ++ "\" \"</" ++ tag ++ ">\"" ++ modifier
+    , "{-# INLINE " ++ function ++ " #-}"
+    ]
+  where
+    function = sanitize tag
+    modifier = if tag `elem` ["style", "script"] then " . external" else ""
+
+-- | Generate a function for an SVG tag that must be a leaf.
+--
+makeLeaf :: Bool    -- ^ Make leaf tags self-closing
+         -> String  -- ^ Tag for the combinator
+         -> String  -- ^ Combinator code
+makeLeaf closing tag = unlines
+    [ DO_NOT_EDIT
+    , "-- | Combinator for the @\\<" ++ tag ++ " />@ element."
+    , "--"
+    , function ++ " :: Svg  -- ^ Resulting SVG."
+    , function ++ " = Leaf \"" ++ tag ++ "\" \"<" ++ tag ++ "\" " ++ "\""
+               ++ (if closing then " /" else "") ++ ">\""
+    , "{-# INLINE " ++ function ++ " #-}"
+    ]
+  where
+    function = sanitize tag
+
+-- | Generate a function for an SVG attribute.
+--
+makeAttribute :: String -> String
+makeAttribute name = unlines
+    [ DO_NOT_EDIT
+    , "-- | Combinator for the @" ++ name ++ "@ attribute."
+    , "--"
+    , function        ++ " :: AttributeValue  -- ^ Attribute value."
+    , spaces function ++ " -> Attribute       -- ^ Resulting attribute."
+    , function        ++ " = attribute \"" ++ name ++ "\" \" "
+                      ++ name ++ "=\\\"\""
+    , "{-# INLINE " ++ function ++ " #-}"
+    ]
+  where
+    function = sanitize name
+
+-- | SVG 1.1
+-- Reference: https://developer.mozilla.org/en/SVG
+--
+svg11 :: SvgVariant
+svg11 = SvgVariant
+    { version = ["Svg11"]
+    , docType =
+        [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+        , "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""
+        , "    \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"
+        ]
+    , parents =
+        [ "a","defs","glyph","g","marker","mask","missing-glyph","pattern", "svg"
+        , "switch", "symbol", "linearGradient", "radialGradient"
+        ]
+    , leafs =
+        [ "altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor"
+        , "animateMotion", "animateTransform", "circle", "clipPath"
+        , "color-profile" , "cursor", "desc", "ellipse", "feBlend"
+        , "feColorMatrix", "feComponentTransfer" , "feComposite"
+        , "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap"
+        , "feDistantLight", "feFlood", "feFuncA", "feFuncB" , "feFuncG"
+        , "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode"
+        , "feMorphology", "feOffset", "fePointLight", "feSpecularLighting"
+        , "feSpotLight" , "feTile", "feTurbulence", "filter", "font"
+        , "font-face", "font-face-format" , "font-face-name", "font-face-src"
+        , "font-face-uri", "foreignObject" , "glyphRef", "hkern", "image"
+        , "line", "metadata", "mpath", "path"
+        , "polygon" , "polyline", "rect", "script", "set"
+        , "stop", "style" , "text", "textPath", "title", "tref", "tspan", "use"
+        , "view", "vkern"
+        ]
+    , attributes =
+        [ "accent-height", "accumulate", "additive", "alphabetic", "amplitude"
+        , "arabic-form", "ascent", "attributeName", "attributeType", "azimuth"
+        , "baseFrequency", "baseProfile", "bbox", "begin", "bias", "by", "calcMode"
+        , "cap-height", "class", "clipPathUnits", "contentScriptType"
+        , "contentStyleType", "cx", "cy", "d", "descent", "diffuseConstant", "divisor"
+        , "dur", "dx", "dy", "edgeMode", "elevation", "end", "exponent"
+        , "externalResourcesRequired", "fill", "filterRes", "filterUnits", "font-family"
+        , "font-size", "font-stretch", "font-style", "font-variant", "font-weight"
+        , "format", "from", "fx", "fy", "g1", "g2", "glyph-name", "glyphRef"
+        , "gradientTransform", "gradientUnits", "hanging", "height", "horiz-adv-x"
+        , "horiz-origin-x", "horiz-origin-y", "id", "ideographic", "in", "in2"
+        , "intercept", "k", "k1", "k2", "k3", "k4", "kernelMatrix", "kernelUnitLength"
+        , "keyPoints", "keySplines", "keyTimes", "lang", "lengthAdjust"
+        , "limitingConeAngle", "local", "markerHeight", "markerUnits", "markerWidth"
+        , "maskContentUnits", "maskUnits", "mathematical", "max", "media", "method"
+        , "min", "mode", "name", "numOctaves", "offset", "onabort", "onactivate"
+        , "onbegin", "onclick", "onend", "onerror", "onfocusin", "onfocusout", "onload"
+        , "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup"
+        , "onrepeat", "onresize", "onscroll", "onunload", "onzoom", "operator", "order"
+        , "orient", "orientation", "origin", "overline-position", "overline-thickness"
+        , "panose-1", "path", "pathLength", "patternContentUnits", "patternTransform"
+        , "patternUnits", "points", "pointsAtX", "pointsAtY", "pointsAtZ"
+        , "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "r", "radius"
+        , "refX", "refY", "rendering-intent", "repeatCount", "repeatDur"
+        , "requiredExtensions", "requiredFeatures", "restart", "result", "rotate", "rx"
+        , "ry", "scale", "seed", "slope", "spacing", "specularConstant"
+        , "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stemh"
+        , "stemv", "stitchTiles", "strikethrough-position", "strikethrough-thickness"
+        , "string", "style", "surfaceScale", "systemLanguage", "tableValues", "target"
+        , "targetX", "targetY", "textLength", "title", "to", "transform", "type", "u1"
+        , "u2", "underline-position", "underline-thickness", "unicode", "unicode-range"
+        , "units-per-em", "v-alphabetic", "v-hanging", "v-ideographic", "v-mathematical"
+        , "values", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "viewBox"
+        , "viewTarget", "width", "widths", "x", "x-height", "x1", "x2"
+        , "xChannelSelector", "xlink:actuate", "xlink:arcrole", "xlink:href"
+        , "xlink:role", "xlink:show", "xlink:title", "xlink:type", "xml:base"
+        , "xml:lang", "xml:space", "y", "y1", "y2", "yChannelSelector", "z", "zoomAndPan"
+        -- Presentation Attributes
+        , "alignment-baseline", "baseline-shift", "clip-path", "clip-rule"
+        , "clip", "color-interpolation-filters", "color-interpolation"
+        , "color-profile", "color-rendering", "color", "cursor", "direction"
+        , "display", "dominant-baseline", "enable-background", "fill-opacity"
+        , "fill-rule", "filter", "flood-color", "flood-opacity"
+        , "font-size-adjust", "glyph-orientation-horizontal"
+        , "glyph-orientation-vertical", "image-rendering", "kerning", "letter-spacing"
+        , "lighting-color", "marker-end", "marker-mid", "marker-start", "mask"
+        , "opacity", "overflow", "pointer-events", "shape-rendering", "stop-color"
+        , "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap"
+        , "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width"
+        , "stroke", "text-anchor", "text-decoration", "text-rendering", "unicode-bidi"
+        , "visibility", "word-spacing", "writing-mode"
+        ]
+    , selfClosing = True
+    }
+
+-- | A map of SVG variants, per version, lowercase.
+--
+svgVariants :: Map String SvgVariant
+svgVariants = M.fromList $ map (show &&& id)
+    [ svg11 ]
+
+main :: IO ()
+main = mapM_ (writeSvgVariant . snd) $ M.toList svgVariants
diff --git a/src/Util/Sanitize.hs b/src/Util/Sanitize.hs
new file mode 100644
--- /dev/null
+++ b/src/Util/Sanitize.hs
@@ -0,0 +1,78 @@
+-- | A program to sanitize an HTML tag to a Haskell function.
+--
+module Util.Sanitize
+    ( sanitize
+    , keywords
+    , prelude
+    ) where
+
+import Data.Char (toLower, toUpper)
+import Data.Set (Set)
+import qualified Data.Set as S
+
+-- | Sanitize a tag. This function returns a name that can be used as
+-- combinator in haskell source code.
+--
+-- Examples:
+--
+-- > sanitize "class" == "class_"
+-- > sanitize "http-equiv" == "httpEquiv"
+--
+sanitize :: String -> String
+sanitize = appendUnderscore . removeDashOrColon . map toLower
+  where
+    -- Remove a dash, replacing it by camelcase notation
+    --
+    -- Example:
+    --
+    -- > removeDashOrColon "foo-bar" == "fooBar"
+    --
+    removeDashOrColon ('-' : x : xs) = toUpper x : removeDashOrColon xs
+    removeDashOrColon (':' : x : xs) = toUpper x : removeDashOrColon xs
+    removeDashOrColon (x : xs) = x : removeDashOrColon xs
+    removeDashOrColon [] = []
+
+    appendUnderscore t | t `S.member` keywords = t ++ "_"
+                       | t `S.member` prelude  = t ++ "_"
+                       | otherwise             = t
+
+-- | A set of standard Haskell keywords, which cannot be used as combinators.
+--
+keywords :: Set String
+keywords = S.fromList
+    [ "case", "class", "data", "default", "deriving", "do", "else", "if"
+    , "import", "in", "infix", "infixl", "infixr", "instance" , "let", "module"
+    , "newtype", "of", "then", "type", "where"
+    ]
+
+-- | Set of functions from the Prelude, which we do not use as combinators.
+--
+prelude :: Set String
+prelude = S.fromList
+    [ "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf"
+    , "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling"
+    , "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", "cycle"
+    , "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", "elem"
+    , "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", "enumFromTo"
+    , "error", "even", "exp", "exponent", "fail", "filter", "flip"
+    , "floatDigits", "floatRadix", "floatRange", "floor", "fmap", "foldl"
+    , "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", "fromIntegral"
+    , "fromRational", "fst", "gcd", "getChar", "getContents", "getLine", "head"
+    , "id", "init", "interact", "ioError", "isDenormalized", "isIEEE"
+    , "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", "lcm"
+    , "length", "lex", "lines", "log", "logBase", "lookup", "map", "mapM"
+    , "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound"
+    , "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or"
+    , "otherwise", "pi", "pred", "print", "product", "properFraction", "putChar"
+    , "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", "readIO"
+    , "readList", "readLn", "readParen", "reads", "readsPrec", "realToFrac"
+    , "recip", "rem", "repeat", "replicate", "return", "reverse", "round"
+    , "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", "sequence"
+    , "sequence_", "show", "showChar", "showList", "showParen", "showString"
+    , "shows", "showsPrec", "significand", "signum", "sin", "sinh", "snd"
+    , "span", "splitAt", "sqrt", "subtract", "succ", "sum", "tail", "take"
+    , "takeWhile", "tan", "tanh", "toEnum", "toInteger", "toRational"
+    , "truncate", "text", "uncurry", "undefined", "unlines", "until", "unwords", "unzip"
+    , "unzip3", "userError", "words", "writeFile", "zip", "zip3", "zipWith"
+    , "zipWith3"
+    ]
