<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>31593</bug_id>
          
          <creation_ts>2009-11-17 11:43:12 -0800</creation_ts>
          <short_desc>HTMLAnchorElement is inconsistent with its internal handling of the value returned for the href attribute.</short_desc>
          <delta_ts>2009-11-19 16:16:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Murdoch">benm</reporter>
          <assigned_to name="Ben Murdoch">benm</assigned_to>
          <cc>darin</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164282</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-17 11:43:12 -0800</bug_when>
    <thetext>During KURL::init(), trailing and leading spaces are removed from the URL. I think this step should also remove leading and trailing tabs, carriage returns and newlines.

Path and layout test to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164290</commentid>
    <comment_count>1</comment_count>
      <attachid>43373</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-17 11:53:37 -0800</bug_when>
    <thetext>Created attachment 43373
Proposed patch

Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164295</commentid>
    <comment_count>2</comment_count>
      <attachid>43373</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-17 11:57:56 -0800</bug_when>
    <thetext>Comment on attachment 43373
Proposed patch

There is insufficient context for this change. Does this affect websites? If so, how? What is the motivation for this change? Website incompatibilities? Behavior differences from other browsers?

This is too little test coverage. The new test covers only the newline character.

&quot;I think this should change&quot; is interesting, but not sufficient motivation for the change on its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164305</commentid>
    <comment_count>3</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-17 12:31:14 -0800</bug_when>
    <thetext>Hi Darin, apologies for the vagueness.

(In reply to comment #2)
&gt; (From update of attachment 43373 [details])
&gt; There is insufficient context for this change. Does this affect websites? If
&gt; so, how? What is the motivation for this change? Website incompatibilities?
&gt; Behavior differences from other browsers?

I discovered this issue while working on an Android browser bug. As I understand, currently it seems that if there is a leading newline in the href attribute of an &lt;a&gt; tag, that newline is only removed later by the deprecatedParseUrl() function (for example in HitTestResult::absoluteLinkURL() when the hit detection code is run). We do additional hit detection on Android to what is in WebCore, so I thought it made most sense to update KURLs behavior rather than making a call to a deprecated function in the Android code. As there is code to trim whitespace in KURL already, I thought it was sensible to augment that. I added trimming of tabs and carriage returns as I would consider them &quot;whitespace&quot; characters, too.

&gt; 
&gt; This is too little test coverage. The new test covers only the newline
&gt; character.

I will fix this up and send a new patch if you are happy with the general idea of this patch.

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164308</commentid>
    <comment_count>4</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-17 12:35:24 -0800</bug_when>
    <thetext>+darin 

Sorry, forgot to add you on CC so you would know I replied :)

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164309</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-17 12:37:37 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I discovered this issue while working on an Android browser bug. As I
&gt; understand, currently it seems that if there is a leading newline in the href
&gt; attribute of an &lt;a&gt; tag, that newline is only removed later by the
&gt; deprecatedParseUrl() function (for example in HitTestResult::absoluteLinkURL()
&gt; when the hit detection code is run). We do additional hit detection on Android
&gt; to what is in WebCore, so I thought it made most sense to update KURLs behavior
&gt; rather than making a call to a deprecated function in the Android code. As
&gt; there is code to trim whitespace in KURL already, I thought it was sensible to
&gt; augment that. I added trimming of tabs and carriage returns as I would consider
&gt; them &quot;whitespace&quot; characters, too.

That&apos;s not the right way to fix this bug. To fix that bug should consistently use deprecatedParseUrl when constructing URLs from attribute values until we find a way to eliminate that function entirely.

