<?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>151438</bug_id>
          
          <creation_ts>2015-11-19 01:16:56 -0800</creation_ts>
          <short_desc>Use HTTPHeaderName as much as possible in XMLHttpRequest</short_desc>
          <delta_ts>2015-11-20 23:35:32 -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>XML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143234</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-19 01:16:56 -0800</bug_when>
    <thetext>Following on bug 147784, XHR should use HTTPHeaderName::ContentType in lieu of &quot;Content-Type&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143238</commentid>
    <comment_count>1</comment_count>
      <attachid>265854</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-19 01:24:13 -0800</bug_when>
    <thetext>Created attachment 265854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143290</commentid>
    <comment_count>2</comment_count>
      <attachid>265854</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-19 08:42:50 -0800</bug_when>
    <thetext>Comment on attachment 265854
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=265854&amp;action=review

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:603
&gt;          if (!m_requestHeaders.contains(HTTPHeaderName::ContentType)) {
&gt;  #if ENABLE(DASHBOARD_SUPPORT)
&gt;              if (usesDashboardBackwardCompatibilityMode())
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;);
&gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, &quot;application/x-www-form-urlencoded&quot;);
&gt;              else
&gt;  #endif
&gt;                  // FIXME: this should include the charset used for encoding.
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, document-&gt;isHTMLDocument() ? &quot;text/html;charset=UTF-8&quot;:&quot;application/xml;charset=UTF-8&quot;);
&gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, document-&gt;isHTMLDocument() ? &quot;text/html;charset=UTF-8&quot;:&quot;application/xml;charset=UTF-8&quot;);
&gt;          }

Should be add instead of set. The existing code was doing add, and add is slightly more efficient than set.

Optional: We could also optimize this so it does only one hash table lookup by doing an add unconditionally; will be smaller code size and more efficient. The semantics of add is that it does nothing if the hash table already contains a value for that key. We can pass the new value to add, or if computing it is expensive we can simply pass a null string to add, and then overwrite the null string if it’s a new entry, which can be checked by looking at the isNewEntry boolean in the result of add.

Also, ASCIILiteral(&quot;&quot;) is more efficient than just passing a literal and letting it be converted to a string.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:633
&gt;      if (!body.isNull() &amp;&amp; m_method != &quot;GET&quot; &amp;&amp; m_method != &quot;HEAD&quot; &amp;&amp; m_url.protocolIsInHTTPFamily()) {
&gt; -        String contentType = getRequestHeader(&quot;Content-Type&quot;);
&gt; +        String contentType = m_requestHeaders.get(HTTPHeaderName::ContentType);
&gt;          if (contentType.isNull()) {
&gt;  #if ENABLE(DASHBOARD_SUPPORT)
&gt;              if (usesDashboardBackwardCompatibilityMode())
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;);
&gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, &quot;application/x-www-form-urlencoded&quot;);
&gt;              else
&gt;  #endif
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;text/plain;charset=UTF-8&quot;);
&gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, &quot;text/plain;charset=UTF-8&quot;);
&gt;          } else {
&gt;              replaceCharsetInMediaType(contentType, &quot;UTF-8&quot;);
&gt;              m_requestHeaders.set(HTTPHeaderName::ContentType, contentType);

All the same comments as above.

Note also that add also makes the value of anything existing in the hash table available with addResult.iterator-&gt;value, so it can be used for an efficient get/set in a single operation like the one here.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:658
&gt;          if (!m_requestHeaders.contains(HTTPHeaderName::ContentType)) {
&gt;              const String&amp; blobType = body-&gt;type();
&gt;              if (!blobType.isEmpty() &amp;&amp; isValidContentType(blobType))
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, blobType);
&gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, blobType);
&gt;              else {
&gt;                  // From FileAPI spec, whenever media type cannot be determined, empty string must be returned.
&gt; -                setRequestHeaderInternal(&quot;Content-Type&quot;, &quot;&quot;);
&gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, &quot;&quot;);
&gt;              }
&gt;          }

