layer at (0,0) size 866x1856
  RenderView at (0,0) size 785x585
layer at (0,0) size 785x1856
  RenderBlock {HTML} at (0,0) size 785x1856
    RenderBody {BODY} at (8,8) size 769x1840 [bgcolor=#CCCCCC]
      RenderBlock {P} at (0,0) size 769x18
        RenderText {#text} at (0,0) size 363x18
          text run at (0,0) width 363: "The style declarations which apply to the text below are:"
      RenderBlock {PRE} at (0,34) size 769x225
        RenderText {#text} at (0,0) size 859x225
          text run at (0,0) width 656: ".one {background-image: url(../resources/oransqr.gif); background-repeat: repeat-y;}"
          text run at (655,0) width 1: " "
          text run at (0,15) width 656: ".two {background-image: url(../resources/oransqr.gif); background-repeat: repeat-x;}"
          text run at (655,15) width 1: " "
          text run at (0,30) width 679: ".three {background-image: url(../resources/oransqr.gif); background-repeat: no-repeat;}"
          text run at (678,30) width 1: " "
          text run at (0,45) width 859: ".four {background-image: url(../resources/bg.gif); background-position: 50% 50%; background-repeat: repeat-y;}"
          text run at (858,45) width 1: " "
          text run at (0,60) width 687: ".five {background-image: url(../resources/crosshair2.gif); background-position: 50% 50%;"
          text run at (686,60) width 1: " "
          text run at (0,75) width 235: "       background-color: red;}"
          text run at (234,75) width 1: " "
          text run at (0,90) width 703: ".six {background-image: url(../resources/crosshair2.gif); background-position: center top;"
          text run at (702,90) width 1: " "
          text run at (0,105) width 227: "      background-color: red;}"
          text run at (226,105) width 1: " "
          text run at (0,120) width 703: ".seven {background-image: url(../resources/crosshair2.gif); background-position: top left;"
          text run at (702,120) width 1: " "
          text run at (0,135) width 242: "        background-color: red;}"
          text run at (241,135) width 1: " "
          text run at (0,150) width 734: ".eight {background-image: url(../resources/crosshair2.gif); background-position: bottom right;"
          text run at (733,150) width 1: " "
          text run at (0,165) width 242: "        background-color: red;}"
          text run at (241,165) width 1: " "
          text run at (0,180) width 687: ".nine {background-image: url(../resources/crosshair2.gif); background-position: 50% 50%;"
          text run at (686,180) width 1: " "
          text run at (0,195) width 235: "       background-color: red;}"
          text run at (234,195) width 1: " "
          text run at (0,210) width 0: " "
      RenderBlock {HR} at (0,272) size 769x2 [border: (1px inset #000000)]
      RenderBlock {P} at (0,290) size 769x54
        RenderText {#text} at (0,0) size 731x36
          text run at (0,0) width 731: "This sentence should have an orange stripe repeated in the \"y\" direction, starting at the upper left corner (since the"
          text run at (0,18) width 72: "default for "
        RenderInline {CODE} at (0,0) size 149x15
          RenderText {#text} at (71,20) size 149x15
            text run at (71,20) width 149: "background-position"
        RenderText {#text} at (219,18) size 759x36
          text run at (219,18) width 327: " is '0% 0%' and that property is not declared here). "
          text run at (545,18) width 214: "This is extra text included for the"
          text run at (0,36) width 294: "sole purpose of making the paragraph longer. "
          text run at (293,36) width 224: "Thank you for your understanding."
      RenderBlock {P} at (0,360) size 769x54
        RenderText {#text} at (0,0) size 731x36
          text run at (0,0) width 731: "This sentence should have an orange stripe repeated in the \"x\" direction, starting at the upper left corner (since the"
          text run at (0,18) width 72: "default for "
        RenderInline {CODE} at (0,0) size 149x15
          RenderText {#text} at (71,20) size 149x15
            text run at (71,20) width 149: "background-position"
        RenderText {#text} at (219,18) size 759x36
          text run at (219,18) width 327: " is '0% 0%' and that property is not declared here). "
          text run at (545,18) width 214: "This is extra text included for the"
          text run at (0,36) width 294: "sole purpose of making the paragraph longer. "
          text run at (293,36) width 224: "Thank you for your understanding."
      RenderBlock {P} at (0,430) size 769x54
        RenderText {#text} at (0,0) size 712x18
          text run at (0,0) width 712: "This sentence should have a single orange square behind it, placed at the upper left corner (since the default for"
        RenderInline {CODE} at (0,0) size 149x15
          RenderText {#text} at (0,20) size 149x15
            text run at (0,20) width 149: "background-position"
        RenderText {#text} at (148,18) size 717x36
          text run at (148,18) width 327: " is '0% 0%' and that property is not declared here). "
          text run at (474,18) width 243: "This is extra text included for the sole"
          text run at (0,36) width 264: "purpose of making the paragraph longer. "
          text run at (263,36) width 224: "Thank you for your understanding."
      RenderBlock {P} at (0,500) size 769x72
        RenderText {#text} at (0,0) size 734x36
          text run at (0,0) width 734: "This sentence should have a green-hatch stripe running vertically down the center of the paragraph, with the origin"
          text run at (0,18) width 264: "image exactly centered in the paragraph. "
          text run at (263,18) width 103: "This is because "
        RenderInline {CODE} at (0,0) size 63x15
          RenderText {#text} at (365,20) size 63x15
            text run at (365,20) width 63: "repeat-y"
        RenderText {#text} at (427,18) size 118x18
          text run at (427,18) width 118: " specifies tiling in "
        RenderInline {EM} at (0,0) size 30x18
          RenderText {#text} at (544,18) size 30x18
            text run at (544,18) width 30: "both"
        RenderText {#text} at (573,18) size 767x36
          text run at (573,18) width 163: " directions on the y-axis. "
          text run at (735,18) width 32: "Note"
          text run at (0,36) width 330: "that this test is only valid if the user agent supports "
        RenderInline {CODE} at (0,0) size 149x15
          RenderText {#text} at (329,38) size 149x15
            text run at (329,38) width 149: "background-position"
        RenderText {#text} at (477,36) size 35x18
          text run at (477,36) width 35: " (see "
        RenderInline {A} at (0,0) size 59x18 [color=#0000FF]
          RenderText {#text} at (511,36) size 59x18
            text run at (511,36) width 59: "test 5.3.6"
        RenderText {#text} at (569,36) size 746x36
          text run at (569,36) width 14: "). "
          text run at (582,36) width 164: "I'll fill the paragraph with"
          text run at (0,54) width 430: "extra text to make the conformance (or lack thereof) more obvious."
      RenderBlock {P} at (0,588) size 769x90 [bgcolor=#FF0000]
        RenderText {#text} at (0,0) size 768x18
          text run at (0,0) width 670: "This paragraph should have a tiled background, with the origin image exactly centered in the paragraph. "
          text run at (669,0) width 99: "This is because"
        RenderInline {CODE} at (0,0) size 133x15
          RenderText {#text} at (0,20) size 133x15
            text run at (0,20) width 133: "background-repeat"
        RenderText {#text} at (132,18) size 118x18
          text run at (132,18) width 118: " specifies tiling in "
        RenderInline {EM} at (0,0) size 18x18
          RenderText {#text} at (249,18) size 18x18
            text run at (249,18) width 18: "all"
        RenderText {#text} at (266,18) size 765x36
          text run at (266,18) width 372: " directions, regardless of the position of the origin image. "
          text run at (637,18) width 128: "Note that this test is"
          text run at (0,36) width 234: "only valid if the user agent supports "
        RenderInline {CODE} at (0,0) size 149x15
          RenderText {#text} at (233,38) size 149x15
            text run at (233,38) width 149: "background-position"
        RenderText {#text} at (381,36) size 35x18
          text run at (381,36) width 35: " (see "
        RenderInline {A} at (0,0) size 59x18 [color=#0000FF]
          RenderText {#text} at (415,36) size 59x18
            text run at (415,36) width 59: "test 5.3.6"
        RenderText {#text} at (473,36) size 769x54
          text run at (473,36) width 14: "). "
          text run at (486,36) width 283: "I'll fill the paragraph with extra text to make"
          text run at (0,54) width 315: "the conformance (or lack thereof) more obvious. "
          text run at (314,54) width 443: "A background color is present, although if it is visible then the image"
          text run at (0,72) width 170: "has not bee correctly tiled."
      RenderBlock {P} at (0,694) size 769x54 [bgcolor=#FF0000]
        RenderText {#text} at (0,0) size 761x54
          text run at (0,0) width 761: "This sentence should have a fully tiled background which starts at its center top; that is, the background's origin should"
          text run at (0,18) width 302: "be the exact center of the top of the paragraph. "
          text run at (301,18) width 460: "I'll fill it with extra text to make the conformance (or lack thereof) more"
          text run at (0,36) width 59: "obvious. "
          text run at (58,36) width 668: "A background color is present, although if it is visible, then the image may not have been tiled correctly."
      RenderBlock {P} at (0,764) size 769x54 [bgcolor=#FF0000]
        RenderText {#text} at (0,0) size 769x54
          text run at (0,0) width 499: "This sentence should have a fully tiled background which starts at its top left. "
          text run at (498,0) width 228: "I'll fill it with extra text to make the"
          text run at (0,18) width 291: "conformance (or lack thereof) more obvious. "
          text run at (290,18) width 479: "A background color is present, although if it is visible, then the image may"
          text run at (0,36) width 186: "not have been tiled correctly."
      RenderBlock {P} at (0,834) size 769x72 [bgcolor=#FF0000]
        RenderText {#text} at (0,0) size 762x72
          text run at (0,0) width 760: "This sentence should have a fully tiled background which starts at its bottom right; in other words, a complete instance"
          text run at (0,18) width 719: "of the image should be anchored in the bottom right corner, with the tiled background extending out from there. "
          text run at (718,18) width 40: "I'll fill"
          text run at (0,36) width 479: "it with extra text to make the conformance (or lack thereof) more obvious. "
          text run at (478,36) width 284: "A background color is present, although if it"
          text run at (0,54) width 381: "is visible, then the image may not have been tiled correctly."
      RenderBlock {P} at (0,922) size 769x108 [bgcolor=#FF0000]
        RenderText {#text} at (0,0) size 761x108
          text run at (0,0) width 737: "This sentence should have a fully tiled background which starts at its center and is tiled in all directions; that is, the"
          text run at (0,18) width 414: "background's origin should be the exact center of the paragraph. "
          text run at (413,18) width 338: "I'll fill it with extra text to make the conformance (or"
          text run at (0,36) width 181: "lack thereof) more obvious. "
          text run at (180,36) width 455: "In fact, a lot of extra text will be necessary to make this at all obvious. "
          text run at (634,36) width 127: "This is true because"
          text run at (0,54) width 746: "I am not able to increase the text size without resorting to either headings or other CSS properties, neither of which I"
          text run at (0,72) width 213: "want to use in this circumstance. "
          text run at (212,72) width 245: "This ought to be enough text, though. "
          text run at (456,72) width 299: "A background color is present, although if it is"
          text run at (0,90) width 366: "visible, then the image may not have been tiled correctly."
      RenderTable {TABLE} at (0,1046) size 769x794 [border: (1px outset #808080)]
        RenderTableSection {TBODY} at (1,1) size 767x792
          RenderTableRow {TR} at (0,0) size 767x26
            RenderTableCell {TD} at (0,0) size 767x26 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=2]
              RenderInline {STRONG} at (0,0) size 161x18
                RenderText {#text} at (4,4) size 161x18
                  text run at (4,4) width 161: "TABLE Testing Section"
          RenderTableRow {TR} at (0,26) size 767x766
            RenderTableCell {TD} at (0,396) size 12x26 [bgcolor=#C0C0C0] [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
              RenderText {#text} at (4,4) size 4x18
                text run at (4,4) width 4: " "
            RenderTableCell {TD} at (12,26) size 755x766 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
              RenderBlock {P} at (4,4) size 747x54
                RenderText {#text} at (0,0) size 731x36
                  text run at (0,0) width 731: "This sentence should have an orange stripe repeated in the \"y\" direction, starting at the upper left corner (since the"
                  text run at (0,18) width 72: "default for "
                RenderInline {CODE} at (0,0) size 149x15
                  RenderText {#text} at (71,20) size 149x15
                    text run at (71,20) width 149: "background-position"
                RenderText {#text} at (219,18) size 735x36
                  text run at (219,18) width 327: " is '0% 0%' and that property is not declared here). "
                  text run at (545,18) width 190: "This is extra text included for"
                  text run at (0,36) width 317: "the sole purpose of making the paragraph longer. "
                  text run at (316,36) width 225: "Thank you for your understanding."
              RenderBlock {P} at (4,74) size 747x54
                RenderText {#text} at (0,0) size 731x36
                  text run at (0,0) width 731: "This sentence should have an orange stripe repeated in the \"x\" direction, starting at the upper left corner (since the"
                  text run at (0,18) width 72: "default for "
                RenderInline {CODE} at (0,0) size 149x15
                  RenderText {#text} at (71,20) size 149x15
                    text run at (71,20) width 149: "background-position"
                RenderText {#text} at (219,18) size 735x36
                  text run at (219,18) width 327: " is '0% 0%' and that property is not declared here). "
                  text run at (545,18) width 190: "This is extra text included for"
                  text run at (0,36) width 317: "the sole purpose of making the paragraph longer. "
                  text run at (316,36) width 225: "Thank you for your understanding."
              RenderBlock {P} at (4,144) size 747x54
                RenderText {#text} at (0,0) size 712x18
                  text run at (0,0) width 712: "This sentence should have a single orange square behind it, placed at the upper left corner (since the default for"
                RenderInline {CODE} at (0,0) size 149x15
                  RenderText {#text} at (0,20) size 149x15
                    text run at (0,20) width 149: "background-position"
                RenderText {#text} at (148,18) size 717x36
                  text run at (148,18) width 327: " is '0% 0%' and that property is not declared here). "
                  text run at (474,18) width 243: "This is extra text included for the sole"
                  text run at (0,36) width 264: "purpose of making the paragraph longer. "
                  text run at (263,36) width 224: "Thank you for your understanding."
              RenderBlock {P} at (4,214) size 747x72
                RenderText {#text} at (0,0) size 734x36
                  text run at (0,0) width 734: "This sentence should have a green-hatch stripe running vertically down the center of the paragraph, with the origin"
                  text run at (0,18) width 264: "image exactly centered in the paragraph. "
                  text run at (263,18) width 103: "This is because "
                RenderInline {CODE} at (0,0) size 63x15
                  RenderText {#text} at (365,20) size 63x15
                    text run at (365,20) width 63: "repeat-y"
                RenderText {#text} at (427,18) size 118x18
                  text run at (427,18) width 118: " specifies tiling in "
                RenderInline {EM} at (0,0) size 30x18
                  RenderText {#text} at (544,18) size 30x18
                    text run at (544,18) width 30: "both"
                RenderText {#text} at (573,18) size 732x36
                  text run at (573,18) width 159: " directions on the y-axis."
                  text run at (0,36) width 365: "Note that this test is only valid if the user agent supports "
                RenderInline {CODE} at (0,0) size 149x15
                  RenderText {#text} at (364,38) size 149x15
                    text run at (364,38) width 149: "background-position"
                RenderText {#text} at (512,36) size 35x18
                  text run at (512,36) width 35: " (see "
                RenderInline {A} at (0,0) size 59x18 [color=#0000FF]
                  RenderText {#text} at (546,36) size 59x18
                    text run at (546,36) width 59: "test 5.3.6"
                RenderText {#text} at (604,36) size 681x36
                  text run at (604,36) width 14: "). "
                  text run at (617,36) width 64: "I'll fill the"
                  text run at (0,54) width 531: "paragraph with extra text to make the conformance (or lack thereof) more obvious."
              RenderBlock {P} at (4,302) size 747x90 [bgcolor=#FF0000]
                RenderText {#text} at (0,0) size 714x36
                  text run at (0,0) width 670: "This paragraph should have a tiled background, with the origin image exactly centered in the paragraph. "
                  text run at (669,0) width 45: "This is"
                  text run at (0,18) width 55: "because "
                RenderInline {CODE} at (0,0) size 134x15
                  RenderText {#text} at (54,20) size 134x15
                    text run at (54,20) width 134: "background-repeat"
                RenderText {#text} at (187,18) size 118x18
                  text run at (187,18) width 118: " specifies tiling in "
                RenderInline {EM} at (0,0) size 18x18
                  RenderText {#text} at (304,18) size 18x18
                    text run at (304,18) width 18: "all"
                RenderText {#text} at (321,18) size 724x36
                  text run at (321,18) width 372: " directions, regardless of the position of the origin image. "
                  text run at (692,18) width 32: "Note"
                  text run at (0,36) width 330: "that this test is only valid if the user agent supports "
                RenderInline {CODE} at (0,0) size 149x15
                  RenderText {#text} at (329,38) size 149x15
                    text run at (329,38) width 149: "background-position"
                RenderText {#text} at (477,36) size 35x18
                  text run at (477,36) width 35: " (see "
                RenderInline {A} at (0,0) size 59x18 [color=#0000FF]
                  RenderText {#text} at (511,36) size 59x18
                    text run at (511,36) width 59: "test 5.3.6"
                RenderText {#text} at (569,36) size 746x54
                  text run at (569,36) width 14: "). "
                  text run at (582,36) width 164: "I'll fill the paragraph with"
                  text run at (0,54) width 434: "extra text to make the conformance (or lack thereof) more obvious. "
                  text run at (433,54) width 298: "A background color is present, although if it is"
                  text run at (0,72) width 315: "visible then the image has not bee correctly tiled."
              RenderBlock {P} at (4,408) size 747x72 [bgcolor=#FF0000]
                RenderText {#text} at (0,0) size 721x72
                  text run at (0,0) width 715: "This sentence should have a fully tiled background which starts at its center top; that is, the background's origin"
                  text run at (0,18) width 349: "should be the exact center of the top of the paragraph. "
                  text run at (348,18) width 368: "I'll fill it with extra text to make the conformance (or lack"
                  text run at (0,36) width 151: "thereof) more obvious. "
                  text run at (150,36) width 571: "A background color is present, although if it is visible, then the image may not have been"
                  text run at (0,54) width 93: "tiled correctly."
              RenderBlock {P} at (4,496) size 747x54 [bgcolor=#FF0000]
                RenderText {#text} at (0,0) size 738x54
                  text run at (0,0) width 499: "This sentence should have a fully tiled background which starts at its top left. "
                  text run at (498,0) width 228: "I'll fill it with extra text to make the"
                  text run at (0,18) width 291: "conformance (or lack thereof) more obvious. "
                  text run at (290,18) width 448: "A background color is present, although if it is visible, then the image"
                  text run at (0,36) width 217: "may not have been tiled correctly."
              RenderBlock {P} at (4,566) size 747x72 [bgcolor=#FF0000]
                RenderText {#text} at (0,0) size 732x72
                  text run at (0,0) width 704: "This sentence should have a fully tiled background which starts at its bottom right; in other words, a complete"
                  text run at (0,18) width 732: "instance of the image should be anchored in the bottom right corner, with the tiled background extending out from"
                  text run at (0,36) width 40: "there. "
                  text run at (39,36) width 523: "I'll fill it with extra text to make the conformance (or lack thereof) more obvious. "
                  text run at (561,36) width 143: "A background color is"
                  text run at (0,54) width 522: "present, although if it is visible, then the image may not have been tiled correctly."
              RenderBlock {P} at (4,654) size 747x108 [bgcolor=#FF0000]
                RenderText {#text} at (0,0) size 737x108
                  text run at (0,0) width 737: "This sentence should have a fully tiled background which starts at its center and is tiled in all directions; that is, the"
                  text run at (0,18) width 414: "background's origin should be the exact center of the paragraph. "
                  text run at (413,18) width 316: "I'll fill it with extra text to make the conformance"
                  text run at (0,36) width 204: "(or lack thereof) more obvious. "
                  text run at (203,36) width 454: "In fact, a lot of extra text will be necessary to make this at all obvious. "
                  text run at (656,36) width 73: "This is true"
                  text run at (0,54) width 731: "because I am not able to increase the text size without resorting to either headings or other CSS properties, neither"
                  text run at (0,72) width 283: "of which I want to use in this circumstance. "
                  text run at (282,72) width 245: "This ought to be enough text, though. "
                  text run at (526,72) width 197: "A background color is present,"
                  text run at (0,90) width 467: "although if it is visible, then the image may not have been tiled correctly."