Changing KURL would be OK to do if there are other arguments for doing so, but is not a good way to address that bug, since it addresses some differences between the code paths, but leaves other things different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164323</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-17 13:05:27 -0800</bug_when>
    <thetext>(In reply to comment #5)

&gt; That&apos;s not the right way to fix this bug. To fix that bug should consistently
&gt; use deprecatedParseUrl when constructing URLs from attribute values until we
&gt; find a way to eliminate that function entirely.
&gt; 
&gt; Changing KURL would be OK to do if there are other arguments for doing so, but
&gt; is not a good way to address that bug, since it addresses some differences
&gt; between the code paths, but leaves other things different.

OK, fair enough. In that case, would a patch to HTMLAnchorElement::href() to make it use deprecatedParseURL be acceptable (it currently does not)?

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164449</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-17 21:54:20 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; In that case, would a patch to HTMLAnchorElement::href() to
&gt; make it use deprecatedParseURL be acceptable (it currently does not)?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164538</commentid>
    <comment_count>8</comment_count>
      <attachid>43427</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-18 04:55:10 -0800</bug_when>
    <thetext>Created attachment 43427
Alternative Patch.

Alternative patch as discussed above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164578</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 08:27:05 -0800</bug_when>
    <thetext>You should retitle the bug to describe the problem seen by websites rather than your original thought on what to change to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164581</commentid>
    <comment_count>10</comment_count>
      <attachid>43427</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 08:30:11 -0800</bug_when>
    <thetext>Comment on attachment 43427
Alternative Patch.

&gt; +        When retrieving the href attribute of an A tag, we should run the attribute value through deprecatedParseURL until a good replacement for that function is found.

That&apos;s not really a bug title. It would be better to describe the problem and the real world symptom in both the bug and the change log.

This patch still seems too detached from what effect it&apos;s having on websites. There&apos;s not even a mention of what other browsers do or what HTML5 prescribes.

The key here is to do the same work in the href function that is done in HTMLAnchorElement::defaultEventHandler and HTMLAnchorElement::parseMappedAttribute. And I think that&apos;s what the comment should indicate. Consistency is the issue.

I would have liked to see more test cases about characters that should *not* be stripped, such as non-breaking spaces, \v, and the like.

r=me as is, although I&apos;m not super-happy with how this is described in the change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164590</commentid>
    <comment_count>11</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-18 09:19:38 -0800</bug_when>
    <thetext>Thanks for the review Darin.

I have updated the bug title and will edit the Changelogs on landing to match.

The HTML5 spec mandates that the href attribute must be a valid Web Address, which refers to the HTML5 Web Address spec and that states that when parsing a web address w, &quot;Strip leading and trailing space characters from w.&quot; There doesn&apos;t appear to be a strict definition of &quot;space characters&quot;, but running the layout test in Chrome, FF and IE it seems that they strip spaces, newlines, CR and tabs (as in they pass the test) and so this patch brings WebKit in line with that.

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164591</commentid>
    <comment_count>12</comment_count>
      <attachid>43427</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-18 09:20:26 -0800</bug_when>
    <thetext>Comment on attachment 43427
Alternative Patch.

cq- so I can change the changelogs prior to landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164592</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 09:23:48 -0800</bug_when>
    <thetext>An even better way to handle this is would probably be to use [ReflectURL] in the IDL file and remove the HTMLAnchorElement::href() function entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164596</commentid>
    <comment_count>14</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-18 09:27:34 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; An even better way to handle this is would probably be to use [ReflectURL] in
&gt; the IDL file and remove the HTMLAnchorElement::href() function entirely.

Interesting, I wasn&apos;t aware of that. I will hold off landing and try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164599</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 09:31:09 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Interesting, I wasn&apos;t aware of that. I will hold off landing and try it.

If any code is calling HTMLAnchorElement::href() directly rather than through DOM bindings, then we will still need to keep the function around. Generally, though, we want to synthesize these simple getters rather than hand-coding them. The one for URLs does indeed call deprecatedParseURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164603</commentid>
    <comment_count>16</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-18 09:41:40 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; If any code is calling HTMLAnchorElement::href() directly rather than through
&gt; DOM bindings, then we will still need to keep the function around. Generally,
&gt; though, we want to synthesize these simple getters rather than hand-coding
&gt; them. The one for URLs does indeed call deprecatedParseURL.

OK. The IDL does already specify the ReflectURL property and the function is used elsewhere in the codebase (including the getters for other anchor properties such as hostname, which is how the layout test exposes the bug), so I think I&apos;ll land the patch as is (but update the Changelogs with the new bug title).

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164616</commentid>
    <comment_count>17</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-11-18 10:08:13 -0800</bug_when>
    <thetext>Landed as r51118.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165124</commentid>
    <comment_count>18</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2009-11-19 15:32:28 -0800</bug_when>
    <thetext>The term &quot;space characters&quot; is defined in the HTML5 spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165140</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 16:16:09 -0800</bug_when>
    <thetext>The following comment probably belongs in some other bug that&apos;s on the subject of our numerous whitespace-related functions:

We may be able to take advantage of HTML5 terminology and use the terms space characters and White_Space characters. Unfortunately, we normally do not use underscores in any of our identifiers, and since &quot;skip whitespace&quot; in HTML5 means &quot;skip space characters&quot;, using &quot;WhiteSpace&quot; to mean Unicode White_Space characters might not work well for us.

Sadly, the isASCIISpace function in ASCIICType.h differs from both &quot;space characters&quot; or &quot;White_Space characters&quot;. It includes U+000B, and HTML5 space characters does not. It is the subset of Unicode White_Space that fits in ASCII, so cannot be used if non-ASCII characters might be involved. It was named an designed based on the &quot;C&quot; locale version of the &lt;ctype.h&gt; isspace function.

We may find that isASCIISpace is never useful.

I&apos;d love to clean this all up and unify based on a smaller set of characters. And make sure we have test cases.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43373</attachid>
            <date>2009-11-17 11:53:37 -0800</date>
            <delta_ts>2009-11-18 04:55:10 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>31593.txt</filename>
            <type>text/plain</type>
            <size>3081</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTA4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMTcgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtVUkwg
cmVtb3ZlcyB0cmFpbGluZyBhbmQgbGVhZGluZyBzcGFjZXMgZHVyaW5nIGluaXQsIGJ1dCBub3Qg
bmV3bGluZXMsIGNhcnJpYWdlIHJldHVybnMgb3IgdGFicy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNTkzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9L
VVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmluaXQpOiBUcmltIGxlYWRpbmcgdGFi
cywgY2FycmlhZ2UgcmV0dXJucyBhbmQgbmV3IGxpbmVzIGZyb20gdGhlIFVSTCBhcyB3ZWxsIGFz
IHRoZSBzcGFjZSBjaGFyYWN0ZXIuCisKIDIwMDktMTEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVy
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiA1MTA3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
S1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNCArMzY0LDE0IEBAIHZvaWQgS1VSTDo6
aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCAKICAgICB9CiAKICAgICAvLyBHZXQgcmlkIG9m
IGxlYWRpbmcgd2hpdGVzcGFjZS4KLSAgICB3aGlsZSAoKnN0ciA9PSAnICcpIHsKKyAgICB3aGls
ZSAoKnN0ciA9PSAnICcgfHwgKnN0ciA9PSAnXHInIHx8ICpzdHIgPT0gJ1xuJyB8fCAqc3RyID09
ICdcdCcpIHsKICAgICAgICAgb3JpZ2luYWxTdHJpbmcgPSAwOwogICAgICAgICBzdHIrKzsKICAg
ICAgICAgLS1sZW47CiAgICAgfQogCiAgICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNw
YWNlLgotICAgIHdoaWxlIChsZW4gJiYgc3RyW2xlbiAtIDFdID09ICcgJykgeworICAgIHdoaWxl
IChsZW4gJiYgKHN0cltsZW4gLSAxXSA9PSAnICcgfHwgc3RyW2xlbiAtIDFdID09ICdccicgfHwg
c3RyW2xlbiAtIDFdID09ICdcbicgfHwgc3RyW2xlbiAtIDFdID09ICdcdCcpKSB7CiAgICAgICAg
IG9yaWdpbmFsU3RyaW5nID0gMDsKICAgICAgICAgc3RyWy0tbGVuXSA9ICdcMCc7CiAgICAgfQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNTEwODIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMS0xNyAgQmVuIE11cmRvY2ggIDxiZW5t
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgS1VSTCByZW1vdmVzIHRyYWlsaW5nIGFuZCBsZWFkaW5nIHNwYWNlcyBkdXJpbmcgaW5p
dCwgYnV0IG5vdCBuZXdsaW5lcywgY2FycmlhZ2UgcmV0dXJucyBvciB0YWJzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE1OTMKKworICAgICAgICAq
IGZhc3QvbG9hZGVyL3VybC1wYXJzZS0xLmh0bWw6IEFkZCB0ZXN0IGNhc2Ugd2l0aCBsZWFkaW5n
IGFuZCB0cmFpbGluZyBuZXdsaW5lcy4KKyAgICAgICAgKiBmYXN0L2xvYWRlci91cmwtcGFyc2Ut
MS1leHBlY3RlZC50eHQ6CisKIDIwMDktMTEtMTcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIGZvbGxvdyB1cCB0byByNTEwNzI6
IHJlbmFtZSBza2lwcGVkIGVudHJpZXMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Vy
bC1wYXJzZS0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci91cmwtcGFyc2UtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMDc2KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvdXJsLXBhcnNlLTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwzICszNiw0IEBAIHgtd2Via2l0Oi8vCXgtd2Via2l0Oi8vCQkvLwogeC13ZWJraXQ6
Ly90ZXN0CXgtd2Via2l0Oi8vdGVzdAl0ZXN0CQogeC13ZWJraXQ6Ly8vCXgtd2Via2l0Oi8vLwkJ
Ly8vCiB4LXdlYmtpdDovLy90ZXN0CXgtd2Via2l0Oi8vL3Rlc3QJCS8vL3Rlc3QKK2h0dHA6Ly9s
b2NhbGhvc3QvdGVzdAlodHRwOi8vbG9jYWxob3N0L3Rlc3QJbG9jYWxob3N0CS90ZXN0CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci91cmwtcGFyc2UtMS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3VybC1wYXJzZS0xLmh0bWwJKHJldmlzaW9uIDUxMDc2
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvdXJsLXBhcnNlLTEuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgICAgICAgIngtd2Via2l0Oi8vdGVzdCIsCiAg
ICAgICAgICAgICAieC13ZWJraXQ6Ly8vIiwKICAgICAgICAgICAgICJ4LXdlYmtpdDovLy90ZXN0
IiwKKyAgICAgICAgICAgICJcbiBodHRwOi8vbG9jYWxob3N0L3Rlc3QgXG4iLAogICAgICAgICBd
OwogICAgIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RDYXNlcy5sZW5ndGg7ICsr
aSkK
</data>
<flag name="review"
          id="25074"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43427</attachid>
            <date>2009-11-18 04:55:10 -0800</date>
            <delta_ts>2009-11-18 09:20:26 -0800</delta_ts>
            <desc>Alternative Patch.</desc>
            <filename>HTMLApatch.txt</filename>
            <type>text/plain</type>
            <size>7640</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTEwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMTEtMTggIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
cmV0cmlldmluZyB0aGUgaHJlZiBhdHRyaWJ1dGUgb2YgYW4gQSB0YWcsIHdlIHNob3VsZCBydW4g
dGhlIGF0dHJpYnV0ZSB2YWx1ZSB0aHJvdWdoIGRlcHJlY2F0ZWRQYXJzZVVSTCB1bnRpbCBhIGdv
b2QgcmVwbGFjZW1lbnQgZm9yIHRoYXQgZnVuY3Rpb24gaXMgZm91bmQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTU5MworCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NldC1ocmVmLWF0dHJpYnV0ZS13aGl0ZXNwYWNl
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYpOiBBZGQgY2FsbCB0byBkZXByZWNhdGVk
UGFyc2VVUkwuCisKIDIwMDktMTEtMTggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3Vs
YWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gNTEwNzUpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyAr
MzI3LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dhYmxlKCkgY29ucwogCiBLVVJM
IEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7CisgICAgcmV0dXJuIGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChnZXRBdHRyaWJ1dGUoaHJlZkF0
dHIpKSk7CiB9CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhyZWYoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMTAzKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTEtMTggIEJl
biBNdXJkb2NoICA8YmVubUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcmV0cmlldmluZyB0aGUgaHJlZiBhdHRyaWJ1dGUg
b2YgYW4gQSB0YWcsIHdlIHNob3VsZCBydW4gdGhlIGF0dHJpYnV0ZSB2YWx1ZSB0aHJvdWdoIGRl
cHJlY2F0ZWRQYXJzZVVSTCB1bnRpbCBhIGdvb2QgcmVwbGFjZW1lbnQgZm9yIHRoYXQgZnVuY3Rp
b24gaXMgZm91bmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTU5MworCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0
LXRlc3RzL3NldC1ocmVmLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtd2hpdGVzcGFj
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L3NldC1ocmVmLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEx
LTE4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJlZi1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYt
YXR0cmlidXRlLXdoaXRlc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMxIEBACitUZXN0IHNldHRpbmcgdGhlIGhyZWYgYXR0cmlidXRlIG9mIGFuIEhUTUxBbmNob3JF
bGVtZW50IHRvIGEgVVJMIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NldCBocmVmIHRoYXQgc3RhcnRzIHdpdGgg
YSBzcGFjZQorUEFTUyBhLmhvc3RuYW1lIGlzICd3d3cubXlkb21haW4uY29tJworU2V0IGhyZWYg
dGhhdCBzdGFydHMgd2l0aCBhIG5ld2xpbmUKK1BBU1MgYS5ob3N0bmFtZSBpcyAnd3d3Lm15ZG9t
YWluLmNvbScKK1NldCBocmVmIHRoYXQgc3RhcnRzIHdpdGggYSB0YWIKK1BBU1MgYS5ob3N0bmFt
ZSBpcyAnd3d3Lm15ZG9tYWluLmNvbScKK1NldCBocmVmIHRoYXQgc3RhcnRzIHdpdGggYSBjYXJy
aWFnZSByZXR1cm4KK1BBU1MgYS5ob3N0bmFtZSBpcyAnd3d3Lm15ZG9tYWluLmNvbScKK1NldCBo
cmVmIHRoYXQgc3RhcnRzIHdpdGggYSBjb21iaW5hdGlvbiBvZiBuZXdsaW5lcywgc3BhY2VzIGFu
ZCB0YWJzCitQQVNTIGEuaG9zdG5hbWUgaXMgJ3d3dy5teWRvbWFpbi5jb20nCitTZXQgaHJlZiB0
aGF0IGVuZHMgd2l0aCBhIHNwYWNlCitQQVNTIGEuaG9zdG5hbWUgaXMgJ3d3dy5teWRvbWFpbi5j
b20nCitTZXQgaHJlZiB0aGF0IGVuZHMgd2l0aCBhIG5ld2xpbmUKK1BBU1MgYS5ob3N0bmFtZSBp
cyAnd3d3Lm15ZG9tYWluLmNvbScKK1NldCBocmVmIHRoYXQgZW5kcyB3aXRoIGEgdGFiCitQQVNT
IGEuaG9zdG5hbWUgaXMgJ3d3dy5teWRvbWFpbi5jb20nCitTZXQgaHJlZiB0aGF0IGVuZHMgd2l0
aCBhIGNhcnJpYWdlIHJldHVybgorUEFTUyBhLmhvc3RuYW1lIGlzICd3d3cubXlkb21haW4uY29t
JworU2V0IGhyZWYgdGhhdCBlbmRzIHdpdGggYSBjb21iaW5hdGlvbiBvZiBuZXdsaW5lcywgc3Bh
Y2VzIGFuZCB0YWJzCitQQVNTIGEuaG9zdG5hbWUgaXMgJ3d3dy5teWRvbWFpbi5jb20nCitTZXQg
aHJlZiB0aGF0IHN0YXJ0cyBhbmQgZW5kcyB3aXRoIGEgY29tYmluYXRpb24gb2YgbmV3bGluZXMs
IHNwYWNlcyBhbmQgdGFicworUEFTUyBhLmhvc3RuYW1lIGlzICd3d3cubXlkb21haW4uY29tJwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3Nl
dC1ocmVmLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXdoaXRlc3BhY2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtd2hpdGVzcGFjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2V0LWhyZWYtYXR0cmlidXRlLXdoaXRlc3BhY2Uu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
d2hpdGVzcGFjZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9zZXQtaHJl
Zi1hdHRyaWJ1dGUtd2hpdGVzcGFjZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9zY3JpcHQtdGVzdHMvc2V0LWhyZWYtYXR0cmlidXRlLXdoaXRlc3BhY2UuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRl
c3RzL3NldC1ocmVmLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvc2NyaXB0LXRlc3RzL3NldC1ocmVm
LWF0dHJpYnV0ZS13aGl0ZXNwYWNlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACitk
ZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBocmVmIGF0dHJpYnV0ZSBvZiBhbiBIVE1MQW5j
aG9yRWxlbWVudCB0byBhIFVSTCB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Uu
Jyk7CisKK3ZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCitkZWJ1ZygiU2V0
IGhyZWYgdGhhdCBzdGFydHMgd2l0aCBhIHNwYWNlIik7CithLmhyZWYgPSAiIGh0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworc2hvdWxkQmUoImEu
aG9zdG5hbWUiLCAiJ3d3dy5teWRvbWFpbi5jb20nIik7CisKK2RlYnVnKCJTZXQgaHJlZiB0aGF0
IHN0YXJ0cyB3aXRoIGEgbmV3bGluZSIpOworYS5ocmVmID0gIlxuaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7CitzaG91bGRCZSgiYS5ob3N0bmFt
ZSIsICInd3d3Lm15ZG9tYWluLmNvbSciKTsKKworZGVidWcoIlNldCBocmVmIHRoYXQgc3RhcnRz
IHdpdGggYSB0YWIiKTsKK2EuaHJlZiA9ICJcdGh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
L3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworc2hvdWxkQmUoImEuaG9zdG5hbWUiLCAiJ3d3dy5t
eWRvbWFpbi5jb20nIik7CisKK2RlYnVnKCJTZXQgaHJlZiB0aGF0IHN0YXJ0cyB3aXRoIGEgY2Fy
cmlhZ2UgcmV0dXJuIik7CithLmhyZWYgPSAiXHJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK3Nob3VsZEJlKCJhLmhvc3RuYW1lIiwgIid3d3cu
bXlkb21haW4uY29tJyIpOworCitkZWJ1ZygiU2V0IGhyZWYgdGhhdCBzdGFydHMgd2l0aCBhIGNv
bWJpbmF0aW9uIG9mIG5ld2xpbmVzLCBzcGFjZXMgYW5kIHRhYnMiKTsKK2EuaHJlZiA9ICJcbiBc
dFxyIFxuaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1
ZSI7CitzaG91bGRCZSgiYS5ob3N0bmFtZSIsICInd3d3Lm15ZG9tYWluLmNvbSciKTsKKworZGVi
dWcoIlNldCBocmVmIHRoYXQgZW5kcyB3aXRoIGEgc3BhY2UiKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlICI7CitzaG91bGRC
ZSgiYS5ob3N0bmFtZSIsICInd3d3Lm15ZG9tYWluLmNvbSciKTsKKworZGVidWcoIlNldCBocmVm
IHRoYXQgZW5kcyB3aXRoIGEgbmV3bGluZSIpOworYS5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWVcbiI7CitzaG91bGRCZSgiYS5ob3N0
bmFtZSIsICInd3d3Lm15ZG9tYWluLmNvbSciKTsKKworZGVidWcoIlNldCBocmVmIHRoYXQgZW5k
cyB3aXRoIGEgdGFiIik7CithLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgv
dGVzdHVybC5odG1sP2tleT12YWx1ZVx0IjsKK3Nob3VsZEJlKCJhLmhvc3RuYW1lIiwgIid3d3cu
bXlkb21haW4uY29tJyIpOworCitkZWJ1ZygiU2V0IGhyZWYgdGhhdCBlbmRzIHdpdGggYSBjYXJy
aWFnZSByZXR1cm4iKTsKK2EuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlXHIiOworc2hvdWxkQmUoImEuaG9zdG5hbWUiLCAiJ3d3dy5t
eWRvbWFpbi5jb20nIik7CisKK2RlYnVnKCJTZXQgaHJlZiB0aGF0IGVuZHMgd2l0aCBhIGNvbWJp
bmF0aW9uIG9mIG5ld2xpbmVzLCBzcGFjZXMgYW5kIHRhYnMiKTsKK2EuaHJlZiA9ICJodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlXG4gXHRcciBcbiI7
CitzaG91bGRCZSgiYS5ob3N0bmFtZSIsICInd3d3Lm15ZG9tYWluLmNvbSciKTsKKworZGVidWco
IlNldCBocmVmIHRoYXQgc3RhcnRzIGFuZCBlbmRzIHdpdGggYSBjb21iaW5hdGlvbiBvZiBuZXds
aW5lcywgc3BhY2VzIGFuZCB0YWJzIik7CithLmhyZWYgPSAiXG4gXHRcciBcbmh0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWVcbiBcdFxyIFxuIjsKK3No
b3VsZEJlKCJhLmhvc3RuYW1lIiwgIid3d3cubXlkb21haW4uY29tJyIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L3NjcmlwdC10ZXN0cy9zZXQtaHJlZi1hdHRyaWJ1dGUt
d2hpdGVzcGFjZS5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZl
Cgo=
</data>
<flag name="review"
          id="25129"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="25141"
          type_id="3"
          status="-"
          setter="benm"
    />
          </attachment>
      

    </bug>

</bugzilla>