Browse Source

Refactored things a bit.

Beoran 2 years ago
parent
commit
1d3bebfd81
1 changed files with 470 additions and 1916 deletions
  1. 470 1916
      svg/svg.go

+ 470 - 1916
svg/svg.go

@@ -3,6 +3,8 @@ package svg
 import "time"
 import "encoding/xml"
 
+type ID string
+
 type Chardata string
 type D string
 type Version string
@@ -14,7 +16,7 @@ type Inkscape string
 type Rdf string
 type Docname string
 type Sodipodi string
-type G string
+type GString string
 type Space string
 type Box string
 type Xlink string
@@ -124,7 +126,7 @@ type Display string
 type Visible string
 type Visibility string
 type Cmyk string
-type Path string
+type PathString string
 type Flatsided string
 type Rounded string
 type Arg1 string
@@ -166,1927 +168,479 @@ type Position string    // XXX
 type Color string   // XXX
 type Opacity string // XXX
 
-type SVG struct {
-	XMLName             xml.Name   `xml:"Svg"`
-	Chardata            Chardata   `xml:",chardata"`
-	Height              float32    `xml:"height,attr"`
-	ID                  D          `xml:"id,attr"`
-	Version             Version    `xml:"version,attr"`
-	Docbase             Docbase    `xml:"docbase,attr"`
-	Docname             Docname    `xml:"docname,attr"`
-	Width               float32    `xml:"width,attr"`
-	Xmlns               Xmlns      `xml:"xmlns,attr"`
-	Cc                  Cc         `xml:"cc,attr"`
-	Dc                  Dc         `xml:"dc,attr"`
-	Inkscape            Inkscape   `xml:"inkscape,attr"`
-	Rdf                 Rdf        `xml:"rdf,attr"`
-	Sodipodi            Sodipodi   `xml:"sodipodi,attr"`
-	SVG                 G          `xml:"svg,attr"`
-	Space               Space      `xml:"space,attr"`
-	AttrStyle           Style      `xml:"style,attr"`
-	ViewBox             Box        `xml:"viewBox,attr"`
-	Xlink               Xlink      `xml:"xlink,attr"`
-	XML                 L          `xml:"xml,attr"`
-	X                   float32    `xml:"x,attr"`
-	Y                   float32    `xml:"y,attr"`
-	ExportFilename      Filename   `xml:"export-filename,attr"`
-	ExportXdpi          Xdpi       `xml:"export-xdpi,attr"`
-	ExportYdpi          Ydpi       `xml:"export-ydpi,attr"`
-	EnableBackground    Background `xml:"enable-background,attr"`
-	PageBounds          Bounds     `xml:"pageBounds,attr"`
-	RulerOrigin         Origin     `xml:"rulerOrigin,attr"`
-	ViewOrigin          Origin     `xml:"viewOrigin,attr"`
-	Overflow            Overflow   `xml:"overflow,attr"`
-	A                   A          `xml:"a,attr"`
-	Graph               Graph      `xml:"graph,attr"`
-	I                   I          `xml:"i,attr"`
-	FillRule            Rule       `xml:"fill-rule,attr"`
-	ImageRendering      Rendering  `xml:"image-rendering,attr"`
-	ShapeRendering      Rendering  `xml:"shape-rendering,attr"`
-	TextRendering       Rendering  `xml:"text-rendering,attr"`
-	PreserveAspectRatio Ratio      `xml:"preserveAspectRatio,attr"`
-	Fill                Fill       `xml:"fill,attr"`
-	StrokeLinecap       Linecap    `xml:"stroke-linecap,attr"`
-	StrokeLinejoin      Linejoin   `xml:"stroke-linejoin,attr"`
-	StrokeWidth         float32    `xml:"stroke-width,attr"`
-	Ns                  Ns         `xml:"ns,attr"`
-	Ns0                 Ns0        `xml:"ns0,attr"`
-	Xap                 Xap        `xml:"xap,attr"`
-	XapGImg             Img        `xml:"xapGImg,attr"`
-	Pdf                 Pdf        `xml:"pdf,attr"`
-	Pdfx                Pdfx       `xml:"pdfx,attr"`
-	Author              Author     `xml:"author,attr"`
-	Metadata            struct {
-		Text Text `xml:",chardata"`
-		RDF  struct {
-			Text Text `xml:",chardata"`
-			Cc   Cc   `xml:"cc,attr"`
-			Dc   Dc   `xml:"dc,attr"`
-			Rdf  Rdf  `xml:"rdf,attr"`
-			Work struct {
-				Text        Text        `xml:",chardata"`
-				About       About       `xml:"about,attr"`
-				Title       Title       `xml:"title"`       // shopping_cart, rss_button...
-				Description Description `xml:"description"` // Button to indicate a link...
-				Subject     struct {
-					Text Text `xml:",chardata"`
-					Bag  struct {
-						Text Text     `xml:",chardata"`
-						Li   []string `xml:"li"` // activities, shopping, car...
-					} `xml:"Bag"`
-				} `xml:"subject"`
-				Publisher struct {
-					Text  Text `xml:",chardata"`
-					Agent struct {
-						Text  Text  `xml:",chardata"`
-						About About `xml:"about,attr"`
-						Title Title `xml:"title"` // Open Clip Art Library, Op...
-					} `xml:"Agent"`
-				} `xml:"publisher"`
-				Creator struct {
-					Text  Text `xml:",chardata"`
-					Agent struct {
-						Text  Text  `xml:",chardata"`
-						About About `xml:"about,attr"`
-						Title Title `xml:"title"` // mimooh, Roman Bertle, Lum...
-					} `xml:"Agent"`
-				} `xml:"creator"`
-				Rights struct {
-					Text  Text `xml:",chardata"`
-					Agent struct {
-						Text  Text  `xml:",chardata"`
-						About About `xml:"about,attr"`
-						Title Title `xml:"title"` // mimooh, Roman Bertle, Lum...
-					} `xml:"Agent"`
-				} `xml:"rights"`
-				Date   Date   `xml:"date"`   // 2005-09-01, 29 08 2005, S...
-				Format Format `xml:"format"` // image/svg+xml, image/svg+...
-				Type   struct {
-					Text     Text     `xml:",chardata"`
-					Resource Resource `xml:"resource,attr"`
-				} `xml:"type"`
-				License struct {
-					Text     Text     `xml:",chardata"`
-					Resource Resource `xml:"resource,attr"`
-				} `xml:"license"`
-				Language Language `xml:"language"` // en, en, All, en, en, en, ...
-			} `xml:"Work"`
-			License struct {
-				Text    Text  `xml:",chardata"`
-				About   About `xml:"about,attr"`
-				Permits []struct {
-					Text     Text     `xml:",chardata"`
-					Resource Resource `xml:"resource,attr"`
-				} `xml:"permits"`
-			} `xml:"License"`
-		} `xml:"RDF"`
-	} `xml:"metadata"`
-	Defs struct {
-		Text           Text `xml:",chardata"`
-		ID             D    `xml:"id,attr"`
-		LinearGradient []struct {
-			Text              Text      `xml:",chardata"`
-			ID                D         `xml:"id,attr"`
-			Collect           Collect   `xml:"collect,attr"`
-			GradientTransform Transform `xml:"gradientTransform,attr"`
-			GradientUnits     Units     `xml:"gradientUnits,attr"`
-			X1                float32   `xml:"x1,attr"`
-			X2                float32   `xml:"x2,attr"`
-			Href              Href      `xml:"href,attr"`
-			Y1                float32   `xml:"y1,attr"`
-			Y2                float32   `xml:"y2,attr"`
-			SpreadMethod      Method    `xml:"spreadMethod,attr"`
-			Stop              []struct {
-				Text   Text   `xml:",chardata"`
-				ID     D      `xml:"id,attr"`
-				Offset Offset `xml:"offset,attr"`
-				Style  Style  `xml:"style,attr"`
-			} `xml:"stop"`
-		} `xml:"linearGradient"`
-		Style struct {
-			Text Text `xml:",chardata"` // .str0 {stroke:#1F1A17;str...
-			ID   D    `xml:"id,attr"`
-			Type Type `xml:"type,attr"`
-		} `xml:"style"`
-		Mask []struct {
-			Text           Text `xml:",chardata"`
-			ID             D    `xml:"id,attr"`
-			LinearGradient struct {
-				Text          Text    `xml:",chardata"`
-				GradientUnits Units   `xml:"gradientUnits,attr"`
-				ID            D       `xml:"id,attr"`
-				X1            float32 `xml:"x1,attr"`
-				X2            float32 `xml:"x2,attr"`
-				Y1            float32 `xml:"y1,attr"`
-				Y2            float32 `xml:"y2,attr"`
-				Stop          []struct {
-					Text   Text   `xml:",chardata"`
-					ID     D      `xml:"id,attr"`
-					Offset Offset `xml:"offset,attr"`
-					Style  Style  `xml:"style,attr"`
-				} `xml:"stop"`
-			} `xml:"linearGradient"`
-			Rect struct {
-				Text   Text    `xml:",chardata"`
-				Height float32 `xml:"height,attr"`
-				ID     D       `xml:"id,attr"`
-				Style  Style   `xml:"style,attr"`
-				Width  float32 `xml:"width,attr"`
-				X      float32 `xml:"x,attr"`
-				Y      float32 `xml:"y,attr"`
-			} `xml:"rect"`
-		} `xml:"mask"`
-		Marker []struct {
-			Text         Text    `xml:",chardata"`
-			ID           D       `xml:"id,attr"`
-			MarkerHeight float32 `xml:"markerHeight,attr"`
-			MarkerUnits  Units   `xml:"markerUnits,attr"`
-			MarkerWidth  float32 `xml:"markerWidth,attr"`
-			Orient       Orient  `xml:"orient,attr"`
-			RefX         float32 `xml:"refX,attr"`
-			RefY         float32 `xml:"refY,attr"`
-			ViewBox      Box     `xml:"viewBox,attr"`
-			Stockid      Stockid `xml:"stockid,attr"`
-			Style        Style   `xml:"style,attr"`
-			Path         struct {
-				Text      Text      `xml:",chardata"`
-				D         D         `xml:"d,attr"`
-				ID        D         `xml:"id,attr"`
-				Nodetypes Nodetypes `xml:"nodetypes,attr"`
-				Style     Style     `xml:"style,attr"`
-				Transform Transform `xml:"transform,attr"`
-			} `xml:"path"`
-		} `xml:"marker"`
-		RadialGradient []struct {
-			Text              Text      `xml:",chardata"`
-			ID                D         `xml:"id,attr"`
-			Href              Href      `xml:"href,attr"`
-			Cx                Cx        `xml:"cx,attr"`
-			Cy                Cy        `xml:"cy,attr"`
-			Fx                Fx        `xml:"fx,attr"`
-			Fy                Fy        `xml:"fy,attr"`
-			R                 R         `xml:"r,attr"`
-			GradientTransform Transform `xml:"gradientTransform,attr"`
-			GradientUnits     Units     `xml:"gradientUnits,attr"`
-			Collect           Collect   `xml:"collect,attr"`
-			SpreadMethod      Method    `xml:"spreadMethod,attr"`
-		} `xml:"radialGradient"`
-		Rect []struct {
-			Text   Text    `xml:",chardata"`
-			Fill   Fill    `xml:"fill,attr"`
-			Height float32 `xml:"height,attr"`
-			ID     D       `xml:"id,attr"`
-			Stroke Stroke  `xml:"stroke,attr"`
-			Width  float32 `xml:"width,attr"`
-			X      float32 `xml:"x,attr"`
-			Y      float32 `xml:"y,attr"`
-		} `xml:"rect"`
-		G []struct {
-			Text Text `xml:",chardata"`
-			ID   D    `xml:"id,attr"`
-			Use  []struct {
-				Text Text    `xml:",chardata"`
-				X    float32 `xml:"x,attr"`
-				Href Href    `xml:"href,attr"`
-				Y    float32 `xml:"y,attr"`
-			} `xml:"use"`
-		} `xml:"g"`
-		ClipPath []struct {
+type G struct {
+	Text           Text        `xml:",chardata"`
+	ID             ID          `xml:"id,attr"`
+	Use            []Use       `xml:"use"`
+	Chardata       Chardata    `xml:",chardata"`
+	Transform      Transform   `xml:"transform,attr"`
+	Groupmode      Groupmode   `xml:"groupmode,attr"`
+	Label          Label       `xml:"label,attr"`
+	Insensitive    Insensitive `xml:"insensitive,attr"`
+	Style          Style       `xml:"style,attr"`
+	DimmedPercent  Percent     `xml:"dimmedPercent,attr"`
+	Knockout       Knockout    `xml:"knockout,attr"`
+	Layer          Layer       `xml:"layer,attr"`
+	RgbTrio        Trio        `xml:"rgbTrio,attr"`
+	Display        Display     `xml:"display,attr"`
+	Visible        Visible     `xml:"visible,attr"`
+	Visibility     Visibility  `xml:"visibility,attr"`
+	Fill           Fill        `xml:"fill,attr"`
+	Stroke         Stroke      `xml:"stroke,attr"`
+	StrokeWidth    float32     `xml:"stroke-width,attr"`
+	ExportFilename Filename    `xml:"export-filename,attr"`
+	ExportXdpi     Xdpi        `xml:"export-xdpi,attr"`
+	ExportYdpi     Ydpi        `xml:"export-ydpi,attr"`
+	StrokeLinecap  Linecap     `xml:"stroke-linecap,attr"`
+	Rect           []Rect      `xml:"rect"`
+	G              []G         `xml:"g"`
+	Defs           []Defs      `xml:"defs"`
+	ClipPath       `xml:"clipPath"`
+	Polygon        []Polygon `xml:"polygon"`
+	// removed A
+}
+
+type Stop struct {
+	Text   Text   `xml:",chardata"`
+	ID     D      `xml:"id,attr"`
+	Offset Offset `xml:"offset,attr"`
+	Style  Style  `xml:"style,attr"`
+}
+
+type LinearGradient struct {
+	Text              Text      `xml:",chardata"`
+	ID                ID        `xml:"id,attr"`
+	Collect           Collect   `xml:"collect,attr"`
+	GradientTransform Transform `xml:"gradientTransform,attr"`
+	GradientUnits     Units     `xml:"gradientUnits,attr"`
+	X1                float32   `xml:"x1,attr"`
+	X2                float32   `xml:"x2,attr"`
+	Href              Href      `xml:"href,attr"`
+	Y1                float32   `xml:"y1,attr"`
+	Y2                float32   `xml:"y2,attr"`
+	SpreadMethod      Method    `xml:"spreadMethod,attr"`
+	Stop              []Stop    `xml:"stop"`
+}
+
+type StyleSheet struct {
+	Text Text `xml:",chardata"` // .str0 {stroke:#1F1A17;str...
+	ID   ID   `xml:"id,attr"`
+	Type Type `xml:"type,attr"`
+}
+
+type Rect struct {
+	Text   Text    `xml:",chardata"`
+	Fill   Fill    `xml:"fill,attr"`
+	Height float32 `xml:"height,attr"`
+	ID     D       `xml:"id,attr"`
+	Stroke Stroke  `xml:"stroke,attr"`
+	Width  float32 `xml:"width,attr"`
+	X      float32 `xml:"x,attr"`
+	Y      float32 `xml:"y,attr"`
+}
+
+type Mask struct {
+	Text           Text           `xml:",chardata"`
+	ID             ID             `xml:"id,attr"`
+	LinearGradient LinearGradient `xml:"linearGradient"`
+	Rect           Rect           `xml:"rect"`
+}
+
+type Path struct {
+	Text             Text       `xml:",chardata"`
+	D                D          `xml:"d,attr"`
+	ID               ID         `xml:"id,attr"`
+	Nodetypes        Nodetypes  `xml:"nodetypes,attr"`
+	Style            Style      `xml:"style,attr"`
+	Fill             Fill       `xml:"fill,attr"`
+	Transform        Transform  `xml:"transform,attr"`
+	Class            Class      `xml:"class,attr"`
+	Cx               Cx         `xml:"cx,attr"`
+	Cy               Cy         `xml:"cy,attr"`
+	Rx               Rx         `xml:"rx,attr"`
+	Ry               Ry         `xml:"ry,attr"`
+	Type             Type       `xml:"type,attr"`
+	Knockout         Knockout   `xml:"knockout,attr"`
+	TileCx           Cx         `xml:"tile-cx,attr"`
+	TileCy           Cy         `xml:"tile-cy,attr"`
+	TileH            H          `xml:"tile-h,attr"`
+	TileW            W          `xml:"tile-w,attr"`
+	ClipRule         Rule       `xml:"clip-rule,attr"`
+	FillRule         Rule       `xml:"fill-rule,attr"`
+	Stroke           Stroke     `xml:"stroke,attr"`
+	StrokeWidth      float32    `xml:"stroke-width,attr"`
+	EnableBackground Background `xml:"enable-background,attr"`
+	Isolated         Isolated   `xml:"isolated,attr"`
+	Opacity          Opacity    `xml:"opacity,attr"`
+	ExportXdpi       Xdpi       `xml:"export-xdpi,attr"`
+	ExportYdpi       Ydpi       `xml:"export-ydpi,attr"`
+	End              End        `xml:"end,attr"`
+	Open             Open       `xml:"open,attr"`
+	Start            Start      `xml:"start,attr"`
+	StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
+	Flatsided        Flatsided  `xml:"flatsided,attr"`
+	Label            Label      `xml:"label,attr"`
+	Randomized       Randomized `xml:"randomized,attr"`
+	Rounded          Rounded    `xml:"rounded,attr"`
+	Arg1             Arg1       `xml:"arg1,attr"`
+	Arg2             Arg2       `xml:"arg2,attr"`
+	R1               R1         `xml:"r1,attr"`
+	R2               R2         `xml:"r2,attr"`
+	Sides            Sides      `xml:"sides,attr"`
+	FillCmyk         Cmyk       `xml:"fill-cmyk,attr"`
+}
+
+type Marker struct {
+	Text         Text    `xml:",chardata"`
+	ID           ID      `xml:"id,attr"`
+	MarkerHeight float32 `xml:"markerHeight,attr"`
+	MarkerUnits  Units   `xml:"markerUnits,attr"`
+	MarkerWidth  float32 `xml:"markerWidth,attr"`
+	Orient       Orient  `xml:"orient,attr"`
+	RefX         float32 `xml:"refX,attr"`
+	RefY         float32 `xml:"refY,attr"`
+	ViewBox      Box     `xml:"viewBox,attr"`
+	Stockid      Stockid `xml:"stockid,attr"`
+	Style        Style   `xml:"style,attr"`
+	Path         Path    `xml:"path"`
+}
+
+type RadialGradient struct {
+	Text              Text      `xml:",chardata"`
+	ID                ID        `xml:"id,attr"`
+	Href              Href      `xml:"href,attr"`
+	Cx                Cx        `xml:"cx,attr"`
+	Cy                Cy        `xml:"cy,attr"`
+	Fx                Fx        `xml:"fx,attr"`
+	Fy                Fy        `xml:"fy,attr"`
+	R                 R         `xml:"r,attr"`
+	GradientTransform Transform `xml:"gradientTransform,attr"`
+	GradientUnits     Units     `xml:"gradientUnits,attr"`
+	Collect           Collect   `xml:"collect,attr"`
+	SpreadMethod      Method    `xml:"spreadMethod,attr"`
+	Stop              []Stop    `xml:"stop"`
+}
+
+type Use struct {
+	Text      Text      `xml:",chardata"`
+	ID        ID        `xml:"id,attr"`
+	Href      Href      `xml:"href,attr"`
+	X         float32   `xml:"x,attr"`
+	Y         float32   `xml:"y,attr"`
+	Height    float32   `xml:"height,attr"`
+	Width     float32   `xml:"width,attr"`
+	Transform Transform `xml:"transform,attr"`
+}
+
+type ClipPath struct {
+	Text Text `xml:",chardata"`
+	ID   ID   `xml:"id,attr"`
+	Path Path `xml:"path"`
+}
+
+type Named struct {
+	Text Text `xml:",chardata"`
+	ID   ID   `xml:"id,attr"`
+}
+
+type FontFace struct {
+	Text       Text   `xml:",chardata"`
+	FontFamily Family `xml:"font-family,attr"`
+	ID         ID     `xml:"id,attr"`
+}
+
+type MissingGlyph struct {
+	Text Text `xml:",chardata"`
+	ID   ID   `xml:"id,attr"`
+	Path Path `xml:"path"`
+}
+
+type Glyph struct {
+	Text      Text    `xml:",chardata"`
+	HorizAdvX float32 `xml:"horiz-adv-x,attr"`
+	ID        ID      `xml:"id,attr"`
+	Unicode   Unicode `xml:"unicode,attr"`
+	Path      Path    `xml:"path"`
+}
+
+type Font struct {
+	Text         Text         `xml:",chardata"`
+	FontVariant  Variant      `xml:"fontVariant,attr"`
+	FontWeight   Weight       `xml:"fontWeight,attr"`
+	FullFontName Name         `xml:"fullFontName,attr"`
+	ID           ID           `xml:"id,attr"`
+	FontFace     FontFace     `xml:"font-face"`
+	MissingGlyph MissingGlyph `xml:"missing-glyph"`
+	Glyph        []Glyph      `xml:"glyph"`
+}
+
+type ForeignObject struct {
+	Text               Text       `xml:",chardata"`
+	Height             float32    `xml:"height,attr"`
+	Overflow           Overflow   `xml:"overflow,attr"`
+	RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
+	Width              float32    `xml:"width,attr"`
+	X                  float32    `xml:"x,attr"`
+	Y                  float32    `xml:"y,attr"`
+	FlowDef            struct {
+		Text   Text  `xml:",chardata"`
+		Xmlns  Xmlns `xml:"xmlns,attr"`
+		Region struct {
 			Text Text `xml:",chardata"`
-			ID   D    `xml:"id,attr"`
 			Path struct {
 				Text Text `xml:",chardata"`
 				D    D    `xml:"d,attr"`
 			} `xml:"path"`
-		} `xml:"clipPath"`
-		Defs []struct {
-			Text Text `xml:",chardata"`
-			ID   D    `xml:"id,attr"`
-			Mask struct {
-				Text Text `xml:",chardata"`
-				ID   D    `xml:"id,attr"`
-				Defs struct {
-					Text           Text `xml:",chardata"`
-					ID             D    `xml:"id,attr"`
-					LinearGradient struct {
-						Text          Text    `xml:",chardata"`
-						GradientUnits Units   `xml:"gradientUnits,attr"`
-						ID            D       `xml:"id,attr"`
-						X1            float32 `xml:"x1,attr"`
-						X2            float32 `xml:"x2,attr"`
-						Y1            float32 `xml:"y1,attr"`
-						Y2            float32 `xml:"y2,attr"`
-						Stop          []struct {
-							Text   Text   `xml:",chardata"`
-							ID     D      `xml:"id,attr"`
-							Offset Offset `xml:"offset,attr"`
-							Style  Style  `xml:"style,attr"`
-						} `xml:"stop"`
-					} `xml:"linearGradient"`
-				} `xml:"defs"`
-				Rect struct {
-					Text   Text    `xml:",chardata"`
-					Height float32 `xml:"height,attr"`
-					ID     D       `xml:"id,attr"`
-					Style  Style   `xml:"style,attr"`
-					Width  float32 `xml:"width,attr"`
-					X      float32 `xml:"x,attr"`
-					Y      float32 `xml:"y,attr"`
-				} `xml:"rect"`
-			} `xml:"mask"`
-		} `xml:"defs"`
-		Path struct {
-			Text Text `xml:",chardata"`
-			D    D    `xml:"d,attr"`
-			Fill Fill `xml:"fill,attr"`
-			ID   D    `xml:"id,attr"`
-		} `xml:"path"`
-		Namedview []struct {
-			Text Text `xml:",chardata"`
-			ID   D    `xml:"id,attr"`
-		} `xml:"namedview"`
-		Font struct {
-			Text         Text    `xml:",chardata"`
-			FontVariant  Variant `xml:"fontVariant,attr"`
-			FontWeight   Weight  `xml:"fontWeight,attr"`
-			FullFontName Name    `xml:"fullFontName,attr"`
-			ID           D       `xml:"id,attr"`
-			FontFace     struct {
-				Text       Text   `xml:",chardata"`
-				FontFamily Family `xml:"font-family,attr"`
-				ID         D      `xml:"id,attr"`
-			} `xml:"font-face"`
-			MissingGlyph struct {
-				Text Text `xml:",chardata"`
-				ID   D    `xml:"id,attr"`
-				Path struct {
-					Text Text `xml:",chardata"`
-					D    D    `xml:"d,attr"`
-					ID   D    `xml:"id,attr"`
-				} `xml:"path"`
-			} `xml:"missing-glyph"`
-			Glyph []struct {
-				Text      Text    `xml:",chardata"`
-				HorizAdvX float32 `xml:"horiz-adv-x,attr"`
-				ID        D       `xml:"id,attr"`
-				Unicode   Unicode `xml:"unicode,attr"`
-				Path      struct {
-					Text Text `xml:",chardata"`
-					D    D    `xml:"d,attr"`
-					ID   D    `xml:"id,attr"`
-				} `xml:"path"`
-			} `xml:"glyph"`
-		} `xml:"font"`
-	} `xml:"defs"`
-	Namedview struct {
-		Text           Text           `xml:",chardata"`
-		Bordercolor    Bordercolor    `xml:"bordercolor,attr"`
-		Borderopacity  Borderopacity  `xml:"borderopacity,attr"`
-		ID             D              `xml:"id,attr"`
-		CurrentLayer   Layer          `xml:"current-layer,attr"`
-		Cx             Cx             `xml:"cx,attr"`
-		Cy             Cy             `xml:"cy,attr"`
-		Pageopacity    Pageopacity    `xml:"pageopacity,attr"`
-		Pageshadow     Pageshadow     `xml:"pageshadow,attr"`
-		WindowHeight   float32        `xml:"window-height,attr"`
-		WindowWidth    float32        `xml:"window-width,attr"`
-		WindowX        float32        `xml:"window-x,attr"`
-		WindowY        float32        `xml:"window-y,attr"`
-		Zoom           Zoom           `xml:"zoom,attr"`
-		Pagecolor      Pagecolor      `xml:"pagecolor,attr"`
-		DocumentUnits  Units          `xml:"document-units,attr"`
-		GridBbox       Bbox           `xml:"grid-bbox,attr"`
-		GuideBbox      Bbox           `xml:"guide-bbox,attr"`
-		Showgrid       Showgrid       `xml:"showgrid,attr"`
-		Showguides     Showguides     `xml:"showguides,attr"`
-		Guidetolerance Guidetolerance `xml:"guidetolerance,attr"`
-		GuidePoints    Points         `xml:"guide-points,attr"`
-		Gridspacingx   Gridspacingx   `xml:"gridspacingx,attr"`
-		Gridspacingy   Gridspacingy   `xml:"gridspacingy,attr"`
-		Gridtolerance  Gridtolerance  `xml:"gridtolerance,attr"`
-		GridPoints     Points         `xml:"grid-points,attr"`
-		Gridcolor      Gridcolor      `xml:"gridcolor,attr"`
-		Gridopacity    Gridopacity    `xml:"gridopacity,attr"`
-		Gridoriginx    Gridoriginx    `xml:"gridoriginx,attr"`
-		Gridoriginy    Gridoriginy    `xml:"gridoriginy,attr"`
-		Guidecolor     Guidecolor     `xml:"guidecolor,attr"`
-		Guidehicolor   Guidehicolor   `xml:"guidehicolor,attr"`
-		Guidehiopacity Guidehiopacity `xml:"guidehiopacity,attr"`
-		Guideopacity   Guideopacity   `xml:"guideopacity,attr"`
-		Snaptogrid     Snaptogrid     `xml:"snaptogrid,attr"`
-		Fill           Fill           `xml:"fill,attr"`
-		Gridhicolor    Gridhicolor    `xml:"gridhicolor,attr"`
-		Showborder     Showborder     `xml:"showborder,attr"`
-		Snaptoguides   Snaptoguides   `xml:"snaptoguides,attr"`
-		Borderlayer    Borderlayer    `xml:"borderlayer,attr"`
-		Gridempcolor   Gridempcolor   `xml:"gridempcolor,attr"`
-		Gridempopacity Gridempopacity `xml:"gridempopacity,attr"`
-		Gridempspacing Gridempspacing `xml:"gridempspacing,attr"`
-		Guide          []struct {
-			Text        Text        `xml:",chardata"`
-			ID          D           `xml:"id,attr"`
-			Orientation Orientation `xml:"orientation,attr"`
-			Position    Position    `xml:"position,attr"`
-		} `xml:"guide"`
-	} `xml:"namedview"`
-	G []struct {
-		Chardata       Chardata    `xml:",chardata"`
-		ID             D           `xml:"id,attr"`
-		Transform      Transform   `xml:"transform,attr"`
-		Groupmode      Groupmode   `xml:"groupmode,attr"`
-		Label          Label       `xml:"label,attr"`
-		Insensitive    Insensitive `xml:"insensitive,attr"`
-		Style          Style       `xml:"style,attr"`
-		DimmedPercent  Percent     `xml:"dimmedPercent,attr"`
-		Knockout       Knockout    `xml:"knockout,attr"`
-		Layer          Layer       `xml:"layer,attr"`
-		RgbTrio        Trio        `xml:"rgbTrio,attr"`
-		Display        Display     `xml:"display,attr"`
-		Visible        Visible     `xml:"visible,attr"`
-		Visibility     Visibility  `xml:"visibility,attr"`
-		Fill           Fill        `xml:"fill,attr"`
-		Stroke         Stroke      `xml:"stroke,attr"`
-		StrokeWidth    float32     `xml:"stroke-width,attr"`
-		ExportFilename Filename    `xml:"export-filename,attr"`
-		ExportXdpi     Xdpi        `xml:"export-xdpi,attr"`
-		ExportYdpi     Ydpi        `xml:"export-ydpi,attr"`
-		StrokeLinecap  Linecap     `xml:"stroke-linecap,attr"`
-		Rect           []struct {
-			Text        Text        `xml:",chardata"`
-			Height      float32     `xml:"height,attr"`
-			ID          D           `xml:"id,attr"`
-			Rx          Rx          `xml:"rx,attr"`
-			Ry          Ry          `xml:"ry,attr"`
-			Style       Style       `xml:"style,attr"`
-			Width       float32     `xml:"width,attr"`
-			X           float32     `xml:"x,attr"`
-			Y           float32     `xml:"y,attr"`
-			Transform   Transform   `xml:"transform,attr"`
-			Fill        Fill        `xml:"fill,attr"`
-			Stroke      Stroke      `xml:"stroke,attr"`
-			StrokeWidth float32     `xml:"stroke-width,attr"`
-			Label       Label       `xml:"label,attr"`
-			FillCmyk    Cmyk        `xml:"fill-cmyk,attr"`
-			Insensitive Insensitive `xml:"insensitive,attr"`
-		} `xml:"rect"`
-		G []struct {
-			Chardata       Chardata  `xml:",chardata"`
-			ID             D         `xml:"id,attr"`
-			Transform      Transform `xml:"transform,attr"`
-			Style          Style     `xml:"style,attr"`
-			ExportFilename Filename  `xml:"export-filename,attr"`
-			ExportXdpi     Xdpi      `xml:"export-xdpi,attr"`
-			ExportYdpi     Ydpi      `xml:"export-ydpi,attr"`
-			Groupmode      Groupmode `xml:"groupmode,attr"`
-			Label          Label     `xml:"label,attr"`
-			Display        Display   `xml:"display,attr"`
-			Knockout       Knockout  `xml:"knockout,attr"`
-			G              []struct {
-				Chardata  Chardata  `xml:",chardata"`
-				ID        D         `xml:"id,attr"`
-				Transform Transform `xml:"transform,attr"`
-				Style     Style     `xml:"style,attr"`
-				Path      []struct {
-					Text        Text      `xml:",chardata"`
-					D           D         `xml:"d,attr"`
-					ID          D         `xml:"id,attr"`
-					Cx          Cx        `xml:"cx,attr"`
-					Cy          Cy        `xml:"cy,attr"`
-					Rx          Rx        `xml:"rx,attr"`
-					Ry          Ry        `xml:"ry,attr"`
-					Type        Type      `xml:"type,attr"`
-					Style       Style     `xml:"style,attr"`
-					Transform   Transform `xml:"transform,attr"`
-					Fill        Fill      `xml:"fill,attr"`
-					Knockout    Knockout  `xml:"knockout,attr"`
-					Stroke      Stroke    `xml:"stroke,attr"`
-					StrokeWidth float32   `xml:"stroke-width,attr"`
-					Nodetypes   Nodetypes `xml:"nodetypes,attr"`
-					TileCx      Cx        `xml:"tile-cx,attr"`
-					TileCy      Cy        `xml:"tile-cy,attr"`
-					TileH       H         `xml:"tile-h,attr"`
-					TileW       W         `xml:"tile-w,attr"`
-					ClipPath    Path      `xml:"clip-path,attr"`
-					ClipRule    Rule      `xml:"clip-rule,attr"`
-					FillRule    Rule      `xml:"fill-rule,attr"`
-					Flatsided   Flatsided `xml:"flatsided,attr"`
-					Rounded     Rounded   `xml:"rounded,attr"`
-					Arg1        Arg1      `xml:"arg1,attr"`
-					Arg2        Arg2      `xml:"arg2,attr"`
-					R1          R1        `xml:"r1,attr"`
-					R2          R2        `xml:"r2,attr"`
-					Sides       Sides     `xml:"sides,attr"`
-				} `xml:"path"`
-				G []struct {
-					Chardata     Chardata  `xml:",chardata"`
-					ID           D         `xml:"id,attr"`
-					Style        Style     `xml:"style,attr"`
-					Transform    Transform `xml:"transform,attr"`
-					AttrClipPath Path      `xml:"clip-path,attr"`
-					Path         []struct {
-						Text        Text       `xml:",chardata"`
-						D           D          `xml:"d,attr"`
-						ID          D          `xml:"id,attr"`
-						Cx          Cx         `xml:"cx,attr"`
-						Cy          Cy         `xml:"cy,attr"`
-						Rx          Rx         `xml:"rx,attr"`
-						Ry          Ry         `xml:"ry,attr"`
-						Type        Type       `xml:"type,attr"`
-						Style       Style      `xml:"style,attr"`
-						Transform   Transform  `xml:"transform,attr"`
-						Knockout    Knockout   `xml:"knockout,attr"`
-						Stroke      Stroke     `xml:"stroke,attr"`
-						StrokeWidth float32    `xml:"stroke-width,attr"`
-						Flatsided   Flatsided  `xml:"flatsided,attr"`
-						Randomized  Randomized `xml:"randomized,attr"`
-						Rounded     Rounded    `xml:"rounded,attr"`
-						Arg1        Arg1       `xml:"arg1,attr"`
-						Arg2        Arg2       `xml:"arg2,attr"`
-						R1          R1         `xml:"r1,attr"`
-						R2          R2         `xml:"r2,attr"`
-						Sides       Sides      `xml:"sides,attr"`
-						Nodetypes   Nodetypes  `xml:"nodetypes,attr"`
-					} `xml:"path"`
-					Use []struct {
-						Text      Text      `xml:",chardata"`
-						Transform Transform `xml:"transform,attr"`
-						Href      Href      `xml:"href,attr"`
-					} `xml:"use"`
-					Text []struct {
-						Text        Text        `xml:",chardata"`
-						FontSize    Size        `xml:"font-size,attr"`
-						ID          D           `xml:"id,attr"`
-						TextAnchor  Anchor      `xml:"text-anchor,attr"`
-						X           float32     `xml:"x,attr"`
-						Y           float32     `xml:"y,attr"`
-						Linespacing Linespacing `xml:"linespacing,attr"`
-						Style       Style       `xml:"style,attr"`
-						Space       Space       `xml:"space,attr"`
-						Tspan       []struct {
-							Text Text    `xml:",chardata"` // 0, 0, 75678, 16412, 5, c,...
-							ID   D       `xml:"id,attr"`
-							Role Role    `xml:"role,attr"`
-							X    float32 `xml:"x,attr"`
-							Y    float32 `xml:"y,attr"`
-						} `xml:"tspan"`
-					} `xml:"text"`
-					G []struct {
-						Text         Text      `xml:",chardata"`
-						ID           D         `xml:"id,attr"`
-						Transform    Transform `xml:"transform,attr"`
-						Style        Style     `xml:"style,attr"`
-						AttrClipPath Path      `xml:"clip-path,attr"`
-						Path         []struct {
-							Text      Text      `xml:",chardata"`
-							D         D         `xml:"d,attr"`
-							ID        D         `xml:"id,attr"`
-							Style     Style     `xml:"style,attr"`
-							Transform Transform `xml:"transform,attr"`
-							Nodetypes Nodetypes `xml:"nodetypes,attr"`
-						} `xml:"path"`
-						Rect []struct {
-							Text      Text      `xml:",chardata"`
-							Height    float32   `xml:"height,attr"`
-							ID        D         `xml:"id,attr"`
-							Style     Style     `xml:"style,attr"`
-							Transform Transform `xml:"transform,attr"`
-							Width     float32   `xml:"width,attr"`
-							X         float32   `xml:"x,attr"`
-							Y         float32   `xml:"y,attr"`
-						} `xml:"rect"`
-						G []struct {
-							Text         Text      `xml:",chardata"`
-							ID           D         `xml:"id,attr"`
-							Transform    Transform `xml:"transform,attr"`
-							Style        Style     `xml:"style,attr"`
-							AttrClipPath Path      `xml:"clip-path,attr"`
-							Path         []struct {
-								Text      Text      `xml:",chardata"`
-								D         D         `xml:"d,attr"`
-								ID        D         `xml:"id,attr"`
-								Style     Style     `xml:"style,attr"`
-								Nodetypes Nodetypes `xml:"nodetypes,attr"`
-								Transform Transform `xml:"transform,attr"`
-							} `xml:"path"`
-							G []struct {
-								Text      Text      `xml:",chardata"`
-								ID        D         `xml:"id,attr"`
-								Style     Style     `xml:"style,attr"`
-								ClipPath  Path      `xml:"clip-path,attr"`
-								Transform Transform `xml:"transform,attr"`
-								Path      []struct {
-									Text      Text      `xml:",chardata"`
-									D         D         `xml:"d,attr"`
-									ID        D         `xml:"id,attr"`
-									Nodetypes Nodetypes `xml:"nodetypes,attr"`
-									Style     Style     `xml:"style,attr"`
-									Transform Transform `xml:"transform,attr"`
-								} `xml:"path"`
-								Switch struct {
-									Text          Text      `xml:",chardata"`
-									ObjectNS      S         `xml:"objectNS,attr"`
-									ObjectType    Type      `xml:"objectType,attr"`
-									ID            D         `xml:"id,attr"`
-									Transform     Transform `xml:"transform,attr"`
-									ForeignObject struct {
-										Text               Text       `xml:",chardata"`
-										Height             float32    `xml:"height,attr"`
-										Overflow           Overflow   `xml:"overflow,attr"`
-										RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
-										Width              float32    `xml:"width,attr"`
-										X                  float32    `xml:"x,attr"`
-										Y                  float32    `xml:"y,attr"`
-										ImageReplacement   struct {
-											Text            Text    `xml:",chardata"`
-											Align           Align   `xml:"align,attr"`
-											Height          float32 `xml:"height,attr"`
-											PlacementMethod Method  `xml:"placementMethod,attr"`
-											RefHeight       float32 `xml:"refHeight,attr"`
-											RefWidth        float32 `xml:"refWidth,attr"`
-											Valign          Valign  `xml:"valign,attr"`
-											Width           float32 `xml:"width,attr"`
-											X               float32 `xml:"x,attr"`
-											Xmlns           Xmlns   `xml:"xmlns,attr"`
-											Y               float32 `xml:"y,attr"`
-										} `xml:"imageReplacement"`
-										TargetRef struct {
-											Text Text `xml:",chardata"`
-											Href Href `xml:"href,attr"`
-										} `xml:"targetRef"`
-									} `xml:"foreignObject"`
-									Image struct {
-										Text     Text     `xml:",chardata"`
-										Height   float32  `xml:"height,attr"`
-										Knockout Knockout `xml:"knockout,attr"`
-										ID       D        `xml:"id,attr"`
-										Width    float32  `xml:"width,attr"`
-										Href     Href     `xml:"href,attr"`
-									} `xml:"image"`
-								} `xml:"switch"`
-								Rect struct {
-									Text   Text    `xml:",chardata"`
-									Height float32 `xml:"height,attr"`
-									ID     D       `xml:"id,attr"`
-									Style  Style   `xml:"style,attr"`
-									Width  float32 `xml:"width,attr"`
-									X      float32 `xml:"x,attr"`
-									Y      float32 `xml:"y,attr"`
-								} `xml:"rect"`
-								Ellipse struct {
-									Text      Text      `xml:",chardata"`
-									Cx        Cx        `xml:"cx,attr"`
-									Cy        Cy        `xml:"cy,attr"`
-									ID        D         `xml:"id,attr"`
-									Rx        Rx        `xml:"rx,attr"`
-									Ry        Ry        `xml:"ry,attr"`
-									Style     Style     `xml:"style,attr"`
-									Transform Transform `xml:"transform,attr"`
-								} `xml:"ellipse"`
-								G []struct {
-									Text      Text      `xml:",chardata"`
-									ID        D         `xml:"id,attr"`
-									Transform Transform `xml:"transform,attr"`
-									Rect      struct {
-										Text   Text    `xml:",chardata"`
-										Height float32 `xml:"height,attr"`
-										ID     D       `xml:"id,attr"`
-										Style  Style   `xml:"style,attr"`
-										Width  float32 `xml:"width,attr"`
-										X      float32 `xml:"x,attr"`
-										Y      float32 `xml:"y,attr"`
-									} `xml:"rect"`
-									Ellipse struct {
-										Text      Text      `xml:",chardata"`
-										Cx        Cx        `xml:"cx,attr"`
-										Cy        Cy        `xml:"cy,attr"`
-										ID        D         `xml:"id,attr"`
-										Rx        Rx        `xml:"rx,attr"`
-										Ry        Ry        `xml:"ry,attr"`
-										Style     Style     `xml:"style,attr"`
-										Transform Transform `xml:"transform,attr"`
-									} `xml:"ellipse"`
-									G []struct {
-										Text      Text      `xml:",chardata"`
-										ID        D         `xml:"id,attr"`
-										Transform Transform `xml:"transform,attr"`
-										Rect      struct {
-											Text   Text    `xml:",chardata"`
-											Height float32 `xml:"height,attr"`
-											ID     D       `xml:"id,attr"`
-											Style  Style   `xml:"style,attr"`
-											Width  float32 `xml:"width,attr"`
-											X      float32 `xml:"x,attr"`
-											Y      float32 `xml:"y,attr"`
-										} `xml:"rect"`
-										Ellipse struct {
-											Text      Text      `xml:",chardata"`
-											Cx        Cx        `xml:"cx,attr"`
-											Cy        Cy        `xml:"cy,attr"`
-											ID        D         `xml:"id,attr"`
-											Rx        Rx        `xml:"rx,attr"`
-											Ry        Ry        `xml:"ry,attr"`
-											Style     Style     `xml:"style,attr"`
-											Transform Transform `xml:"transform,attr"`
-										} `xml:"ellipse"`
-									} `xml:"g"`
-								} `xml:"g"`
-							} `xml:"g"`
-							Defs struct {
-								Text Text `xml:",chardata"`
-								Rect struct {
-									Text      Text      `xml:",chardata"`
-									Height    float32   `xml:"height,attr"`
-									ID        D         `xml:"id,attr"`
-									Transform Transform `xml:"transform,attr"`
-									Width     float32   `xml:"width,attr"`
-									X         float32   `xml:"x,attr"`
-									Y         float32   `xml:"y,attr"`
-								} `xml:"rect"`
-							} `xml:"defs"`
-							ClipPath struct {
-								Text Text `xml:",chardata"`
-								ID   D    `xml:"id,attr"`
-								Use  struct {
-									Text Text `xml:",chardata"`
-									Href Href `xml:"href,attr"`
-								} `xml:"use"`
-							} `xml:"clipPath"`
-							Switch struct {
-								Text          Text      `xml:",chardata"`
-								ObjectNS      S         `xml:"objectNS,attr"`
-								ObjectType    Type      `xml:"objectType,attr"`
-								ID            D         `xml:"id,attr"`
-								Transform     Transform `xml:"transform,attr"`
-								ForeignObject struct {
-									Text               Text       `xml:",chardata"`
-									Height             float32    `xml:"height,attr"`
-									Overflow           Overflow   `xml:"overflow,attr"`
-									RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
-									Width              float32    `xml:"width,attr"`
-									X                  float32    `xml:"x,attr"`
-									Y                  float32    `xml:"y,attr"`
-									ImageReplacement   struct {
-										Text            Text    `xml:",chardata"`
-										Align           Align   `xml:"align,attr"`
-										Height          float32 `xml:"height,attr"`
-										PlacementMethod Method  `xml:"placementMethod,attr"`
-										RefHeight       float32 `xml:"refHeight,attr"`
-										RefWidth        float32 `xml:"refWidth,attr"`
-										Valign          Valign  `xml:"valign,attr"`
-										Width           float32 `xml:"width,attr"`
-										X               float32 `xml:"x,attr"`
-										Xmlns           Xmlns   `xml:"xmlns,attr"`
-										Y               float32 `xml:"y,attr"`
-									} `xml:"imageReplacement"`
-									TargetRef struct {
-										Text Text `xml:",chardata"`
-										Href Href `xml:"href,attr"`
-									} `xml:"targetRef"`
-								} `xml:"foreignObject"`
-								Image struct {
-									Text     Text     `xml:",chardata"`
-									Height   float32  `xml:"height,attr"`
-									Knockout Knockout `xml:"knockout,attr"`
-									ID       D        `xml:"id,attr"`
-									Width    float32  `xml:"width,attr"`
-									Href     Href     `xml:"href,attr"`
-								} `xml:"image"`
-							} `xml:"switch"`
-							Rect struct {
-								Text   Text    `xml:",chardata"`
-								Height float32 `xml:"height,attr"`
-								ID     D       `xml:"id,attr"`
-								Style  Style   `xml:"style,attr"`
-								Width  float32 `xml:"width,attr"`
-								X      float32 `xml:"x,attr"`
-								Y      float32 `xml:"y,attr"`
-							} `xml:"rect"`
-							Ellipse struct {
-								Text      Text      `xml:",chardata"`
-								Cx        Cx        `xml:"cx,attr"`
-								Cy        Cy        `xml:"cy,attr"`
-								ID        D         `xml:"id,attr"`
-								Rx        Rx        `xml:"rx,attr"`
-								Ry        Ry        `xml:"ry,attr"`
-								Style     Style     `xml:"style,attr"`
-								Transform Transform `xml:"transform,attr"`
-							} `xml:"ellipse"`
-						} `xml:"g"`
-						Defs struct {
-							Text Text `xml:",chardata"`
-							Rect struct {
-								Text   Text    `xml:",chardata"`
-								Height float32 `xml:"height,attr"`
-								ID     D       `xml:"id,attr"`
-								Width  float32 `xml:"width,attr"`
-								X      float32 `xml:"x,attr"`
-								Y      float32 `xml:"y,attr"`
-							} `xml:"rect"`
-						} `xml:"defs"`
-						ClipPath struct {
-							Text Text `xml:",chardata"`
-							ID   D    `xml:"id,attr"`
-							Use  struct {
-								Text Text `xml:",chardata"`
-								Href Href `xml:"href,attr"`
-							} `xml:"use"`
-						} `xml:"clipPath"`
-						Ellipse []struct {
-							Text      Text      `xml:",chardata"`
-							Cx        Cx        `xml:"cx,attr"`
-							Cy        Cy        `xml:"cy,attr"`
-							ID        D         `xml:"id,attr"`
-							Rx        Rx        `xml:"rx,attr"`
-							Ry        Ry        `xml:"ry,attr"`
-							Style     Style     `xml:"style,attr"`
-							Transform Transform `xml:"transform,attr"`
-						} `xml:"ellipse"`
-					} `xml:"g"`
-					Rect []struct {
-						Text      Text      `xml:",chardata"`
-						Height    float32   `xml:"height,attr"`
-						ID        D         `xml:"id,attr"`
-						Style     Style     `xml:"style,attr"`
-						Width     float32   `xml:"width,attr"`
-						X         float32   `xml:"x,attr"`
-						Y         float32   `xml:"y,attr"`
-						Transform Transform `xml:"transform,attr"`
-						Rx        Rx        `xml:"rx,attr"`
-						Ry        Ry        `xml:"ry,attr"`
-					} `xml:"rect"`
-					Defs struct {
-						Text Text `xml:",chardata"`
-						Rect struct {
-							Text      Text      `xml:",chardata"`
-							Height    float32   `xml:"height,attr"`
-							ID        D         `xml:"id,attr"`
-							Transform Transform `xml:"transform,attr"`
-							Width     float32   `xml:"width,attr"`
-							X         float32   `xml:"x,attr"`
-							Y         float32   `xml:"y,attr"`
-						} `xml:"rect"`
-					} `xml:"defs"`
-					ClipPath struct {
-						Text Text `xml:",chardata"`
-						ID   D    `xml:"id,attr"`
-						Use  struct {
-							Text Text `xml:",chardata"`
-							Href Href `xml:"href,attr"`
-						} `xml:"use"`
-					} `xml:"clipPath"`
-					Polygon []struct {
-						Text      Text      `xml:",chardata"`
-						ID        D         `xml:"id,attr"`
-						Points    Points    `xml:"points,attr"`
-						Arg1      Arg1      `xml:"arg1,attr"`
-						Arg2      Arg2      `xml:"arg2,attr"`
-						Cx        Cx        `xml:"cx,attr"`
-						Cy        Cy        `xml:"cy,attr"`
-						R1        R1        `xml:"r1,attr"`
-						R2        R2        `xml:"r2,attr"`
-						Sides     Sides     `xml:"sides,attr"`
-						Type      Type      `xml:"type,attr"`
-						Style     Style     `xml:"style,attr"`
-						Transform Transform `xml:"transform,attr"`
-					} `xml:"polygon"`
-					A struct {
-						Text      Text      `xml:",chardata"`
-						ID        D         `xml:"id,attr"`
-						Transform Transform `xml:"transform,attr"`
-						G         struct {
-							Text      Text      `xml:",chardata"`
-							ID        D         `xml:"id,attr"`
-							Transform Transform `xml:"transform,attr"`
-							G         []struct {
-								Text      Text      `xml:",chardata"`
-								ID        D         `xml:"id,attr"`
-								Transform Transform `xml:"transform,attr"`
-								Path      []struct {
-									Text      Text      `xml:",chardata"`
-									D         D         `xml:"d,attr"`
-									ID        D         `xml:"id,attr"`
-									Nodetypes Nodetypes `xml:"nodetypes,attr"`
-									Style     Style     `xml:"style,attr"`
-								} `xml:"path"`
-							} `xml:"g"`
-						} `xml:"g"`
-					} `xml:"a"`
-					Ellipse []struct {
-						Text      Text      `xml:",chardata"`
-						Cx        Cx        `xml:"cx,attr"`
-						Cy        Cy        `xml:"cy,attr"`
-						ID        D         `xml:"id,attr"`
-						Rx        Rx        `xml:"rx,attr"`
-						Ry        Ry        `xml:"ry,attr"`
-						Style     Style     `xml:"style,attr"`
-						Transform Transform `xml:"transform,attr"`
-					} `xml:"ellipse"`
-				} `xml:"g"`
-				Rect []struct {
-					Text        Text      `xml:",chardata"`
-					Fill        Fill      `xml:"fill,attr"`
-					Height      float32   `xml:"height,attr"`
-					Knockout    Knockout  `xml:"knockout,attr"`
-					Stroke      Stroke    `xml:"stroke,attr"`
-					StrokeWidth float32   `xml:"stroke-width,attr"`
-					Transform   Transform `xml:"transform,attr"`
-					Width       float32   `xml:"width,attr"`
-					X           float32   `xml:"x,attr"`
-					Y           float32   `xml:"y,attr"`
-					ID          D         `xml:"id,attr"`
-					Style       Style     `xml:"style,attr"`
-					Rx          Rx        `xml:"rx,attr"`
-					Ry          Ry        `xml:"ry,attr"`
-					ClipPath    Path      `xml:"clip-path,attr"`
-				} `xml:"rect"`
-				LinearGradient struct {
-					Text          Text    `xml:",chardata"`
-					GradientUnits Units   `xml:"gradientUnits,attr"`
-					ID            D       `xml:"id,attr"`
-					X1            float32 `xml:"x1,attr"`
-					X2            float32 `xml:"x2,attr"`
-					Y1            float32 `xml:"y1,attr"`
-					Y2            float32 `xml:"y2,attr"`
-					Stop          []struct {
-						Text   Text   `xml:",chardata"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"stop"`
-					MidPointStop []struct {
-						Text   Text   `xml:",chardata"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"midPointStop"`
-				} `xml:"linearGradient"`
-				Desc Desc `xml:"desc"` // Drawing, Drawing, Drawing...
-				Defs struct {
-					Text Text `xml:",chardata"`
-					Rect struct {
-						Text   Text    `xml:",chardata"`
-						Height float32 `xml:"height,attr"`
-						ID     D       `xml:"id,attr"`
-						Width  float32 `xml:"width,attr"`
-						X      float32 `xml:"x,attr"`
-						Y      float32 `xml:"y,attr"`
-					} `xml:"rect"`
-					Path struct {
-						Text Text `xml:",chardata"`
-						D    D    `xml:"d,attr"`
-						ID   D    `xml:"id,attr"`
-					} `xml:"path"`
-				} `xml:"defs"`
-				ClipPath struct {
-					Text Text `xml:",chardata"`
-					ID   D    `xml:"id,attr"`
-					Use  struct {
-						Text Text `xml:",chardata"`
-						Href Href `xml:"href,attr"`
-					} `xml:"use"`
-				} `xml:"clipPath"`
-				Ellipse []struct {
-					Text      Text      `xml:",chardata"`
-					Cx        Cx        `xml:"cx,attr"`
-					Cy        Cy        `xml:"cy,attr"`
-					ID        D         `xml:"id,attr"`
-					Rx        Rx        `xml:"rx,attr"`
-					Ry        Ry        `xml:"ry,attr"`
-					Style     Style     `xml:"style,attr"`
-					Transform Transform `xml:"transform,attr"`
-				} `xml:"ellipse"`
-				Polygon []struct {
-					Text      Text      `xml:",chardata"`
-					ID        D         `xml:"id,attr"`
-					Points    Points    `xml:"points,attr"`
-					Arg1      Arg1      `xml:"arg1,attr"`
-					Arg2      Arg2      `xml:"arg2,attr"`
-					Cx        Cx        `xml:"cx,attr"`
-					Cy        Cy        `xml:"cy,attr"`
-					R1        R1        `xml:"r1,attr"`
-					R2        R2        `xml:"r2,attr"`
-					Sides     Sides     `xml:"sides,attr"`
-					Type      Type      `xml:"type,attr"`
-					Style     Style     `xml:"style,attr"`
-					Transform Transform `xml:"transform,attr"`
-				} `xml:"polygon"`
-				Use []struct {
-					Text      Text      `xml:",chardata"`
-					Height    float32   `xml:"height,attr"`
-					ID        D         `xml:"id,attr"`
-					Transform Transform `xml:"transform,attr"`
-					Width     float32   `xml:"width,attr"`
-					X         float32   `xml:"x,attr"`
-					Href      Href      `xml:"href,attr"`
-					Y         float32   `xml:"y,attr"`
-				} `xml:"use"`
-				Text []struct {
-					Text        Text        `xml:",chardata"`
-					ID          D           `xml:"id,attr"`
-					Linespacing Linespacing `xml:"linespacing,attr"`
-					Style       Style       `xml:"style,attr"`
-					X           float32     `xml:"x,attr"`
-					Y           float32     `xml:"y,attr"`
-					Tspan       struct {
-						Text Text    `xml:",chardata"` // L, I, B, E, R, T, A, S
-						ID   D       `xml:"id,attr"`
-						Role Role    `xml:"role,attr"`
-						X    float32 `xml:"x,attr"`
-						Y    float32 `xml:"y,attr"`
-					} `xml:"tspan"`
-				} `xml:"text"`
-			} `xml:"g"`
-			Path []struct {
-				Text             Text       `xml:",chardata"`
-				D                D          `xml:"d,attr"`
-				ID               D          `xml:"id,attr"`
-				Nodetypes        Nodetypes  `xml:"nodetypes,attr"`
-				Style            Style      `xml:"style,attr"`
-				Cx               Cx         `xml:"cx,attr"`
-				Cy               Cy         `xml:"cy,attr"`
-				Rx               Rx         `xml:"rx,attr"`
-				Ry               Ry         `xml:"ry,attr"`
-				Type             Type       `xml:"type,attr"`
-				Transform        Transform  `xml:"transform,attr"`
-				Class            Class      `xml:"class,attr"`
-				Fill             Fill       `xml:"fill,attr"`
-				Knockout         Knockout   `xml:"knockout,attr"`
-				Stroke           Stroke     `xml:"stroke,attr"`
-				StrokeWidth      float32    `xml:"stroke-width,attr"`
-				Original         Original   `xml:"original,attr"`
-				Radius           Radius     `xml:"radius,attr"`
-				ClipRule         Rule       `xml:"clip-rule,attr"`
-				FillRule         Rule       `xml:"fill-rule,attr"`
-				StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
-				Flatsided        Flatsided  `xml:"flatsided,attr"`
-				Randomized       Randomized `xml:"randomized,attr"`
-				Rounded          Rounded    `xml:"rounded,attr"`
-				Arg1             Arg1       `xml:"arg1,attr"`
-				Arg2             Arg2       `xml:"arg2,attr"`
-				R1               R1         `xml:"r1,attr"`
-				R2               R2         `xml:"r2,attr"`
-				Sides            Sides      `xml:"sides,attr"`
-				Opacity          Opacity    `xml:"opacity,attr"`
-				End              End        `xml:"end,attr"`
-				Open             Open       `xml:"open,attr"`
-				Start            Start      `xml:"start,attr"`
-				Argument         Argument   `xml:"argument,attr"`
-				Expansion        Expansion  `xml:"expansion,attr"`
-				Revolution       Revolution `xml:"revolution,attr"`
-				T0               T0         `xml:"t0,attr"`
-			} `xml:"path"`
-			Rect []struct {
-				Text        Text      `xml:",chardata"`
-				Height      float32   `xml:"height,attr"`
-				ID          D         `xml:"id,attr"`
-				Rx          Rx        `xml:"rx,attr"`
-				Ry          Ry        `xml:"ry,attr"`
-				Style       Style     `xml:"style,attr"`
-				Width       float32   `xml:"width,attr"`
-				X           float32   `xml:"x,attr"`
-				Y           float32   `xml:"y,attr"`
-				Transform   Transform `xml:"transform,attr"`
-				Fill        Fill      `xml:"fill,attr"`
-				Knockout    Knockout  `xml:"knockout,attr"`
-				Stroke      Stroke    `xml:"stroke,attr"`
-				StrokeWidth float32   `xml:"stroke-width,attr"`
-				FillCmyk    Cmyk      `xml:"fill-cmyk,attr"`
-				Class       Class     `xml:"class,attr"`
-			} `xml:"rect"`
-			Text []struct {
-				Text        Text        `xml:",chardata"`
-				ID          D           `xml:"id,attr"`
-				Linespacing Linespacing `xml:"linespacing,attr"`
-				Space       Space       `xml:"space,attr"`
-				Style       Style       `xml:"style,attr"`
-				X           float32     `xml:"x,attr"`
-				Y           float32     `xml:"y,attr"`
-				Transform   Transform   `xml:"transform,attr"`
-				Tspan       struct {
-					Text  Text    `xml:",chardata"` // RSS, RSS, 12, 6, 3, 9, W,...
-					ID    D       `xml:"id,attr"`
-					Role  Role    `xml:"role,attr"`
-					Style Style   `xml:"style,attr"`
-					X     float32 `xml:"x,attr"`
-					Y     float32 `xml:"y,attr"`
-				} `xml:"tspan"`
-			} `xml:"text"`
-			LinearGradient []struct {
-				Text              Text      `xml:",chardata"`
-				GradientUnits     Units     `xml:"gradientUnits,attr"`
-				ID                D         `xml:"id,attr"`
-				X1                float32   `xml:"x1,attr"`
-				X2                float32   `xml:"x2,attr"`
-				Y1                float32   `xml:"y1,attr"`
-				Y2                float32   `xml:"y2,attr"`
-				GradientTransform Transform `xml:"gradientTransform,attr"`
-				Stop              []struct {
-					Text   Text   `xml:",chardata"`
-					Offset Offset `xml:"offset,attr"`
-					Style  Style  `xml:"style,attr"`
-					ID     D      `xml:"id,attr"`
-				} `xml:"stop"`
-				MidPointStop []struct {
-					Text   Text   `xml:",chardata"`
-					Offset Offset `xml:"offset,attr"`
-					Style  Style  `xml:"style,attr"`
-				} `xml:"midPointStop"`
-			} `xml:"linearGradient"`
-			Defs struct {
-				Text Text `xml:",chardata"`
-				ID   D    `xml:"id,attr"`
-				Path struct {
-					Text Text `xml:",chardata"`
-					D    D    `xml:"d,attr"`
-					ID   D    `xml:"id,attr"`
-				} `xml:"path"`
-				LinearGradient []struct {
-					Text              Text      `xml:",chardata"`
-					ID                D         `xml:"id,attr"`
-					X1                float32   `xml:"x1,attr"`
-					X2                float32   `xml:"x2,attr"`
-					Href              Href      `xml:"href,attr"`
-					Y1                float32   `xml:"y1,attr"`
-					Y2                float32   `xml:"y2,attr"`
-					GradientTransform Transform `xml:"gradientTransform,attr"`
-					Stop              []struct {
-						Text   Text   `xml:",chardata"`
-						ID     D      `xml:"id,attr"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"stop"`
-				} `xml:"linearGradient"`
-				Defs struct {
-					Text Text `xml:",chardata"`
-					ID   D    `xml:"id,attr"`
-				} `xml:"defs"`
-				Namedview struct {
-					Text Text `xml:",chardata"`
-					ID   D    `xml:"id,attr"`
-				} `xml:"namedview"`
-				RadialGradient []struct {
-					Text              Text      `xml:",chardata"`
-					Cx                Cx        `xml:"cx,attr"`
-					Cy                Cy        `xml:"cy,attr"`
-					Fx                Fx        `xml:"fx,attr"`
-					Fy                Fy        `xml:"fy,attr"`
-					ID                D         `xml:"id,attr"`
-					R                 R         `xml:"r,attr"`
-					Href              Href      `xml:"href,attr"`
-					GradientTransform Transform `xml:"gradientTransform,attr"`
-				} `xml:"radialGradient"`
-			} `xml:"defs"`
-			ClipPath struct {
-				Text Text `xml:",chardata"`
-				ID   D    `xml:"id,attr"`
-				Use  struct {
-					Text Text `xml:",chardata"`
-					ID   D    `xml:"id,attr"`
-					Href Href `xml:"href,attr"`
-				} `xml:"use"`
-			} `xml:"clipPath"`
-			Use []struct {
-				Text      Text      `xml:",chardata"`
-				Height    float32   `xml:"height,attr"`
-				ID        D         `xml:"id,attr"`
-				Transform Transform `xml:"transform,attr"`
-				Width     float32   `xml:"width,attr"`
-				X         float32   `xml:"x,attr"`
-				Href      Href      `xml:"href,attr"`
-				Y         float32   `xml:"y,attr"`
-			} `xml:"use"`
-			Desc      Desc `xml:"desc"` // Drawing, Drawing, Group
-			Namedview struct {
-				Text          Text          `xml:",chardata"`
-				Bordercolor   Bordercolor   `xml:"bordercolor,attr"`
-				Borderlayer   Borderlayer   `xml:"borderlayer,attr"`
-				Borderopacity Borderopacity `xml:"borderopacity,attr"`
-				ID            D             `xml:"id,attr"`
-				Showgrid      Showgrid      `xml:"showgrid,attr"`
-			} `xml:"namedview"`
-			Ellipse []struct {
-				Text      Text      `xml:",chardata"`
-				Cx        Cx        `xml:"cx,attr"`
-				Cy        Cy        `xml:"cy,attr"`
-				ID        D         `xml:"id,attr"`
-				Rx        Rx        `xml:"rx,attr"`
-				Ry        Ry        `xml:"ry,attr"`
-				Style     Style     `xml:"style,attr"`
-				Transform Transform `xml:"transform,attr"`
-			} `xml:"ellipse"`
-			Polygon []struct {
-				Text      Text      `xml:",chardata"`
-				ID        D         `xml:"id,attr"`
-				Points    Points    `xml:"points,attr"`
-				Arg1      Arg1      `xml:"arg1,attr"`
-				Arg2      Arg2      `xml:"arg2,attr"`
-				Cx        Cx        `xml:"cx,attr"`
-				Cy        Cy        `xml:"cy,attr"`
-				R1        R1        `xml:"r1,attr"`
-				R2        R2        `xml:"r2,attr"`
-				Sides     Sides     `xml:"sides,attr"`
-				Type      Type      `xml:"type,attr"`
-				Style     Style     `xml:"style,attr"`
-				Transform Transform `xml:"transform,attr"`
-			} `xml:"polygon"`
-		} `xml:"g"`
-		Path []struct {
-			Text             Text       `xml:",chardata"`
-			D                D          `xml:"d,attr"`
-			ID               D          `xml:"id,attr"`
-			Style            Style      `xml:"style,attr"`
-			Transform        Transform  `xml:"transform,attr"`
-			Nodetypes        Nodetypes  `xml:"nodetypes,attr"`
-			Class            Class      `xml:"class,attr"`
-			Cx               Cx         `xml:"cx,attr"`
-			Cy               Cy         `xml:"cy,attr"`
-			Rx               Rx         `xml:"rx,attr"`
-			Ry               Ry         `xml:"ry,attr"`
-			Type             Type       `xml:"type,attr"`
-			Fill             Fill       `xml:"fill,attr"`
-			Knockout         Knockout   `xml:"knockout,attr"`
-			TileCx           Cx         `xml:"tile-cx,attr"`
-			TileCy           Cy         `xml:"tile-cy,attr"`
-			TileH            H          `xml:"tile-h,attr"`
-			TileW            W          `xml:"tile-w,attr"`
-			ClipRule         Rule       `xml:"clip-rule,attr"`
-			FillRule         Rule       `xml:"fill-rule,attr"`
-			Stroke           Stroke     `xml:"stroke,attr"`
-			StrokeWidth      float32    `xml:"stroke-width,attr"`
-			EnableBackground Background `xml:"enable-background,attr"`
-			Isolated         Isolated   `xml:"isolated,attr"`
-			Opacity          Opacity    `xml:"opacity,attr"`
-			ExportXdpi       Xdpi       `xml:"export-xdpi,attr"`
-			ExportYdpi       Ydpi       `xml:"export-ydpi,attr"`
-			End              End        `xml:"end,attr"`
-			Open             Open       `xml:"open,attr"`
-			Start            Start      `xml:"start,attr"`
-			StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
-			Flatsided        Flatsided  `xml:"flatsided,attr"`
-			Label            Label      `xml:"label,attr"`
-			Randomized       Randomized `xml:"randomized,attr"`
-			Rounded          Rounded    `xml:"rounded,attr"`
-			Arg1             Arg1       `xml:"arg1,attr"`
-			Arg2             Arg2       `xml:"arg2,attr"`
-			R1               R1         `xml:"r1,attr"`
-			R2               R2         `xml:"r2,attr"`
-			Sides            Sides      `xml:"sides,attr"`
-			FillCmyk         Cmyk       `xml:"fill-cmyk,attr"`
-		} `xml:"path"`
-		Circle []struct {
-			Text      Text      `xml:",chardata"`
-			Class     Class     `xml:"class,attr"`
-			Cx        Cx        `xml:"cx,attr"`
-			Cy        Cy        `xml:"cy,attr"`
-			ID        D         `xml:"id,attr"`
-			R         R         `xml:"r,attr"`
-			Rx        Rx        `xml:"rx,attr"`
-			Ry        Ry        `xml:"ry,attr"`
-			Style     Style     `xml:"style,attr"`
-			Transform Transform `xml:"transform,attr"`
-			Fill      Fill      `xml:"fill,attr"`
-		} `xml:"circle"`
-		Text []struct {
-			Text        Text        `xml:",chardata"` // Ukraine
-			ID          D           `xml:"id,attr"`
-			Style       Style       `xml:"style,attr"`
-			X           float32     `xml:"x,attr"`
-			Space       Space       `xml:"space,attr"`
-			Y           float32     `xml:"y,attr"`
-			Linespacing Linespacing `xml:"linespacing,attr"`
-			Transform   Transform   `xml:"transform,attr"`
-			Class       Class       `xml:"class,attr"`
-			Tspan       []struct {
-				Text  Text    `xml:",chardata"` // LOVE, produced by Math Pr...
-				ID    D       `xml:"id,attr"`
-				Role  Role    `xml:"role,attr"`
-				X     float32 `xml:"x,attr"`
-				Y     float32 `xml:"y,attr"`
-				Style Style   `xml:"style,attr"`
-			} `xml:"tspan"`
-		} `xml:"text"`
-		Ellipse []struct {
-			Text      Text      `xml:",chardata"`
-			Cx        Cx        `xml:"cx,attr"`
-			Cy        Cy        `xml:"cy,attr"`
-			ID        D         `xml:"id,attr"`
-			Rx        Rx        `xml:"rx,attr"`
-			Ry        Ry        `xml:"ry,attr"`
-			Style     Style     `xml:"style,attr"`
-			Transform Transform `xml:"transform,attr"`
-		} `xml:"ellipse"`
-		Image []struct {
-			Text      Text      `xml:",chardata"`
-			Height    float32   `xml:"height,attr"`
-			ID        D         `xml:"id,attr"`
-			Absref    Absref    `xml:"absref,attr"`
-			Width     float32   `xml:"width,attr"`
-			X         float32   `xml:"x,attr"`
-			Href      Href      `xml:"href,attr"`
-			Y         float32   `xml:"y,attr"`
-			Transform Transform `xml:"transform,attr"`
-			Style     Style     `xml:"style,attr"`
-		} `xml:"image"`
-		Line []struct {
-			Text  Text    `xml:",chardata"`
-			ID    D       `xml:"id,attr"`
-			Style Style   `xml:"style,attr"`
-			X1    float32 `xml:"x1,attr"`
-			X2    float32 `xml:"x2,attr"`
-			Y1    float32 `xml:"y1,attr"`
-			Y2    float32 `xml:"y2,attr"`
-		} `xml:"line"`
-		Defs struct {
-			Text           Text `xml:",chardata"`
-			ID             D    `xml:"id,attr"`
-			LinearGradient []struct {
-				Text              Text      `xml:",chardata"`
-				ID                D         `xml:"id,attr"`
-				X1                float32   `xml:"x1,attr"`
-				X2                float32   `xml:"x2,attr"`
-				Href              Href      `xml:"href,attr"`
-				Y1                float32   `xml:"y1,attr"`
-				Y2                float32   `xml:"y2,attr"`
-				GradientTransform Transform `xml:"gradientTransform,attr"`
-				Stop              []struct {
-					Text   Text   `xml:",chardata"`
-					ID     D      `xml:"id,attr"`
-					Offset Offset `xml:"offset,attr"`
-					Style  Style  `xml:"style,attr"`
-				} `xml:"stop"`
-			} `xml:"linearGradient"`
-			Defs struct {
-				Text Text `xml:",chardata"`
-				ID   D    `xml:"id,attr"`
-			} `xml:"defs"`
-			RadialGradient []struct {
-				Text              Text      `xml:",chardata"`
-				Cx                Cx        `xml:"cx,attr"`
-				Cy                Cy        `xml:"cy,attr"`
-				Fx                Fx        `xml:"fx,attr"`
-				Fy                Fy        `xml:"fy,attr"`
-				ID                D         `xml:"id,attr"`
-				R                 R         `xml:"r,attr"`
-				Href              Href      `xml:"href,attr"`
-				GradientTransform Transform `xml:"gradientTransform,attr"`
-			} `xml:"radialGradient"`
-		} `xml:"defs"`
-		Use []struct {
-			Text         Text      `xml:",chardata"`
-			Height       float32   `xml:"height,attr"`
-			ID           D         `xml:"id,attr"`
-			TiledCloneOf Of        `xml:"tiled-clone-of,attr"`
-			Transform    Transform `xml:"transform,attr"`
-			Width        float32   `xml:"width,attr"`
-			X            float32   `xml:"x,attr"`
-			Href         Href      `xml:"href,attr"`
-			Y            float32   `xml:"y,attr"`
-		} `xml:"use"`
-		LinearGradient []struct {
-			Text              Text      `xml:",chardata"`
-			GradientUnits     Units     `xml:"gradientUnits,attr"`
-			ID                D         `xml:"id,attr"`
-			X1                float32   `xml:"x1,attr"`
-			X2                float32   `xml:"x2,attr"`
-			Y1                float32   `xml:"y1,attr"`
-			Y2                float32   `xml:"y2,attr"`
-			GradientTransform Transform `xml:"gradientTransform,attr"`
-			Stop              []struct {
-				Text   Text   `xml:",chardata"`
-				Offset Offset `xml:"offset,attr"`
-				Style  Style  `xml:"style,attr"`
-				ID     D      `xml:"id,attr"`
-			} `xml:"stop"`
-			MidPointStop []struct {
-				Text   Text   `xml:",chardata"`
-				Offset Offset `xml:"offset,attr"`
-				Style  Style  `xml:"style,attr"`
-			} `xml:"midPointStop"`
-		} `xml:"linearGradient"`
-		Desc  Desc `xml:"desc"` // Master slide, Slide
-		Title struct {
-			Text Text `xml:",chardata"` // Vertical Tricolor: black,...
-			ID   D    `xml:"id,attr"`
-		} `xml:"title"`
-		Polygon []struct {
-			Text      Text      `xml:",chardata"`
-			ID        D         `xml:"id,attr"`
-			Points    Points    `xml:"points,attr"`
-			Style     Style     `xml:"style,attr"`
-			Arg1      Arg1      `xml:"arg1,attr"`
-			Arg2      Arg2      `xml:"arg2,attr"`
-			Cx        Cx        `xml:"cx,attr"`
-			Cy        Cy        `xml:"cy,attr"`
-			R1        R1        `xml:"r1,attr"`
-			R2        R2        `xml:"r2,attr"`
-			Sides     Sides     `xml:"sides,attr"`
-			Type      Type      `xml:"type,attr"`
-			Transform Transform `xml:"transform,attr"`
-		} `xml:"polygon"`
-		Namedview struct {
-			Text Text `xml:",chardata"`
-			ID   D    `xml:"id,attr"`
-		} `xml:"namedview"`
-		FlowRoot struct {
-			Text       Text      `xml:",chardata"`
-			ID         D         `xml:"id,attr"`
-			Space      Space     `xml:"space,attr"`
-			Style      Style     `xml:"style,attr"`
-			Transform  Transform `xml:"transform,attr"`
-			FlowRegion struct {
+		} `xml:"region"`
+		Flow struct {
+			Text       Text   `xml:",chardata"`
+			FontFamily Family `xml:"font-family,attr"`
+			FontSize   Size   `xml:"font-size,attr"`
+			Xmlns      Xmlns  `xml:"xmlns,attr"`
+			P          struct {
 				Text Text `xml:",chardata"`
-				ID   D    `xml:"id,attr"`
-				Rect struct {
-					Text   Text    `xml:",chardata"`
-					Height float32 `xml:"height,attr"`
-					ID     D       `xml:"id,attr"`
-					Style  Style   `xml:"style,attr"`
-					Width  float32 `xml:"width,attr"`
-					X      float32 `xml:"x,attr"`
-					Y      float32 `xml:"y,attr"`
-				} `xml:"rect"`
-			} `xml:"flowRegion"`
-			FlowPara []struct {
-				Text Text `xml:",chardata"` // Felipe Maciel, ffmaciel@g...
-				ID   D    `xml:"id,attr"`
-			} `xml:"flowPara"`
-		} `xml:"flowRoot"`
-	} `xml:"g"`
-	Symbol struct {
-		Text    Text `xml:",chardata"`
-		ID      D    `xml:"id,attr"`
-		ViewBox Box  `xml:"viewBox,attr"`
-		Path    struct {
-			Text  Text  `xml:",chardata"`
-			Class Class `xml:"class,attr"`
-			D     D     `xml:"d,attr"`
-			ID    D     `xml:"id,attr"`
-		} `xml:"path"`
-	} `xml:"symbol"`
-	Path []struct {
-		Text        Text       `xml:",chardata"`
-		D           D          `xml:"d,attr"`
-		ID          D          `xml:"id,attr"`
-		Style       Style      `xml:"style,attr"`
-		Nodetypes   Nodetypes  `xml:"nodetypes,attr"`
-		Transform   Transform  `xml:"transform,attr"`
-		Cx          Cx         `xml:"cx,attr"`
-		Cy          Cy         `xml:"cy,attr"`
-		Rx          Rx         `xml:"rx,attr"`
-		Ry          Ry         `xml:"ry,attr"`
-		Type        Type       `xml:"type,attr"`
-		Flatsided   Flatsided  `xml:"flatsided,attr"`
-		Rounded     Rounded    `xml:"rounded,attr"`
-		Arg1        Arg1       `xml:"arg1,attr"`
-		Arg2        Arg2       `xml:"arg2,attr"`
-		R1          R1         `xml:"r1,attr"`
-		R2          R2         `xml:"r2,attr"`
-		Sides       Sides      `xml:"sides,attr"`
-		Fill        Fill       `xml:"fill,attr"`
-		Stroke      Stroke     `xml:"stroke,attr"`
-		StrokeWidth float32    `xml:"stroke-width,attr"`
-		FillCmyk    Cmyk       `xml:"fill-cmyk,attr"`
-		End         End        `xml:"end,attr"`
-		Start       Start      `xml:"start,attr"`
-		Argument    Argument   `xml:"argument,attr"`
-		Expansion   Expansion  `xml:"expansion,attr"`
-		Radius      Radius     `xml:"radius,attr"`
-		Revolution  Revolution `xml:"revolution,attr"`
-		T0          T0         `xml:"t0,attr"`
-		Class       Class      `xml:"class,attr"`
-	} `xml:"path"`
-	Rect []struct {
-		Text        Text        `xml:",chardata"`
-		Height      float32     `xml:"height,attr"`
-		ID          D           `xml:"id,attr"`
-		Rx          Rx          `xml:"rx,attr"`
-		Ry          Ry          `xml:"ry,attr"`
-		Style       Style       `xml:"style,attr"`
-		Transform   Transform   `xml:"transform,attr"`
-		Width       float32     `xml:"width,attr"`
-		X           float32     `xml:"x,attr"`
-		Y           float32     `xml:"y,attr"`
-		Fill        Fill        `xml:"fill,attr"`
-		Stroke      Stroke      `xml:"stroke,attr"`
-		FillCmyk    Cmyk        `xml:"fill-cmyk,attr"`
-		Insensitive Insensitive `xml:"insensitive,attr"`
-	} `xml:"rect"`
-	Title struct {
-		Text Text `xml:",chardata"` // EAN-13 Bar Code, Iraqi fl...
-		ID   D    `xml:"id,attr"`
-	} `xml:"title"`
-	Desc struct {
-		Text Text `xml:",chardata"` // A Bar Code: EAN-13., The ...
-		ID   D    `xml:"id,attr"`
-	} `xml:"desc"`
-	Text []struct {
-		Text        Text        `xml:",chardata"` // PACE, Moscow, Stockholm, ...
-		ID          D           `xml:"id,attr"`
-		Style       Style       `xml:"style,attr"`
-		X           float32     `xml:"x,attr"`
-		Space       Space       `xml:"space,attr"`
-		Y           float32     `xml:"y,attr"`
-		Linespacing Linespacing `xml:"linespacing,attr"`
-		Transform   Transform   `xml:"transform,attr"`
-		Fill        Fill        `xml:"fill,attr"`
-		FontFamily  Family      `xml:"font-family,attr"`
-		FontSize    Size        `xml:"font-size,attr"`
-		FontWeight  Weight      `xml:"font-weight,attr"`
-		TextAnchor  Anchor      `xml:"text-anchor,attr"`
-		Class       Class       `xml:"class,attr"`
-		Tspan       []struct {
-			Text  Text    `xml:",chardata"` // FOR SALE, 858-361-2811, $...
-			ID    D       `xml:"id,attr"`
-			Role  Role    `xml:"role,attr"`
-			X     float32 `xml:"x,attr"`
-			Y     float32 `xml:"y,attr"`
-			Style Style   `xml:"style,attr"`
-		} `xml:"tspan"`
-	} `xml:"text"`
-	Style struct {
-		Text Text `xml:",chardata"` // @font-face{font-family:'L...
-		Type Type `xml:"type,attr"`
+				Span Span `xml:"span"` // 9, 12, 6, 3, 9, 12, 6, 3
+			} `xml:"p"`
+		} `xml:"flow"`
+	} `xml:"flowDef"`
+	TargetRef struct {
+		Text Text `xml:",chardata"`
+		Href Href `xml:"href,attr"`
+	} `xml:"targetRef"`
+	PgfRef struct {
+		Text Text `xml:",chardata"`
+		Href Href `xml:"href,attr"`
 		ID   D    `xml:"id,attr"`
-	} `xml:"style"`
-	Switch struct {
-		Text          Text `xml:",chardata"`
-		ID            D    `xml:"id,attr"`
-		ForeignObject struct {
-			Text               Text       `xml:",chardata"`
-			Height             float32    `xml:"height,attr"`
-			RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
-			Width              float32    `xml:"width,attr"`
-			X                  float32    `xml:"x,attr"`
-			Y                  float32    `xml:"y,attr"`
-			ID                 D          `xml:"id,attr"`
-			PgfRef             struct {
-				Text Text `xml:",chardata"`
-				Href Href `xml:"href,attr"`
-				ID   D    `xml:"id,attr"`
-			} `xml:"pgfRef"`
-		} `xml:"foreignObject"`
-		G struct {
-			Text       Text       `xml:",chardata"`
-			Extraneous Extraneous `xml:"extraneous,attr"`
-			ID         D          `xml:"id,attr"`
-			G          struct {
-				Text          Text    `xml:",chardata"`
-				DimmedPercent Percent `xml:"dimmedPercent,attr"`
-				Layer         Layer   `xml:"layer,attr"`
-				RgbTrio       Trio    `xml:"rgbTrio,attr"`
-				ID            D       `xml:"id,attr"`
-				G             []struct {
-					Text Text `xml:",chardata"`
-					ID   D    `xml:"id,attr"`
-					G    []struct {
-						Text     Text     `xml:",chardata"`
-						Knockout Knockout `xml:"knockout,attr"`
-						ID       D        `xml:"id,attr"`
-						G        []struct {
-							Text Text `xml:",chardata"`
-							ID   D    `xml:"id,attr"`
-							Path []struct {
-								Text     Text     `xml:",chardata"`
-								D        D        `xml:"d,attr"`
-								Fill     Fill     `xml:"fill,attr"`
-								Knockout Knockout `xml:"knockout,attr"`
-							} `xml:"path"`
-							Polygon struct {
-								Text   Text   `xml:",chardata"`
-								Fill   Fill   `xml:"fill,attr"`
-								ID     D      `xml:"id,attr"`
-								Points Points `xml:"points,attr"`
-							} `xml:"polygon"`
-						} `xml:"g"`
-						Polygon struct {
-							Text        Text     `xml:",chardata"`
-							Fill        Fill     `xml:"fill,attr"`
-							Knockout    Knockout `xml:"knockout,attr"`
-							ID          D        `xml:"id,attr"`
-							Points      Points   `xml:"points,attr"`
-							Stroke      Stroke   `xml:"stroke,attr"`
-							StrokeWidth float32  `xml:"stroke-width,attr"`
-						} `xml:"polygon"`
-					} `xml:"g"`
-					Path []struct {
-						Text             Text       `xml:",chardata"`
-						ClipRule         Rule       `xml:"clip-rule,attr"`
-						D                D          `xml:"d,attr"`
-						FillRule         Rule       `xml:"fill-rule,attr"`
-						Knockout         Knockout   `xml:"knockout,attr"`
-						Stroke           Stroke     `xml:"stroke,attr"`
-						StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
-						StrokeWidth      float32    `xml:"stroke-width,attr"`
-						Fill             Fill       `xml:"fill,attr"`
-						ID               D          `xml:"id,attr"`
-					} `xml:"path"`
-					Rect []struct {
-						Text        Text     `xml:",chardata"`
-						Fill        Fill     `xml:"fill,attr"`
-						Height      float32  `xml:"height,attr"`
-						Knockout    Knockout `xml:"knockout,attr"`
-						ID          D        `xml:"id,attr"`
-						Width       float32  `xml:"width,attr"`
-						X           float32  `xml:"x,attr"`
-						Y           float32  `xml:"y,attr"`
-						Stroke      Stroke   `xml:"stroke,attr"`
-						StrokeWidth float32  `xml:"stroke-width,attr"`
-					} `xml:"rect"`
-					Polygon []struct {
-						Text        Text     `xml:",chardata"`
-						Fill        Fill     `xml:"fill,attr"`
-						Knockout    Knockout `xml:"knockout,attr"`
-						ID          D        `xml:"id,attr"`
-						Points      Points   `xml:"points,attr"`
-						Stroke      Stroke   `xml:"stroke,attr"`
-						StrokeWidth float32  `xml:"stroke-width,attr"`
-					} `xml:"polygon"`
-					Circle struct {
-						Text        Text     `xml:",chardata"`
-						Cx          Cx       `xml:"cx,attr"`
-						Cy          Cy       `xml:"cy,attr"`
-						Fill        Fill     `xml:"fill,attr"`
-						Knockout    Knockout `xml:"knockout,attr"`
-						R           R        `xml:"r,attr"`
-						Stroke      Stroke   `xml:"stroke,attr"`
-						StrokeWidth float32  `xml:"stroke-width,attr"`
-					} `xml:"circle"`
-					Switch []struct {
-						Text          Text `xml:",chardata"`
-						ObjectNS      S    `xml:"objectNS,attr"`
-						ObjectType    Type `xml:"objectType,attr"`
-						ForeignObject struct {
-							Text               Text       `xml:",chardata"`
-							Height             float32    `xml:"height,attr"`
-							Overflow           Overflow   `xml:"overflow,attr"`
-							RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
-							Width              float32    `xml:"width,attr"`
-							X                  float32    `xml:"x,attr"`
-							Y                  float32    `xml:"y,attr"`
-							FlowDef            struct {
-								Text   Text  `xml:",chardata"`
-								Xmlns  Xmlns `xml:"xmlns,attr"`
-								Region struct {
-									Text       Text   `xml:",chardata"`
-									TextMatrix Matrix `xml:"textMatrix,attr"`
-									Path       struct {
-										Text     Text     `xml:",chardata"`
-										D        D        `xml:"d,attr"`
-										Fill     Fill     `xml:"fill,attr"`
-										Knockout Knockout `xml:"knockout,attr"`
-									} `xml:"path"`
-								} `xml:"region"`
-								Flow struct {
-									Text       Text   `xml:",chardata"`
-									FontFamily Family `xml:"font-family,attr"`
-									FontSize   Size   `xml:"font-size,attr"`
-									Xmlns      Xmlns  `xml:"xmlns,attr"`
-									P          struct {
-										Text Text `xml:",chardata"`
-										Span struct {
-											Text        Text    `xml:",chardata"` // ORDEM    PROGRESSO  PROGR...
-											Fill        Fill    `xml:"fill,attr"`
-											Stroke      Stroke  `xml:"stroke,attr"`
-											StrokeWidth float32 `xml:"stroke-width,attr"`
-										} `xml:"span"`
-									} `xml:"p"`
-								} `xml:"flow"`
-							} `xml:"flowDef"`
-							TargetRef struct {
-								Text Text `xml:",chardata"`
-								Href Href `xml:"href,attr"`
-							} `xml:"targetRef"`
-						} `xml:"foreignObject"`
-						G struct {
-							Chardata Chardata `xml:",chardata"`
-							Path     struct {
-								Text     Text     `xml:",chardata"`
-								D        D        `xml:"d,attr"`
-								Fill     Fill     `xml:"fill,attr"`
-								Knockout Knockout `xml:"knockout,attr"`
-							} `xml:"path"`
-							G struct {
-								Chardata Chardata `xml:",chardata"`
-								ID       D        `xml:"id,attr"`
-								Text     []struct {
-									Text        Text      `xml:",chardata"` // O, R, D, E, M, P, R, O, G...
-									Fill        Fill      `xml:"fill,attr"`
-									FontFamily  Family    `xml:"font-family,attr"`
-									FontSize    Size      `xml:"font-size,attr"`
-									Stroke      Stroke    `xml:"stroke,attr"`
-									StrokeWidth float32   `xml:"stroke-width,attr"`
-									Transform   Transform `xml:"transform,attr"`
-								} `xml:"text"`
-							} `xml:"g"`
-							Line struct {
-								Text     Text     `xml:",chardata"`
-								Fill     Fill     `xml:"fill,attr"`
-								Knockout Knockout `xml:"knockout,attr"`
-								X1       float32  `xml:"x1,attr"`
-								X2       float32  `xml:"x2,attr"`
-								Y1       float32  `xml:"y1,attr"`
-								Y2       float32  `xml:"y2,attr"`
-							} `xml:"line"`
-							Text struct {
-								Text      Text      `xml:",chardata"`
-								ID        D         `xml:"id,attr"`
-								Transform Transform `xml:"transform,attr"`
-								Tspan     struct {
-									Text        Text    `xml:",chardata"` // E
-									Fill        Fill    `xml:"fill,attr"`
-									FontFamily  Family  `xml:"font-family,attr"`
-									FontSize    Size    `xml:"font-size,attr"`
-									Stroke      Stroke  `xml:"stroke,attr"`
-									StrokeWidth float32 `xml:"stroke-width,attr"`
-									X           float32 `xml:"x,attr"`
-									Y           float32 `xml:"y,attr"`
-								} `xml:"tspan"`
-							} `xml:"text"`
-						} `xml:"g"`
-					} `xml:"switch"`
-				} `xml:"g"`
-				Switch []struct {
-					Chardata      Chardata `xml:",chardata"`
-					Knockout      Knockout `xml:"knockout,attr"`
-					ObjectNS      S        `xml:"objectNS,attr"`
-					ObjectType    Type     `xml:"objectType,attr"`
-					ForeignObject struct {
-						Text               Text       `xml:",chardata"`
-						Height             float32    `xml:"height,attr"`
-						Overflow           Overflow   `xml:"overflow,attr"`
-						RequiredExtensions Extensions `xml:"requiredExtensions,attr"`
-						Width              float32    `xml:"width,attr"`
-						X                  float32    `xml:"x,attr"`
-						Y                  float32    `xml:"y,attr"`
-						FlowDef            struct {
-							Text   Text  `xml:",chardata"`
-							Xmlns  Xmlns `xml:"xmlns,attr"`
-							Region struct {
-								Text Text `xml:",chardata"`
-								Path struct {
-									Text Text `xml:",chardata"`
-									D    D    `xml:"d,attr"`
-								} `xml:"path"`
-							} `xml:"region"`
-							Flow struct {
-								Text       Text   `xml:",chardata"`
-								FontFamily Family `xml:"font-family,attr"`
-								FontSize   Size   `xml:"font-size,attr"`
-								Xmlns      Xmlns  `xml:"xmlns,attr"`
-								P          struct {
-									Text Text `xml:",chardata"`
-									Span Span `xml:"span"` // 9, 12, 6, 3, 9, 12, 6, 3
-								} `xml:"p"`
-							} `xml:"flow"`
-						} `xml:"flowDef"`
-						TargetRef struct {
-							Text Text `xml:",chardata"`
-							Href Href `xml:"href,attr"`
-						} `xml:"targetRef"`
-					} `xml:"foreignObject"`
-					Text struct {
-						Text      Text      `xml:",chardata"`
-						ID        D         `xml:"id,attr"`
-						Transform Transform `xml:"transform,attr"`
-						Tspan     struct {
-							Text       Text    `xml:",chardata"` // 9, 12, 6, 3, 9, 12, 6, 3
-							FontFamily Family  `xml:"font-family,attr"`
-							FontSize   Size    `xml:"font-size,attr"`
-							X          float32 `xml:"x,attr"`
-							Y          float32 `xml:"y,attr"`
-						} `xml:"tspan"`
-					} `xml:"text"`
-				} `xml:"switch"`
-				Path []struct {
-					Text             Text       `xml:",chardata"`
-					ClipRule         Rule       `xml:"clip-rule,attr"`
-					D                D          `xml:"d,attr"`
-					Fill             Fill       `xml:"fill,attr"`
-					FillRule         Rule       `xml:"fill-rule,attr"`
-					Knockout         Knockout   `xml:"knockout,attr"`
-					Stroke           Stroke     `xml:"stroke,attr"`
-					StrokeMiterlimit Miterlimit `xml:"stroke-miterlimit,attr"`
-					StrokeWidth      float32    `xml:"stroke-width,attr"`
-					ID               D          `xml:"id,attr"`
-				} `xml:"path"`
-				LinearGradient []struct {
-					Text          Text    `xml:",chardata"`
-					GradientUnits Units   `xml:"gradientUnits,attr"`
-					ID            D       `xml:"id,attr"`
-					X1            float32 `xml:"x1,attr"`
-					X2            float32 `xml:"x2,attr"`
-					Y1            float32 `xml:"y1,attr"`
-					Y2            float32 `xml:"y2,attr"`
-					Stop          []struct {
-						Text   Text   `xml:",chardata"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"stop"`
-					MidPointStop []struct {
-						Text   Text   `xml:",chardata"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"midPointStop"`
-				} `xml:"linearGradient"`
-				RadialGradient []struct {
-					Text          Text  `xml:",chardata"`
-					Cx            Cx    `xml:"cx,attr"`
-					Cy            Cy    `xml:"cy,attr"`
-					Fx            Fx    `xml:"fx,attr"`
-					Fy            Fy    `xml:"fy,attr"`
-					GradientUnits Units `xml:"gradientUnits,attr"`
-					ID            D     `xml:"id,attr"`
-					R             R     `xml:"r,attr"`
-					Stop          []struct {
-						Text   Text   `xml:",chardata"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"stop"`
-					MidPointStop []struct {
-						Text   Text   `xml:",chardata"`
-						Offset Offset `xml:"offset,attr"`
-						Style  Style  `xml:"style,attr"`
-					} `xml:"midPointStop"`
-				} `xml:"radialGradient"`
-			} `xml:"g"`
-		} `xml:"g"`
-	} `xml:"switch"`
-	RadialGradient struct {
-		Text          Text  `xml:",chardata"`
-		Cx            Cx    `xml:"cx,attr"`
-		Cy            Cy    `xml:"cy,attr"`
-		GradientUnits Units `xml:"gradientUnits,attr"`
-		ID            D     `xml:"id,attr"`
-		R             R     `xml:"r,attr"`
-		Stop          []struct {
-			Text   Text   `xml:",chardata"`
-			ID     D      `xml:"id,attr"`
-			Offset Offset `xml:"offset,attr"`
-			Style  Style  `xml:"style,attr"`
-		} `xml:"stop"`
-	} `xml:"radialGradient"`
-	Circle []struct {
-		Text  Text  `xml:",chardata"`
-		Cx    Cx    `xml:"cx,attr"`
-		Cy    Cy    `xml:"cy,attr"`
-		Fill  Fill  `xml:"fill,attr"`
-		ID    D     `xml:"id,attr"`
-		R     R     `xml:"r,attr"`
-		Class Class `xml:"class,attr"`
-		Rx    Rx    `xml:"rx,attr"`
-		Ry    Ry    `xml:"ry,attr"`
-		Style Style `xml:"style,attr"`
-	} `xml:"circle"`
-	Use []struct {
-		Text      Text      `xml:",chardata"`
-		ID        D         `xml:"id,attr"`
-		Transform Transform `xml:"transform,attr"`
-		Href      Href      `xml:"href,attr"`
-		Height    float32   `xml:"height,attr"`
-		Width     float32   `xml:"width,attr"`
-		X         float32   `xml:"x,attr"`
-		Y         float32   `xml:"y,attr"`
-	} `xml:"use"`
-	Image struct {
+	} `xml:"pgfRef"`
+}
+
+type Defs struct {
+	Text           Text             `xml:",chardata"`
+	ID             ID               `xml:"id,attr"`
+	LinearGradient []LinearGradient `xml:"linearGradient"`
+	Style          StyleSheet       `xml:"style"`
+	Mask           []Mask           `xml:"mask"`
+	Marker         []Marker         `xml:"marker"`
+	RadialGradient []RadialGradient `xml:"radialGradient"`
+	Rect           []Rect           `xml:"rect"`
+	G              []G              `xml:"g"`
+	ClipPath       []ClipPath       `xml:"clipPath"`
+	Defs           []Defs           `xml:"defs"`
+	Path           []Path           `xml:"path"`
+	Namedview      []NamedView      `xml:"namedview"`
+	Font           []Font           `xml:"font"`
+}
+
+type NamedView struct {
+	Text           Text           `xml:",chardata"`
+	Bordercolor    Bordercolor    `xml:"bordercolor,attr"`
+	Borderopacity  Borderopacity  `xml:"borderopacity,attr"`
+	ID             D              `xml:"id,attr"`
+	CurrentLayer   Layer          `xml:"current-layer,attr"`
+	Cx             Cx             `xml:"cx,attr"`
+	Cy             Cy             `xml:"cy,attr"`
+	Pageopacity    Pageopacity    `xml:"pageopacity,attr"`
+	Pageshadow     Pageshadow     `xml:"pageshadow,attr"`
+	WindowHeight   float32        `xml:"window-height,attr"`
+	WindowWidth    float32        `xml:"window-width,attr"`
+	WindowX        float32        `xml:"window-x,attr"`
+	WindowY        float32        `xml:"window-y,attr"`
+	Zoom           Zoom           `xml:"zoom,attr"`
+	Pagecolor      Pagecolor      `xml:"pagecolor,attr"`
+	DocumentUnits  Units          `xml:"document-units,attr"`
+	GridBbox       Bbox           `xml:"grid-bbox,attr"`
+	GuideBbox      Bbox           `xml:"guide-bbox,attr"`
+	Showgrid       Showgrid       `xml:"showgrid,attr"`
+	Showguides     Showguides     `xml:"showguides,attr"`
+	Guidetolerance Guidetolerance `xml:"guidetolerance,attr"`
+	GuidePoints    Points         `xml:"guide-points,attr"`
+	Gridspacingx   Gridspacingx   `xml:"gridspacingx,attr"`
+	Gridspacingy   Gridspacingy   `xml:"gridspacingy,attr"`
+	Gridtolerance  Gridtolerance  `xml:"gridtolerance,attr"`
+	GridPoints     Points         `xml:"grid-points,attr"`
+	Gridcolor      Gridcolor      `xml:"gridcolor,attr"`
+	Gridopacity    Gridopacity    `xml:"gridopacity,attr"`
+	Gridoriginx    Gridoriginx    `xml:"gridoriginx,attr"`
+	Gridoriginy    Gridoriginy    `xml:"gridoriginy,attr"`
+	Guidecolor     Guidecolor     `xml:"guidecolor,attr"`
+	Guidehicolor   Guidehicolor   `xml:"guidehicolor,attr"`
+	Guidehiopacity Guidehiopacity `xml:"guidehiopacity,attr"`
+	Guideopacity   Guideopacity   `xml:"guideopacity,attr"`
+	Snaptogrid     Snaptogrid     `xml:"snaptogrid,attr"`
+	Fill           Fill           `xml:"fill,attr"`
+	Gridhicolor    Gridhicolor    `xml:"gridhicolor,attr"`
+	Showborder     Showborder     `xml:"showborder,attr"`
+	Snaptoguides   Snaptoguides   `xml:"snaptoguides,attr"`
+	Borderlayer    Borderlayer    `xml:"borderlayer,attr"`
+	Gridempcolor   Gridempcolor   `xml:"gridempcolor,attr"`
+	Gridempopacity Gridempopacity `xml:"gridempopacity,attr"`
+	Gridempspacing Gridempspacing `xml:"gridempspacing,attr"`
+	Guide          []struct {
 		Text        Text        `xml:",chardata"`
-		Height      float32     `xml:"height,attr"`
 		ID          D           `xml:"id,attr"`
-		Absref      Absref      `xml:"absref,attr"`
-		Insensitive Insensitive `xml:"insensitive,attr"`
-		Style       Style       `xml:"style,attr"`
-		Width       float32     `xml:"width,attr"`
-		X           float32     `xml:"x,attr"`
-		Href        Href        `xml:"href,attr"`
-		Y           float32     `xml:"y,attr"`
-	} `xml:"image"`
-	Polygon []struct {
-		Text      Text      `xml:",chardata"`
-		ID        D         `xml:"id,attr"`
-		Points    Points    `xml:"points,attr"`
-		Arg1      Arg1      `xml:"arg1,attr"`
-		Arg2      Arg2      `xml:"arg2,attr"`
-		Cx        Cx        `xml:"cx,attr"`
-		Cy        Cy        `xml:"cy,attr"`
-		R1        R1        `xml:"r1,attr"`
-		R2        R2        `xml:"r2,attr"`
-		Sides     Sides     `xml:"sides,attr"`
-		Type      Type      `xml:"type,attr"`
-		Style     Style     `xml:"style,attr"`
-		Transform Transform `xml:"transform,attr"`
-		Fill      Fill      `xml:"fill,attr"`
-		FillCmyk  Cmyk      `xml:"fill-cmyk,attr"`
-	} `xml:"polygon"`
-	Ellipse []struct {
-		Text        Text      `xml:",chardata"`
-		Cx          Cx        `xml:"cx,attr"`
-		Cy          Cy        `xml:"cy,attr"`
-		ID          D         `xml:"id,attr"`
-		Rx          Rx        `xml:"rx,attr"`
-		Ry          Ry        `xml:"ry,attr"`
-		Style       Style     `xml:"style,attr"`
-		Stroke      Stroke    `xml:"stroke,attr"`
-		StrokeWidth float32   `xml:"stroke-width,attr"`
-		Transform   Transform `xml:"transform,attr"`
-	} `xml:"ellipse"`
-	RDF struct {
-		Text  Text  `xml:",chardata"`
-		Xmlns Xmlns `xml:"xmlns,attr"`
-		Dc    Dc    `xml:"dc,attr"`
-		Rdf   Rdf   `xml:"rdf,attr"`
-		Work  struct {
-			Text        Text        `xml:",chardata"`
-			About       About       `xml:"about,attr"`
-			Title       Title       `xml:"title"`       // Kansasflag, Kansasflag
-			Description Description `xml:"description"` // state flag, state flag
-			Subject     struct {
-				Text Text `xml:",chardata"`
-				Bag  struct {
-					Text Text     `xml:",chardata"`
-					Li   []string `xml:"li"` // symbol, flag, usa, Kansas...
-				} `xml:"Bag"`
-			} `xml:"subject"`
-			Publisher struct {
-				Text  Text `xml:",chardata"`
-				Agent struct {
-					Text  Text  `xml:",chardata"`
-					About About `xml:"about,attr"`
-					Title Title `xml:"title"` // Open Clip Art Library, Op...
-				} `xml:"Agent"`
-			} `xml:"publisher"`
-			Creator struct {
-				Text  Text `xml:",chardata"`
-				Agent struct {
-					Text  Text  `xml:",chardata"`
-					About About `xml:"about,attr"`
-					Title Title `xml:"title"` // Dave Reckoning, Dave Reck...
-				} `xml:"Agent"`
-			} `xml:"creator"`
-			Rights struct {
-				Text  Text `xml:",chardata"`
-				Agent struct {
-					Text  Text  `xml:",chardata"`
-					About About `xml:"about,attr"`
-					Title Title `xml:"title"`
-				} `xml:"Agent"`
-			} `xml:"rights"`
-			Date   Date   `xml:"date"`
-			Format Format `xml:"format"` // image/svg+xml, image/svg+...
-			Type   struct {
-				Text     Text     `xml:",chardata"`
-				Resource Resource `xml:"resource,attr"`
-			} `xml:"type"`
-			License struct {
-				Text     Text     `xml:",chardata"`
-				Resource Resource `xml:"resource,attr"`
-				Date     Date     `xml:"date"` // 59, 59
-			} `xml:"license"`
-			Language Language `xml:"language"` // en, en
-		} `xml:"Work"`
-		License struct {
-			Text    Text  `xml:",chardata"`
-			About   About `xml:"about,attr"`
-			Permits []struct {
-				Text     Text     `xml:",chardata"`
-				Resource Resource `xml:"resource,attr"`
-			} `xml:"permits"`
-		} `xml:"License"`
-	} `xml:"RDF"`
+		Orientation Orientation `xml:"orientation,attr"`
+		Position    Position    `xml:"position,attr"`
+	} `xml:"guide"`
+}
+
+type SVG struct {
+	XMLName             xml.Name    `xml:"Svg"`
+	Chardata            Chardata    `xml:",chardata"`
+	Height              float32     `xml:"height,attr"`
+	ID                  D           `xml:"id,attr"`
+	Version             Version     `xml:"version,attr"`
+	Docbase             Docbase     `xml:"docbase,attr"`
+	Docname             Docname     `xml:"docname,attr"`
+	Width               float32     `xml:"width,attr"`
+	Xmlns               Xmlns       `xml:"xmlns,attr"`
+	Cc                  Cc          `xml:"cc,attr"`
+	Dc                  Dc          `xml:"dc,attr"`
+	Inkscape            Inkscape    `xml:"inkscape,attr"`
+	Rdf                 Rdf         `xml:"rdf,attr"`
+	Sodipodi            Sodipodi    `xml:"sodipodi,attr"`
+	SVG                 G           `xml:"svg,attr"`
+	Space               Space       `xml:"space,attr"`
+	AttrStyle           Style       `xml:"style,attr"`
+	ViewBox             Box         `xml:"viewBox,attr"`
+	Xlink               Xlink       `xml:"xlink,attr"`
+	XML                 L           `xml:"xml,attr"`
+	X                   float32     `xml:"x,attr"`
+	Y                   float32     `xml:"y,attr"`
+	ExportFilename      Filename    `xml:"export-filename,attr"`
+	ExportXdpi          Xdpi        `xml:"export-xdpi,attr"`
+	ExportYdpi          Ydpi        `xml:"export-ydpi,attr"`
+	EnableBackground    Background  `xml:"enable-background,attr"`
+	PageBounds          Bounds      `xml:"pageBounds,attr"`
+	RulerOrigin         Origin      `xml:"rulerOrigin,attr"`
+	ViewOrigin          Origin      `xml:"viewOrigin,attr"`
+	Overflow            Overflow    `xml:"overflow,attr"`
+	A                   A           `xml:"a,attr"`
+	Graph               Graph       `xml:"graph,attr"`
+	I                   I           `xml:"i,attr"`
+	FillRule            Rule        `xml:"fill-rule,attr"`
+	ImageRendering      Rendering   `xml:"image-rendering,attr"`
+	ShapeRendering      Rendering   `xml:"shape-rendering,attr"`
+	TextRendering       Rendering   `xml:"text-rendering,attr"`
+	PreserveAspectRatio Ratio       `xml:"preserveAspectRatio,attr"`
+	Fill                Fill        `xml:"fill,attr"`
+	StrokeLinecap       Linecap     `xml:"stroke-linecap,attr"`
+	StrokeLinejoin      Linejoin    `xml:"stroke-linejoin,attr"`
+	StrokeWidth         float32     `xml:"stroke-width,attr"`
+	Ns                  Ns          `xml:"ns,attr"`
+	Ns0                 Ns0         `xml:"ns0,attr"`
+	Xap                 Xap         `xml:"xap,attr"`
+	XapGImg             Img         `xml:"xapGImg,attr"`
+	Pdf                 Pdf         `xml:"pdf,attr"`
+	Pdfx                Pdfx        `xml:"pdfx,attr"`
+	Author              Author      `xml:"author,attr"`
+	Metadata            interface{} `xml:"metadata"`
+	Defs                Defs        `xml:"defs"`
+	// Inkscape-specific
+	Namedview      NamedView        `xml:"namedview"`
+	G              G                `xml:"g"`
+	Path           []Path           `xml:"path"`
+	Circle         []Circle         `xml:"circle"`
+	Text           []Text           `xml:"text"`
+	Style          StyleSheet       `xml:"style"`
+	Switch         Switch           `xml:"switch"`
+	RadialGradient []RadialGradient `xml:"radialGradient"`
+	Use            []Use            `xml:"use"`
+	Image          []Image          `xml:"image"`
+	Polygon        []Polygon        `xml:"polygon"`
+	Ellipse        []Ellipse        `xml:"ellipse"`
+	RDF            interface{}      `xml:"RDF"`
+}
+
+type TextDrawing struct {
+	Text        Text        `xml:",chardata"` // PACE, Moscow, Stockholm, ...
+	ID          D           `xml:"id,attr"`
+	Style       Style       `xml:"style,attr"`
+	X           float32     `xml:"x,attr"`
+	Space       Space       `xml:"space,attr"`
+	Y           float32     `xml:"y,attr"`
+	Linespacing Linespacing `xml:"linespacing,attr"`
+	Transform   Transform   `xml:"transform,attr"`
+	Fill        Fill        `xml:"fill,attr"`
+	FontFamily  Family      `xml:"font-family,attr"`
+	FontSize    Size        `xml:"font-size,attr"`
+	FontWeight  Weight      `xml:"font-weight,attr"`
+	TextAnchor  Anchor      `xml:"text-anchor,attr"`
+	Class       Class       `xml:"class,attr"`
+	Tspan       []struct {
+		Text  Text    `xml:",chardata"` // FOR SALE, 858-361-2811, $...
+		ID    D       `xml:"id,attr"`
+		Role  Role    `xml:"role,attr"`
+		X     float32 `xml:"x,attr"`
+		Y     float32 `xml:"y,attr"`
+		Style Style   `xml:"style,attr"`
+	} `xml:"tspan"`
+}
+
+type Switch struct {
+	Text          Text          `xml:",chardata"`
+	ID            D             `xml:"id,attr"`
+	ForeignObject ForeignObject `xml:"foreignObject"`
+	G             G             `xml:"g"`
+}
+
+type Circle []struct {
+	Text  Text  `xml:",chardata"`
+	Cx    Cx    `xml:"cx,attr"`
+	Cy    Cy    `xml:"cy,attr"`
+	Fill  Fill  `xml:"fill,attr"`
+	ID    D     `xml:"id,attr"`
+	R     R     `xml:"r,attr"`
+	Class Class `xml:"class,attr"`
+	Rx    Rx    `xml:"rx,attr"`
+	Ry    Ry    `xml:"ry,attr"`
+	Style Style `xml:"style,attr"`
+}
+
+type Ellipse struct {
+	Text        Text      `xml:",chardata"`
+	ID          ID        `xml:"id,attr"`
+	Cx          Cx        `xml:"cx,attr"`
+	Cy          Cy        `xml:"cy,attr"`
+	Rx          Rx        `xml:"rx,attr"`
+	Ry          Ry        `xml:"ry,attr"`
+	Style       Style     `xml:"style,attr"`
+	Stroke      Stroke    `xml:"stroke,attr"`
+	StrokeWidth float32   `xml:"stroke-width,attr"`
+	Transform   Transform `xml:"transform,attr"`
+}
+
+type Polygon struct {
+	Text      Text      `xml:",chardata"`
+	ID        ID        `xml:"id,attr"`
+	Points    Points    `xml:"points,attr"`
+	Arg1      Arg1      `xml:"arg1,attr"`
+	Arg2      Arg2      `xml:"arg2,attr"`
+	Cx        Cx        `xml:"cx,attr"`
+	Cy        Cy        `xml:"cy,attr"`
+	R1        R1        `xml:"r1,attr"`
+	R2        R2        `xml:"r2,attr"`
+	Sides     Sides     `xml:"sides,attr"`
+	Type      Type      `xml:"type,attr"`
+	Style     Style     `xml:"style,attr"`
+	Transform Transform `xml:"transform,attr"`
+	Fill      Fill      `xml:"fill,attr"`
+	FillCmyk  Cmyk      `xml:"fill-cmyk,attr"`
+}
+
+type Image struct {
+	Text      Text      `xml:",chardata"`
+	ID        ID        `xml:"id,attr"`
+	Points    Points    `xml:"points,attr"`
+	Arg1      Arg1      `xml:"arg1,attr"`
+	Arg2      Arg2      `xml:"arg2,attr"`
+	Cx        Cx        `xml:"cx,attr"`
+	Cy        Cy        `xml:"cy,attr"`
+	R1        R1        `xml:"r1,attr"`
+	R2        R2        `xml:"r2,attr"`
+	Sides     Sides     `xml:"sides,attr"`
+	Type      Type      `xml:"type,attr"`
+	Style     Style     `xml:"style,attr"`
+	Transform Transform `xml:"transform,attr"`
+	Fill      Fill      `xml:"fill,attr"`
+	FillCmyk  Cmyk      `xml:"fill-cmyk,attr"`
 }