layer at (0,0) size 480x360
  RenderView at (0,0) size 480x360
layer at (0,0) size 480x360
  RenderSVGRoot {svg} at (0.50,0.50) size 479x359
    RenderSVGText {text} at (10,340) size 264x46 contains 1 chunk(s)
      RenderSVGInlineText {#text} at (0,-36) size 264x46
        chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 264.00: "$Revision: 1.8 $"
    RenderPath {rect} at (0.50,0.50) size 479x359 [stroke={[type=SOLID] [color=#000000]}] [data="M1.00,1.00 L479.00,1.00 L479.00,359.00 L1.00,359.00 Z"]
    RenderSVGText {text} at (124,25) size 232x18 contains 1 chunk(s)
      RenderSVGInlineText {#text} at (0,-14) size 232x18
        chunk 1 (middle anchor) text run 1 at (124.00,25.00) startOffset 0 endOffset 33 width 232.00: "<animateTransform> shape elements"
    RenderSVGContainer {g} at (24.31,59.50) size 436.19x224.50
      RenderSVGContainer {g} at (29.50,59.50) size 61x94.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(60.00,90.00)}]
        RenderPath {path} at (29.50,59.50) size 61x61 [stroke={[type=SOLID] [color=#FFB400]}] [fill={[type=SOLID] [color=#E6E6E6]}] [data="M0.00,0.00 C20.00,0.00,30.00,-10.00,30.00,-30.00 C10.00,-30.00,0.00,-20.00,0.00,0.00 C0.00,-20.00,-10.00,-30.00,-30.00,-30.00 C-30.00,-10.00,-20.00,0.00,0.00,0.00 C-20.00,0.00,-30.00,10.00,-30.00,30.00 C-10.00,30.00,0.00,20.00,0.00,0.00 C0.00,20.00,10.00,30.00,30.00,30.00 C30.00,10.00,20.00,0.00,0.00,0.00 Z"]
        RenderSVGText {text} at (-23,60) size 46x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 46x18
            chunk 1 (middle anchor) text run 1 at (-22.50,60.00) startOffset 0 endOffset 6 width 45.00: "<path>"
      RenderSVGContainer {g} at (149.50,69.50) size 61x84.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(180.00,90.00)}]
        RenderPath {rect} at (149.50,69.50) size 61x41 [stroke={[type=SOLID] [color=#FFB400]}] [fill={[type=SOLID] [color=#E6E6E6]}] [data="M-30.00,-20.00 L30.00,-20.00 L30.00,20.00 L-30.00,20.00 Z"]
        RenderSVGText {text} at (-21,60) size 42x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 42x18
            chunk 1 (middle anchor) text run 1 at (-20.50,60.00) startOffset 0 endOffset 6 width 41.00: "<rect>"
      RenderSVGContainer {g} at (269.50,59.50) size 61.00x94.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,90.00)}]
        RenderPath {circle} at (269.50,59.50) size 61.00x61.00 [stroke={[type=SOLID] [color=#FFB400]}] [fill={[type=SOLID] [color=#E6E6E6]}] [data="M30.00,0.00 L29.94,1.88 L29.76,3.76 L29.47,5.62 L29.06,7.46 L28.53,9.27 L27.89,11.04 L27.14,12.77 L26.29,14.45 L25.33,16.07 L24.27,17.63 L23.12,19.12 L21.87,20.54 L20.54,21.87 L19.12,23.12 L17.63,24.27 L16.07,25.33 L14.45,26.29 L12.77,27.14 L11.04,27.89 L9.27,28.53 L7.46,29.06 L5.62,29.47 L3.76,29.76 L1.88,29.94 L-0.00,30.00 L-1.88,29.94 L-3.76,29.76 L-5.62,29.47 L-7.46,29.06 L-9.27,28.53 L-11.04,27.89 L-12.77,27.14 L-14.45,26.29 L-16.07,25.33 L-17.63,24.27 L-19.12,23.12 L-20.54,21.87 L-21.87,20.54 L-23.12,19.12 L-24.27,17.63 L-25.33,16.07 L-26.29,14.45 L-27.14,12.77 L-27.89,11.04 L-28.53,9.27 L-29.06,7.46 L-29.47,5.62 L-29.76,3.76 L-29.94,1.88 L-30.00,-0.00 L-29.94,-1.88 L-29.76,-3.76 L-29.47,-5.62 L-29.06,-7.46 L-28.53,-9.27 L-27.89,-11.04 L-27.14,-12.77 L-26.29,-14.45 L-25.33,-16.07 L-24.27,-17.63 L-23.12,-19.12 L-21.87,-20.54 L-20.54,-21.87 L-19.12,-23.12 L-17.63,-24.27 L-16.07,-25.33 L-14.45,-26.29 L-12.77,-27.14 L-11.04,-27.89 L-9.27,-28.53 L-7.46,-29.06 L-5.62,-29.47 L-3.76,-29.76 L-1.88,-29.94 L0.00,-30.00 L1.88,-29.94 L3.76,-29.76 L5.62,-29.47 L7.46,-29.06 L9.27,-28.53 L11.04,-27.89 L12.77,-27.14 L14.45,-26.29 L16.07,-25.33 L17.63,-24.27 L19.12,-23.12 L20.54,-21.87 L21.87,-20.54 L23.12,-19.12 L24.27,-17.63 L25.33,-16.07 L26.29,-14.45 L27.14,-12.77 L27.89,-11.04 L28.53,-9.27 L29.06,-7.46 L29.47,-5.62 L29.76,-3.76 L29.94,-1.88 Z"]
        RenderSVGText {text} at (-26,60) size 52x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 52x18
            chunk 1 (middle anchor) text run 1 at (-26.00,60.00) startOffset 0 endOffset 8 width 52.00: "<circle>"
      RenderSVGContainer {g} at (379.50,69.50) size 81.00x84.50 [transform={m=((1.00,0.00)(0.00,1.00)) t=(420.00,90.00)}]
        RenderPath {ellipse} at (379.50,69.50) size 81.00x41.00 [stroke={[type=SOLID] [color=#FFB400]}] [fill={[type=SOLID] [color=#E6E6E6]}] [data="M40.00,0.00 L39.92,1.26 L39.68,2.51 L39.29,3.75 L38.74,4.97 L38.04,6.18 L37.19,7.36 L36.19,8.52 L35.05,9.64 L33.77,10.72 L32.36,11.76 L30.82,12.75 L29.16,13.69 L27.38,14.58 L25.50,15.41 L23.51,16.18 L21.43,16.89 L19.27,17.53 L17.03,18.10 L14.72,18.60 L12.36,19.02 L9.95,19.37 L7.50,19.65 L5.01,19.84 L2.51,19.96 L-0.00,20.00 L-2.51,19.96 L-5.01,19.84 L-7.50,19.65 L-9.95,19.37 L-12.36,19.02 L-14.72,18.60 L-17.03,18.10 L-19.27,17.53 L-21.43,16.89 L-23.51,16.18 L-25.50,15.41 L-27.38,14.58 L-29.16,13.69 L-30.82,12.75 L-32.36,11.76 L-33.77,10.72 L-35.05,9.64 L-36.19,8.52 L-37.19,7.36 L-38.04,6.18 L-38.74,4.97 L-39.29,3.75 L-39.68,2.51 L-39.92,1.26 L-40.00,-0.00 L-39.92,-1.26 L-39.68,-2.51 L-39.29,-3.75 L-38.74,-4.97 L-38.04,-6.18 L-37.19,-7.36 L-36.19,-8.52 L-35.05,-9.64 L-33.77,-10.72 L-32.36,-11.76 L-30.82,-12.75 L-29.16,-13.69 L-27.38,-14.58 L-25.50,-15.41 L-23.51,-16.18 L-21.43,-16.89 L-19.27,-17.53 L-17.03,-18.10 L-14.72,-18.60 L-12.36,-19.02 L-9.95,-19.37 L-7.50,-19.65 L-5.01,-19.84 L-2.51,-19.96 L0.00,-20.00 L2.51,-19.96 L5.01,-19.84 L7.50,-19.65 L9.95,-19.37 L12.36,-19.02 L14.72,-18.60 L17.03,-18.10 L19.27,-17.53 L21.43,-16.89 L23.51,-16.18 L25.50,-15.41 L27.38,-14.58 L29.16,-13.69 L30.82,-12.75 L32.36,-11.76 L33.77,-10.72 L35.05,-9.64 L36.19,-8.52 L37.19,-7.36 L38.04,-6.18 L38.74,-4.97 L39.29,-3.75 L39.68,-2.51 L39.92,-1.26 Z"]
        RenderSVGText {text} at (-29,60) size 58x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 58x18
            chunk 1 (middle anchor) text run 1 at (-29.00,60.00) startOffset 0 endOffset 9 width 58.00: "<ellipse>"
      RenderSVGContainer {g} at (24.31,194.31) size 71.38x89.69 [transform={m=((1.00,0.00)(0.00,1.00)) t=(60.00,220.00)}]
        RenderPath {line} at (24.31,194.31) size 71.38x51.38 [stroke={[type=SOLID] [color=#FFB400] [stroke width=10.00] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [data="M-30.00,-20.00 L30.00,20.00"]
        RenderSVGText {text} at (-21,60) size 42x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 42x18
            chunk 1 (middle anchor) text run 1 at (-20.50,60.00) startOffset 0 endOffset 6 width 41.00: "<line>"
      RenderSVGContainer {g} at (145,193.62) size 70x90.38 [transform={m=((1.00,0.00)(0.00,1.00)) t=(180.00,220.00)}]
        RenderPath {polyline} at (145,193.62) size 70x52.75 [stroke={[type=SOLID] [color=#FFB400] [stroke width=10.00] [line cap=ROUND] [line join=ROUND]}] [data="M-30.00,20.00 L-30.00,-20.00 L30.00,20.00 L30.00,-20.00"]
        RenderSVGText {text} at (-35,60) size 70x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 70x18
            chunk 1 (middle anchor) text run 1 at (-34.50,60.00) startOffset 0 endOffset 10 width 69.00: "<polyline>"
      RenderSVGContainer {g} at (265,199.07) size 70x84.93 [transform={m=((1.00,0.00)(0.00,1.00)) t=(300.00,220.00)}]
        RenderPath {polygon} at (269.50,199.07) size 61x41.87 [stroke={[type=SOLID] [color=#FFB400]}] [fill={[type=SOLID] [color=#E6E6E6]}] [data="M-30.00,20.00 L-30.00,-20.00 L30.00,20.00 L30.00,-20.00 Z"]
        RenderSVGText {text} at (-35,60) size 70x18 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,-14) size 70x18
            chunk 1 (middle anchor) text run 1 at (-35.00,60.00) startOffset 0 endOffset 9 width 70.00: "<polygon>"