Same comments again.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:678
&gt;          if (!m_requestHeaders.contains(HTTPHeaderName::ContentType))
&gt; -            setRequestHeaderInternal(&quot;Content-Type&quot;, makeString(&quot;multipart/form-data; boundary=&quot;, m_requestEntityBody-&gt;boundary().data()));
&gt; +            m_requestHeaders.set(HTTPHeaderName::ContentType, makeString(&quot;multipart/form-data; boundary=&quot;, m_requestEntityBody-&gt;boundary().data()));

Same comments as above, the simplest case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143599</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-20 01:10:18 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; +                m_requestHeaders.set(HTTPHeaderName::ContentType, document-&gt;isHTMLDocument() ? &quot;text/html;charset=UTF-8&quot;:&quot;application/xml;charset=UTF-8&quot;);
&gt; &gt;          }
&gt; 
&gt; Should be add instead of set. The existing code was doing add, and add is
&gt; slightly more efficient than set.

I would think &quot;set&quot; and &quot;add&quot; to be equivalent both in terms of performances and functionality, since we are doing a contain check before doing it.

&quot;set&quot; seems semantically more appropriate for Content-Type header, as we do not want any concatenation to happen.

I plan to land the patch with &quot;set&quot; but am open to changing it later on.

&gt; Optional: We could also optimize this so it does only one hash table lookup
&gt; by doing an add unconditionally; will be smaller code size and more
&gt; efficient. The semantics of add is that it does nothing if the hash table
&gt; already contains a value for that key. We can pass the new value to add, or
&gt; if computing it is expensive we can simply pass a null string to add, and
&gt; then overwrite the null string if it’s a new entry, which can be checked by
&gt; looking at the isNewEntry boolean in the result of add.

Interesting, this sounds better in terms of performances.
We may be loosing some readability though to handle the expensive-value-computation case.  

&gt; Also, ASCIILiteral(&quot;&quot;) is more efficient than just passing a literal and
&gt; letting it be converted to a string.

I will update the patch accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143600</commentid>
    <comment_count>4</comment_count>
      <attachid>265944</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-20 01:12:16 -0800</bug_when>
    <thetext>Created attachment 265944
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143602</commentid>
    <comment_count>5</comment_count>
      <attachid>265944</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 01:26:01 -0800</bug_when>
    <thetext>Comment on attachment 265944
Patch for landing

Clearing flags on attachment: 265944

Committed r192680: &lt;http://trac.webkit.org/changeset/192680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143603</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 01:26:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143868</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-20 15:55:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I would think &quot;set&quot; and &quot;add&quot; to be equivalent both in terms of performances
&gt; and functionality, since we are doing a contain check before doing it.

HashMap::set is always slower than HashMap::add. HashMap::set is implemented by first calling add and then optionally doing some additional work. So it can never be as fast as HashMap::add.

&gt; &quot;set&quot; seems semantically more appropriate for Content-Type header, as we do
&gt; not want any concatenation to happen.

This is a misunderstanding. HashMap::add never does any concatenation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143941</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-20 23:35:32 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #3)
&gt; &gt; I would think &quot;set&quot; and &quot;add&quot; to be equivalent both in terms of performances
&gt; &gt; and functionality, since we are doing a contain check before doing it.
&gt; 
&gt; HashMap::set is always slower than HashMap::add. HashMap::set is implemented
&gt; by first calling add and then optionally doing some additional work. So it
&gt; can never be as fast as HashMap::add.
&gt; 
&gt; &gt; &quot;set&quot; seems semantically more appropriate for Content-Type header, as we do
&gt; &gt; not want any concatenation to happen.
&gt; 
&gt; This is a misunderstanding. HashMap::add never does any concatenation.

XHR is going through HTTPHeaderMap wrapper.
HTTPHeaderMap::add does concatenation.
Inlining these methods might bring some benefit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265854</attachid>
            <date>2015-11-19 01:24:13 -0800</date>
            <delta_ts>2015-11-20 01:12:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151438-20151119102400.patch</filename>
            <type>text/plain</type>
            <size>5836</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5YmQ3YWI5OTg0MDU0
Y2UxOTJiMTk5OTczYTNlNjEzYjA4YzE4Yy4uZWRiYTZkY2FkMzU4ZmZkNTk3YjIwMTYyNDE4NGM2
N2VlNDhlOGRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE1LTExLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgVXNlIEhU
VFBIZWFkZXJOYW1lIGFzIG11Y2ggYXMgcG9zc2libGUgaW4gWE1MSHR0cFJlcXVlc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIFhNTEh0
dHBSZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwgYW5kIFhNTEh0dHBSZXF1ZXN0Ojpn
ZXRSZXF1ZXN0SGVhZGVyLgorICAgICAgICBVc2luZyBkaXJlY3RseSBIVFRQSGVhZGVyTWFwLmFk
ZCBhbmQgSFRUUEhlYWRlck1hcC5nZXQKKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OnNldFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Omdl
dEFsbFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisK
KzIwMTUtMTEtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
KwogICAgICAgICBYSFIgc2hvdWxkIG5vdCBjb21iaW5lIGVtcHR5IGNvbnRlbnQtdHlwZSB2YWx1
ZSB3aXRoIGRlZmF1bHQgb25lCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDc3ODQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggODNiNTU1ODBjZGQ1ODU3ZmY2M2RhYzBlYjQzNDMxYzhjZTA5MmJiZC4uNTVlYTQyNzUwZDg2
MTliNWQzNTg3ZWY1MTQxZGEyNTE1NmM5OWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC01OTUsMTEgKzU5NSwxMSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5k
KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGlmICghbV9y
ZXF1ZXN0SGVhZGVycy5jb250YWlucyhIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSB7CiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAgaWYgKHVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVz
dEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11
cmxlbmNvZGVkIik7CisgICAgICAgICAgICAgICAgbV9yZXF1ZXN0SGVhZGVycy5zZXQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRUeXBlLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
Iik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
dGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgY2hhcnNldCB1c2VkIGZvciBlbmNvZGluZy4KLSAgICAg
ICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsIGRvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpID8gInRleHQvaHRtbDtjaGFyc2V0PVVURi04IjoiYXBwbGlj
YXRpb24veG1sO2NoYXJzZXQ9VVRGLTgiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RIZWFk
ZXJzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGRvY3VtZW50LT5pc0hUTUxEb2N1
bWVudCgpID8gInRleHQvaHRtbDtjaGFyc2V0PVVURi04IjoiYXBwbGljYXRpb24veG1sO2NoYXJz
ZXQ9VVRGLTgiKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBBY2NvcmRpbmcgdG8g
WE1MSHR0cFJlcXVlc3QgTGV2ZWwgMiwgdGhpcyBzaG91bGQgdXNlIHRoZSBEb2N1bWVudC5pbm5l
ckhUTUwgYWxnb3JpdGhtCkBAIC02MjAsMTQgKzYyMCwxNCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpzZW5kKGNvbnN0IFN0cmluZyYgYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghYm9keS5pc051bGwoKSAmJiBtX21ldGhvZCAhPSAiR0VUIiAmJiBt
X21ldGhvZCAhPSAiSEVBRCIgJiYgbV91cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0g
ICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IGdldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlw
ZSIpOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBtX3JlcXVlc3RIZWFkZXJzLmdldChI
VFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpOwogICAgICAgICBpZiAoY29udGVudFR5cGUuaXNO
dWxsKCkpIHsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgICAgICBpZiAo
dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKLSAgICAgICAgICAgICAg
ICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJz
LnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQiKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgICAg
IHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBlIiwgInRleHQvcGxhaW47Y2hh
cnNldD1VVEYtOCIpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgInRleHQvcGxhaW47Y2hhcnNldD1VVEYtOCIpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVwbGFjZUNoYXJzZXRJbk1lZGlhVHlwZShjb250
ZW50VHlwZSwgIlVURi04Iik7CiAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNldChIVFRQ
SGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlKTsKQEAgLTY1MCwxMCArNjUwLDEw
IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiogYm9keSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgIGlmICghbV9yZXF1ZXN0SGVhZGVycy5jb250YWlucyhIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGJsb2JUeXBlID0g
Ym9keS0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKCFibG9iVHlwZS5pc0VtcHR5KCkgJiYgaXNW
YWxpZENvbnRlbnRUeXBlKGJsb2JUeXBlKSkKLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVh
ZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsIGJsb2JUeXBlKTsKKyAgICAgICAgICAgICAgICBt
X3JlcXVlc3RIZWFkZXJzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGJsb2JUeXBl
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEZyb20gRmlsZUFQSSBz
cGVjLCB3aGVuZXZlciBtZWRpYSB0eXBlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCBlbXB0eSBzdHJp
bmcgbXVzdCBiZSByZXR1cm5lZC4KLSAgICAgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50
ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICIiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RIZWFk
ZXJzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsICIiKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCkBAIC02NzUsNyArNjc1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2Vu
ZChET01Gb3JtRGF0YSogYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fcmVxdWVz
dEVudGl0eUJvZHktPmdlbmVyYXRlRmlsZXMoZG9jdW1lbnQoKSk7CiAKICAgICAgICAgaWYgKCFt
X3JlcXVlc3RIZWFkZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpCi0g
ICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsIG1ha2VT
dHJpbmcoIm11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSIsIG1fcmVxdWVzdEVudGl0eUJv
ZHktPmJvdW5kYXJ5KCkuZGF0YSgpKSk7CisgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNl
dChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG1ha2VTdHJpbmcoIm11bHRpcGFydC9mb3Jt
LWRhdGE7IGJvdW5kYXJ5PSIsIG1fcmVxdWVzdEVudGl0eUJvZHktPmJvdW5kYXJ5KCkuZGF0YSgp
KSk7CiAgICAgfQogCiAgICAgY3JlYXRlUmVxdWVzdChlYyk7CkBAIC05NTUsMTcgKzk1NSw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBz
ZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwobmFtZSwgbm9ybWFsaXplZFZhbHVlKTsKLX0KLQotdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBtX3JlcXVlc3RIZWFkZXJzLmFkZChu
YW1lLCB2YWx1ZSk7Ci19Ci0KLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVxdWVzdEhlYWRl
cnMuZ2V0KG5hbWUpOworICAgIG1fcmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUsIG5vcm1hbGl6ZWRW
YWx1ZSk7CiB9CiAKIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggODg1NWY0NGVlNmFm
NjNhMzI0OGQwZWQ0MWVhYWYxMGI0NWQ0NWZkZC4uYTVkMTMwYmNlMWE3NGRiYTVmOWU5NmU4MDNl
OTFhMGI2YWVlOGM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE3Niw5
ICsxNzYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdFNlbmQoRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgc2VuZEJ5dGVzRGF0YShjb25zdCB2b2lkKiwgc2l6ZV90LCBFeGNlcHRpb25Db2Rl
Jik7CiAKLSAgICBTdHJpbmcgZ2V0UmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0OwotICAgIHZvaWQgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0KICAgICB2b2lkIGNoYW5nZVN0YXRlKFN0YXRlIG5l
d1N0YXRlKTsKICAgICB2b2lkIGNhbGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKTsKICAgICB2
b2lkIGRyb3BQcm90ZWN0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265944</attachid>
            <date>2015-11-20 01:12:16 -0800</date>
            <delta_ts>2015-11-20 01:26:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-151438-20151120101203.patch</filename>
            <type>text/plain</type>
            <size>5936</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5YmQ3YWI5OTg0MDU0
Y2UxOTJiMTk5OTczYTNlNjEzYjA4YzE4Yy4uYTU0NTQ0OWU5NDdlNTdkOGQ4YTIyMThmMzc2NWI0
ZTA1YjY2YWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE1LTExLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgVXNlIEhU
VFBIZWFkZXJOYW1lIGFzIG11Y2ggYXMgcG9zc2libGUgaW4gWE1MSHR0cFJlcXVlc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbW92aW5nIFhNTEh0dHBS
ZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwgYW5kIFhNTEh0dHBSZXF1ZXN0OjpnZXRS
ZXF1ZXN0SGVhZGVyLgorICAgICAgICBVc2luZyBkaXJlY3RseSBIVFRQSGVhZGVyTWFwLmFkZCwg
SFRUUEhlYWRlck1hcC5zZXQgYW5kIEhUVFBIZWFkZXJNYXAuZ2V0LgorCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuaDoKKworMjAxNS0xMS0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJs
ZXRAY3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFhIUiBzaG91bGQgbm90IGNvbWJpbmUgZW1wdHkg
Y29udGVudC10eXBlIHZhbHVlIHdpdGggZGVmYXVsdCBvbmUKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc4NAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCA4M2I1NTU4MGNkZDU4NTdmZjYzZGFjMGViNDM0MzFjOGNlMDky
YmJkLi44MDRiNzA4MWMxNzE1ZmYwNWJlZWM0MWU2MmY1ZjI1YmQwOWZhN2U5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTU5NSwxMSArNTk1LDExIEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OnNlbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSkpIHsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgICAg
ICBpZiAodXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKLSAgICAgICAg
ICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJuYWwoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RI
ZWFkZXJzLnNldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIEFTQ0lJTGl0ZXJhbCgiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikpOwogICAgICAgICAgICAgZWxzZQogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGNo
YXJzZXQgdXNlZCBmb3IgZW5jb2RpbmcuCi0gICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRl
ckludGVybmFsKCJDb250ZW50LVR5cGUiLCBkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSA/ICJ0
ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCI6ImFwcGxpY2F0aW9uL3htbDtjaGFyc2V0PVVURi04Iik7
CisgICAgICAgICAgICAgICAgbV9yZXF1ZXN0SGVhZGVycy5zZXQoSFRUUEhlYWRlck5hbWU6OkNv
bnRlbnRUeXBlLCBkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSA/IEFTQ0lJTGl0ZXJhbCgidGV4
dC9odG1sO2NoYXJzZXQ9VVRGLTgiKSA6IEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24veG1sO2No
YXJzZXQ9VVRGLTgiKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogQWNjb3JkaW5n
IHRvIFhNTEh0dHBSZXF1ZXN0IExldmVsIDIsIHRoaXMgc2hvdWxkIHVzZSB0aGUgRG9jdW1lbnQu
aW5uZXJIVE1MIGFsZ29yaXRobQpAQCAtNjIwLDE0ICs2MjAsMTQgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6c2VuZChjb25zdCBTdHJpbmcmIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIWJvZHkuaXNOdWxsKCkgJiYgbV9tZXRob2QgIT0gIkdFVCIg
JiYgbV9tZXRob2QgIT0gIkhFQUQiICYmIG1fdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
ewotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50
LVR5cGUiKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gbV9yZXF1ZXN0SGVhZGVycy5n
ZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKTsKICAgICAgICAgaWYgKGNvbnRlbnRUeXBl
LmlzTnVsbCgpKSB7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAgICAg
aWYgKHVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAg
ICAgICAgc2V0UmVxdWVzdEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CisgICAgICAgICAgICAgICAgbV9yZXF1ZXN0SGVh
ZGVycy5zZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBBU0NJSUxpdGVyYWwoImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRp
ZgotICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBl
IiwgInRleHQvcGxhaW47Y2hhcnNldD1VVEYtOCIpOworICAgICAgICAgICAgICAgIG1fcmVxdWVz
dEhlYWRlcnMuc2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgQVNDSUlMaXRlcmFsKCJ0
ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICByZXBsYWNlQ2hhcnNldEluTWVkaWFUeXBlKGNvbnRlbnRUeXBlLCAiVVRGLTgiKTsKICAgICAg
ICAgICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwg
Y29udGVudFR5cGUpOwpAQCAtNjUwLDEwICs2NTAsMTAgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
c2VuZChCbG9iKiBib2R5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgaWYgKCFtX3JlcXVl
c3RIZWFkZXJzLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpIHsKICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgYmxvYlR5cGUgPSBib2R5LT50eXBlKCk7CiAgICAgICAgICAg
ICBpZiAoIWJsb2JUeXBlLmlzRW1wdHkoKSAmJiBpc1ZhbGlkQ29udGVudFR5cGUoYmxvYlR5cGUp
KQotICAgICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBl
IiwgYmxvYlR5cGUpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgYmxvYlR5cGUpOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgLy8gRnJvbSBGaWxlQVBJIHNwZWMsIHdoZW5ldmVyIG1lZGlhIHR5cGUg
Y2Fubm90IGJlIGRldGVybWluZWQsIGVtcHR5IHN0cmluZyBtdXN0IGJlIHJldHVybmVkLgotICAg
ICAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVudC1UeXBlIiwgIiIp
OworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEhlYWRlcnMuc2V0KEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApA
QCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRE9NRm9ybURhdGEq
IGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5n
ZW5lcmF0ZUZpbGVzKGRvY3VtZW50KCkpOwogCiAgICAgICAgIGlmICghbV9yZXF1ZXN0SGVhZGVy
cy5jb250YWlucyhIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKQotICAgICAgICAgICAgc2V0
UmVxdWVzdEhlYWRlckludGVybmFsKCJDb250ZW50LVR5cGUiLCBtYWtlU3RyaW5nKCJtdWx0aXBh
cnQvZm9ybS1kYXRhOyBib3VuZGFyeT0iLCBtX3JlcXVlc3RFbnRpdHlCb2R5LT5ib3VuZGFyeSgp
LmRhdGEoKSkpOworICAgICAgICAgICAgbV9yZXF1ZXN0SGVhZGVycy5zZXQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRUeXBlLCBtYWtlU3RyaW5nKCJtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFy
eT0iLCBtX3JlcXVlc3RFbnRpdHlCb2R5LT5ib3VuZGFyeSgpLmRhdGEoKSkpOwogICAgIH0KIAog
ICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwpAQCAtOTU1LDE3ICs5NTUsNyBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgRQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2V0UmVxdWVzdEhlYWRl
ckludGVybmFsKG5hbWUsIG5vcm1hbGl6ZWRWYWx1ZSk7Ci19Ci0KLXZvaWQgWE1MSHR0cFJlcXVl
c3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCi17Ci0gICAgbV9yZXF1ZXN0SGVhZGVycy5hZGQobmFtZSwgdmFsdWUpOwot
fQotCi1TdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAotewotICAgIHJldHVybiBtX3JlcXVlc3RIZWFkZXJzLmdldChuYW1lKTsK
KyAgICBtX3JlcXVlc3RIZWFkZXJzLmFkZChuYW1lLCBub3JtYWxpemVkVmFsdWUpOwogfQogCiBT
dHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhZGVycygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDg4NTVmNDRlZTZhZjYzYTMyNDhkMGVkNDFl
YWFmMTBiNDVkNDVmZGQuLmE1ZDEzMGJjZTFhNzRkYmE1ZjllOTZlODAzZTkxYTBiNmFlZThjNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xNzYsOSArMTc2LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIGluaXRTZW5kKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmRC
eXRlc0RhdGEoY29uc3Qgdm9pZCosIHNpemVfdCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgU3Ry
aW5nIGdldFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICB2b2lk
IHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwotCiAgICAgdm9pZCBjaGFuZ2VTdGF0ZShTdGF0ZSBuZXdTdGF0ZSk7CiAgICAg
dm9pZCBjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCk7CiAgICAgdm9pZCBkcm9wUHJvdGVj
dGlvbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>