<?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>39864</bug_id>
          
          <creation_ts>2010-05-27 23:55:46 -0700</creation_ts>
          <short_desc>Fix WebSocketHandshakeRequest so that it fits the new handshake protocol</short_desc>
          <delta_ts>2010-06-22 02:00:29 -0700</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>
          
          <blocked>38831</blocked>
    
    <blocked>40768</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>ap</cc>
    
    <cc>morrita</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231584</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-27 23:55:46 -0700</bug_when>
    <thetext>The new WebSocket specification (draft 76 and later) allows a browser to send header fields in arbitrary order. Thus we can use a HTTPHeaderMap to store header fields instead of Vector of pairs of a field name and a field value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231585</commentid>
    <comment_count>1</comment_count>
      <attachid>57299</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-28 00:01:29 -0700</bug_when>
    <thetext>Created attachment 57299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231590</commentid>
    <comment_count>2</comment_count>
      <attachid>57299</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-28 00:57:36 -0700</bug_when>
    <thetext>Comment on attachment 57299
Patch


&gt; diff --git a/WebCore/websockets/WebSocketHandshake.cpp b/WebCore/websockets/WebSocketHandshake.cpp
&gt; index ea4f5e5657c53c2532e6d90aec410e0d79976be3..9b1fa591278af51db482e4885adce0a7ec511e3a 100644
&gt; --- a/WebCore/websockets/WebSocketHandshake.cpp
&gt; +++ b/WebCore/websockets/WebSocketHandshake.cpp
&gt; @@ -279,14 +279,20 @@ WebSocketHandshakeRequest WebSocketHandshake::clientHandshakeRequest() const
&gt;      // Keep the following consistent with clientHandshakeMessage().
&gt;      // FIXME: do we need to store m_secWebSocketKey1, m_secWebSocketKey2 and
&gt;      // m_key3 in WebSocketHandshakeRequest?
&gt; -    WebSocketHandshakeRequest request(m_url, clientOrigin(), m_clientProtocol);
&gt; +    WebSocketHandshakeRequest request(&quot;GET&quot;, m_url);
&gt; +    request.addHeaderField(&quot;Upgrade&quot;, &quot;WebSocket&quot;);
&gt; +    request.addHeaderField(&quot;Connection&quot;, &quot;Upgrade&quot;);
&gt; +    request.addHeaderField(&quot;Host&quot;, hostName(m_url, m_secure));
&gt; +    request.addHeaderField(&quot;Origin&quot;, clientOrigin());
&gt; +    if (!m_clientProtocol.isEmpty())
&gt; +        request.addHeaderField(&quot;Sec-WebSocket-Protocol:&quot;, m_clientProtocol);

Don&apos;t we want to add Sec-WebSocket-Key1, Key2 ?
How about key3 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232237</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-30 19:34:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 57299 [details])
&gt; 
&gt; &gt; diff --git a/WebCore/websockets/WebSocketHandshake.cpp b/WebCore/websockets/WebSocketHandshake.cpp
&gt; &gt; index ea4f5e5657c53c2532e6d90aec410e0d79976be3..9b1fa591278af51db482e4885adce0a7ec511e3a 100644
&gt; &gt; --- a/WebCore/websockets/WebSocketHandshake.cpp
&gt; &gt; +++ b/WebCore/websockets/WebSocketHandshake.cpp
&gt; &gt; @@ -279,14 +279,20 @@ WebSocketHandshakeRequest WebSocketHandshake::clientHandshakeRequest() const
&gt; &gt;      // Keep the following consistent with clientHandshakeMessage().
&gt; &gt;      // FIXME: do we need to store m_secWebSocketKey1, m_secWebSocketKey2 and
&gt; &gt;      // m_key3 in WebSocketHandshakeRequest?
&gt; &gt; -    WebSocketHandshakeRequest request(m_url, clientOrigin(), m_clientProtocol);
&gt; &gt; +    WebSocketHandshakeRequest request(&quot;GET&quot;, m_url);
&gt; &gt; +    request.addHeaderField(&quot;Upgrade&quot;, &quot;WebSocket&quot;);
&gt; &gt; +    request.addHeaderField(&quot;Connection&quot;, &quot;Upgrade&quot;);
&gt; &gt; +    request.addHeaderField(&quot;Host&quot;, hostName(m_url, m_secure));
&gt; &gt; +    request.addHeaderField(&quot;Origin&quot;, clientOrigin());
&gt; &gt; +    if (!m_clientProtocol.isEmpty())
&gt; &gt; +        request.addHeaderField(&quot;Sec-WebSocket-Protocol:&quot;, m_clientProtocol);
&gt; 
&gt; Don&apos;t we want to add Sec-WebSocket-Key1, Key2 ?
&gt; How about key3 ?

I think we should have them. Let me update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232266</commentid>
    <comment_count>4</comment_count>
      <attachid>57435</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-30 23:05:48 -0700</bug_when>
    <thetext>Created attachment 57435
Patch (Add Key1, 2 and 3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239457</commentid>
    <comment_count>5</comment_count>
      <attachid>57435</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-17 10:35:56 -0700</bug_when>
    <thetext>Comment on attachment 57435
Patch (Add Key1, 2 and 3)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239710</commentid>
    <comment_count>6</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-17 19:32:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 57435 [details])
&gt; r=me

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241190</commentid>
    <comment_count>7</comment_count>
      <attachid>57435</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-22 01:47:13 -0700</bug_when>
    <thetext>Comment on attachment 57435
Patch (Add Key1, 2 and 3)

I&apos;ll land this manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241195</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-22 02:00:29 -0700</bug_when>
    <thetext>Committed r61611: &lt;http://trac.webkit.org/changeset/61611&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57299</attachid>
            <date>2010-05-28 00:01:29 -0700</date>
            <delta_ts>2010-05-30 23:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39864-20100528160128.patch</filename>
            <type>text/plain</type>
            <size>7596</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODA4ZWM1NjBhOTI5MjBiMjliMjA4Yjg2NjJjYjYxMTZmY2FkYmM5MS4uOWQyMGVlMjJkZDI1YzRj
Y2M0NWIwNGQ0ZTlmYTIyZTg2ZDg0ZDM0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNS0yNyAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBz
byB0aGF0IGl0IGZpdHMgdGhlIG5ldyBoYW5kc2hha2UgcHJvdG9jb2wuCisKKyAgICAgICAgVGhl
IG5ldyBXZWJTb2NrZXQgc3BlY2lmaWNhdGlvbiAoZHJhZnQgNzYgYW5kIGxhdGVyKSBhbGxvd3Mg
YSBicm93c2VyIHRvCisgICAgICAgIHNlbmQgaGVhZGVyIGZpZWxkcyBpbiBhcmJpdHJhcnkgb3Jk
ZXIuIFRodXMgd2UgY2FuIHVzZSBhIEhUVFBIZWFkZXJNYXAgdG8KKyAgICAgICAgc3RvcmUgaGVh
ZGVyIGZpZWxkcyBpbnN0ZWFkIG9mIFZlY3RvciBvZiBwYWlycyBvZiBhIGZpZWxkIG5hbWUgYW5k
CisgICAgICAgIGEgZmllbGQgdmFsdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRvZXMg
cmVmYWN0b3Jpbmcgb2YgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBjbGFzcworICAgICAgICB0
byBtYWtlIGl0IHNpbXBsZXIgYW5kIGVhc2llciB0byB1c2UuCisKKyAgICAgICAgRml4IFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3Qgc28gdGhhdCBpdCBmaXRzIHRoZSBuZXcgaGFuZHNoYWtlIHBy
b3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTg2NAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlv
bmFsIGNoYW5nZS4KKworICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtl
UmVxdWVzdCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OldlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdDo6cmVxdWVzdE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0Ojp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdDo6YWRkSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdDo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaDoKKwogMjAxMC0wNS0yNyAgTmF0aGFuIExhd3JlbmNl
ICA8bmxhd3JlbmNlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZWE0
ZjVlNTY1N2M1M2MyNTMyZTZkOTBhZWM0MTBlMGQ3OTk3NmJlMy4uOWIxZmE1OTEyNzhhZjUxZGI0
ODJlNDg4NWFkY2UwYTdlYzUxMWUzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKQEAgLTI3OSwxNCArMjc5LDIwIEBAIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKICAg
ICAvLyBLZWVwIHRoZSBmb2xsb3dpbmcgY29uc2lzdGVudCB3aXRoIGNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKS4KICAgICAvLyBGSVhNRTogZG8gd2UgbmVlZCB0byBzdG9yZSBtX3NlY1dlYlNvY2tl
dEtleTEsIG1fc2VjV2ViU29ja2V0S2V5MiBhbmQKICAgICAvLyBtX2tleTMgaW4gV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdD8KLSAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0IHJlcXVlc3Qo
bV91cmwsIGNsaWVudE9yaWdpbigpLCBtX2NsaWVudFByb3RvY29sKTsKKyAgICBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0IHJlcXVlc3QoIkdFVCIsIG1fdXJsKTsKKyAgICByZXF1ZXN0LmFkZEhl
YWRlckZpZWxkKCJVcGdyYWRlIiwgIldlYlNvY2tldCIpOworICAgIHJlcXVlc3QuYWRkSGVhZGVy
RmllbGQoIkNvbm5lY3Rpb24iLCAiVXBncmFkZSIpOworICAgIHJlcXVlc3QuYWRkSGVhZGVyRmll
bGQoIkhvc3QiLCBob3N0TmFtZShtX3VybCwgbV9zZWN1cmUpKTsKKyAgICByZXF1ZXN0LmFkZEhl
YWRlckZpZWxkKCJPcmlnaW4iLCBjbGllbnRPcmlnaW4oKSk7CisgICAgaWYgKCFtX2NsaWVudFBy
b3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiU2VjLVdl
YlNvY2tldC1Qcm90b2NvbDoiLCBtX2NsaWVudFByb3RvY29sKTsKIAogICAgIEtVUkwgdXJsID0g
aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2NvbnRleHQt
PmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KG1fY29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKICAgICAgICAgaWYgKCFjb29r
aWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVxdWVzdC5hZGRFeHRyYUhlYWRlckZpZWxkKCJD
b29raWUiLCBjb29raWUpOworICAgICAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiQ29v
a2llIiwgY29va2llKTsKICAgICAgICAgLy8gU2V0ICJDb29raWUyOiA8Y29va2llPiIgaWYgY29v
a2llcyAyIGV4aXN0cyBmb3IgdXJsPwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCmluZGV4IDlhNDExNjdkNDBlNDM0OTk4OGE5
YjM5MmQxZDBlYzJlZmIyYzE5M2MuLmRkZmE4M2U0MTc2Yjc2MDMwMDA4YWYyNzI5OGEyMTc0Mjcy
ZDQyNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5jcHAKQEAgLTM0LDYwICszNCwzNiBAQAogCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgd2ViU29ja2V0
UHJvdG9jb2wpCitXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgS1VSTCYgdXJsKQogICAg
IDogbV91cmwodXJsKQotICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCi0g
ICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgLCBtX3dlYlNvY2tldFByb3RvY29sKHdlYlNvY2tl
dFByb3RvY29sKQorICAgICwgbV9yZXF1ZXN0TWV0aG9kKHJlcXVlc3RNZXRob2QpCiB7Ci0gICAg
QVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOwogfQogCiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
Ojp+V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCgpCiB7CiB9CiAKLXZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdDo6YWRkRXh0cmFIZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dDo6cmVxdWVzdE1ldGhvZCgpIGNvbnN0CiB7Ci0gICAgbV9leHRyYUhlYWRlckZpZWxkcy5hcHBl
bmQoSGVhZGVyRmllbGQobmFtZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9yZXF1ZXN0TWV0aG9k
OwogfQogCi12b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OmFkZEV4dHJhSGVhZGVyRmll
bGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0tVUkwgV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdDo6dXJsKCkgY29uc3QKIHsKLSAgICBtX2V4dHJhSGVhZGVyRmllbGRz
LmFwcGVuZChIZWFkZXJGaWVsZChuYW1lLCB2YWx1ZSkpOworICAgIHJldHVybiBtX3VybDsKIH0K
IAotVmVjdG9yPFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OkhlYWRlckZpZWxkPiBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0OjpoZWFkZXJGaWVsZHMoKSBjb25zdAordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0OjphZGRIZWFkZXJGaWVsZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIFZlY3RvcjxIZWFkZXJGaWVsZD4gZmllbGRzOwotICAgIGZp
ZWxkcy5hcHBlbmQoSGVhZGVyRmllbGQoIlVwZ3JhZGUiLCAiV2ViU29ja2V0IikpOwotICAgIGZp
ZWxkcy5hcHBlbmQoSGVhZGVyRmllbGQoIkNvbm5lY3Rpb24iLCAiVXBncmFkZSIpKTsKLSAgICBm
aWVsZHMuYXBwZW5kKEhlYWRlckZpZWxkKCJIb3N0IiwgaG9zdCgpKSk7Ci0gICAgZmllbGRzLmFw
cGVuZChIZWFkZXJGaWVsZCgiT3JpZ2luIiwgbV9vcmlnaW4pKTsKLSAgICBpZiAoIW1fd2ViU29j
a2V0UHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKEhlYWRlckZpZWxk
KCJXZWJTb2NrZXQtUHJvdG9jb2wiLCBtX3dlYlNvY2tldFByb3RvY29sKSk7Ci0gICAgZmllbGRz
LmFwcGVuZChtX2V4dHJhSGVhZGVyRmllbGRzKTsKLSAgICByZXR1cm4gZmllbGRzOworICAgIG1f
aGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0Ojpob3N0KCkgY29uc3QKK2NvbnN0IEhUVFBIZWFkZXJNYXAmIFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3Q6OmhlYWRlckZpZWxkcygpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsK
LSAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODApIHx8IChtX3NlY3VyZSAm
JiBtX3VybC5wb3J0KCkgIT0gNDQzKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiIpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbV9oZWFkZXJG
aWVsZHM7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oCmluZGV4IGQ0ODgxMzU0OGJkZjEwOTg3OWI2
YjhkZWJmY2NmMDBkNTQ5MmFhYmEuLmZiMTQyNzU2ZjRmOTE5MjA5YWVlY2ZiZTE1ZjFhZmUyMDhh
NWE3YjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaApAQCAtMzMsMzcgKzMzLDI3IEBACiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKKyNp
bmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEF0b21pY1N0cmluZzsKLQogY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9j
b2wpOworICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0
TWV0aG9kLCBjb25zdCBLVVJMJik7CiAgICAgfldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoKTsK
IAotICAgIC8vIEFjY29yZGluZyB0byBjdXJyZW50IFdlYiBTb2NrZXQgcHJvdG9jb2wgc3BlY2lm
aWNhdGlvbiwgZm91ciBtYW5kYXRvcnkgaGVhZGVycyAoVXBncmFkZSwgQ29ubmVjdGlvbiwgSG9z
dCwgYW5kIE9yaWdpbikgYW5kCi0gICAgLy8gb25lIG9wdGlvbmFsIGhlYWRlciAoV2ViU29ja2V0
LVByb3RvY29sKSBzaG91bGQgYmUgc2VudCBpbiB0aGlzIG9yZGVyLCBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBoYW5kc2hha2UgcmVxdWVzdC4KLSAgICAvLyBUaGUgcmVtYWluaW5nIGhlYWRlcnMg
Y2FuIGJlIHNldCBieSB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uLgotICAgIHZvaWQgYWRk
RXh0cmFIZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpOwotICAgIHZvaWQgYWRkRXh0cmFIZWFkZXJGaWVsZChjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBTdHJpbmcgcmVxdWVzdE1ldGhvZCgpIGNvbnN0Owor
ICAgIEtVUkwgdXJsKCkgY29uc3Q7CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIGhlYWRl
ciBmaWVsZHMgaW5jbHVkaW5nIGZpdmUgc3BlY2lhbCBvbmVzLgotICAgIHR5cGVkZWYgc3RkOjpw
YWlyPEF0b21pY1N0cmluZywgU3RyaW5nPiBIZWFkZXJGaWVsZDsKLSAgICBWZWN0b3I8SGVhZGVy
RmllbGQ+IGhlYWRlckZpZWxkcygpIGNvbnN0OworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlckZpZWxkcygpIGNvbnN0OworICAgIHZvaWQgYWRkSGVhZGVyRmllbGQoY29uc3QgY2hhciog
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGhvc3Qo
KSBjb25zdDsKLQogICAgIEtVUkwgbV91cmw7Ci0gICAgYm9vbCBtX3NlY3VyZTsKLSAgICBTdHJp
bmcgbV9vcmlnaW47Ci0gICAgU3RyaW5nIG1fd2ViU29ja2V0UHJvdG9jb2w7Ci0gICAgVmVjdG9y
PEhlYWRlckZpZWxkPiBtX2V4dHJhSGVhZGVyRmllbGRzOworICAgIFN0cmluZyBtX3JlcXVlc3RN
ZXRob2Q7CisgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlckZpZWxkczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57435</attachid>
            <date>2010-05-30 23:05:48 -0700</date>
            <delta_ts>2010-06-22 01:47:13 -0700</delta_ts>
            <desc>Patch (Add Key1, 2 and 3)</desc>
            <filename>bug-39864-20100531150546.patch</filename>
            <type>text/plain</type>
            <size>8667</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTU3YjY1N2NmMDJkYTc5MGQ0NTdkMTJlMmExMmI3NGQwNjVlYTFlNi4uMjFhYjllMTliMTY2YzZk
ZjA1ZDc1NTY4ODRkMDA1YzdhYzc2ZWYyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNS0zMCAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBz
byB0aGF0IGl0IGZpdHMgdGhlIG5ldyBoYW5kc2hha2UgcHJvdG9jb2wuCisKKyAgICAgICAgVGhl
IG5ldyBXZWJTb2NrZXQgc3BlY2lmaWNhdGlvbiAoZHJhZnQgNzYgYW5kIGxhdGVyKSBhbGxvd3Mg
YSBicm93c2VyIHRvCisgICAgICAgIHNlbmQgaGVhZGVyIGZpZWxkcyBpbiBhcmJpdHJhcnkgb3Jk
ZXIuIFRodXMgd2UgY2FuIHVzZSBhIEhUVFBIZWFkZXJNYXAgdG8KKyAgICAgICAgc3RvcmUgaGVh
ZGVyIGZpZWxkcyBpbnN0ZWFkIG9mIFZlY3RvciBvZiBwYWlycyBvZiBhIGZpZWxkIG5hbWUgYW5k
CisgICAgICAgIGEgZmllbGQgdmFsdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRvZXMg
cmVmYWN0b3Jpbmcgb2YgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCBjbGFzcworICAgICAgICB0
byBtYWtlIGl0IHNpbXBsZXIgYW5kIGVhc2llciB0byB1c2UuCisKKyAgICAgICAgRml4IFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3Qgc28gdGhhdCBpdCBmaXRzIHRoZSBuZXcgaGFuZHNoYWtlIHBy
b3RvY29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTg2NAorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlv
bmFsIGNoYW5nZS4KKworICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtl
UmVxdWVzdCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OktleTM6
OktleTMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6S2V5
Mzo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6Oldl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdDo6cmVxdWVzdE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0Ojp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdDo6YWRkSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdDo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OmtleTMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdDo6c2V0S2V5Myk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg6CisKIDIwMTAtMDUtMzAgIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGVhNGY1ZTU2NTdjNTNjMjUz
MmU2ZDkwYWVjNDEwZTBkNzk5NzZiZTMuLmFiYjUzOGMwZmY1YjMxMGQxNmNmOTlkY2FjZjk5YWQ0
ZjdlMTNhNTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC0yNzksMTcgKzI3OSwyNyBAQCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0IFdlYlNvY2tldEhh
bmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0CiAgICAgLy8gS2VlcCB0aGUg
Zm9sbG93aW5nIGNvbnNpc3RlbnQgd2l0aCBjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkuCiAgICAg
Ly8gRklYTUU6IGRvIHdlIG5lZWQgdG8gc3RvcmUgbV9zZWNXZWJTb2NrZXRLZXkxLCBtX3NlY1dl
YlNvY2tldEtleTIgYW5kCiAgICAgLy8gbV9rZXkzIGluIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3Q/Ci0gICAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCByZXF1ZXN0KG1fdXJsLCBjbGllbnRP
cmlnaW4oKSwgbV9jbGllbnRQcm90b2NvbCk7CisgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dCByZXF1ZXN0KCJHRVQiLCBtX3VybCk7CisgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiVXBn
cmFkZSIsICJXZWJTb2NrZXQiKTsKKyAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJDb25uZWN0
aW9uIiwgIlVwZ3JhZGUiKTsKKyAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJIb3N0IiwgaG9z
dE5hbWUobV91cmwsIG1fc2VjdXJlKSk7CisgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiT3Jp
Z2luIiwgY2xpZW50T3JpZ2luKCkpOworICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5
KCkpCisgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtUHJvdG9j
b2w6IiwgbV9jbGllbnRQcm90b2NvbCk7CiAKICAgICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKICAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkp
IHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPiht
X2NvbnRleHQpOwogICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoZG9jdW1lbnQsIHVybCk7CiAgICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJlcXVlc3QuYWRkRXh0cmFIZWFkZXJGaWVsZCgiQ29va2llIiwgY29va2ll
KTsKKyAgICAgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIkNvb2tpZSIsIGNvb2tpZSk7
CiAgICAgICAgIC8vIFNldCAiQ29va2llMjogPGNvb2tpZT4iIGlmIGNvb2tpZXMgMiBleGlzdHMg
Zm9yIHVybD8KICAgICB9CiAKKyAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29j
a2V0LUtleTEiLCBtX3NlY1dlYlNvY2tldEtleTEpOworICAgIHJlcXVlc3QuYWRkSGVhZGVyRmll
bGQoIlNlYy1XZWJTb2NrZXQtS2V5MiIsIG1fc2VjV2ViU29ja2V0S2V5Mik7CisgICAgcmVxdWVz
dC5zZXRLZXkzKG1fa2V5Myk7CisKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCmluZGV4IDlhNDEx
NjdkNDBlNDM0OTk4OGE5YjM5MmQxZDBlYzJlZmIyYzE5M2MuLjExMzJhNDQ3OGFmODYwMTgxMDEw
OTk3NWQyOWZhZTdmMGJjOTExMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKQEAgLTM0LDYwICszNCw2MCBAQAogCiAjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDxjc3RyaW5nPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3Q6OldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCkKK1dlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3Q6OktleTM6OktleTMoKQoreworICAgIG1lbXNldCh2YWx1ZSwgMCwgc2l6
ZW9mKHZhbHVlKSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6S2V5Mzo6
c2V0KGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5M1s4XSkKK3sKKyAgICBtZW1jcHkodmFsdWUsIGtl
eTMsIHNpemVvZih2YWx1ZSkpOworfQorCitXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3Qg
S1VSTCYgdXJsKQogICAgIDogbV91cmwodXJsKQotICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9j
b2xJcygid3NzIikpCi0gICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgLCBtX3dlYlNvY2tldFBy
b3RvY29sKHdlYlNvY2tldFByb3RvY29sKQorICAgICwgbV9yZXF1ZXN0TWV0aG9kKHJlcXVlc3RN
ZXRob2QpCiB7Ci0gICAgQVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOwogfQogCiBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0Ojp+V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCgpCiB7CiB9CiAKLXZv
aWQgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6YWRkRXh0cmFIZWFkZXJGaWVsZChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitTdHJpbmcgV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdDo6cmVxdWVzdE1ldGhvZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cmVxdWVzdE1ldGhvZDsKK30KKworS1VSTCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Ojp1cmwo
KSBjb25zdAoreworICAgIHJldHVybiBtX3VybDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0OjphZGRIZWFkZXJGaWVsZChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewotICAgIG1fZXh0cmFIZWFkZXJGaWVsZHMuYXBwZW5kKEhlYWRlckZpZWxkKG5h
bWUsIHZhbHVlKSk7CisgICAgbV9oZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKIH0KIAot
dm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjphZGRFeHRyYUhlYWRlckZpZWxkKGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitjb25zdCBIVFRQSGVhZGVyTWFwJiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpoZWFkZXJGaWVsZHMoKSBjb25zdAogewotICAgIG1f
ZXh0cmFIZWFkZXJGaWVsZHMuYXBwZW5kKEhlYWRlckZpZWxkKG5hbWUsIHZhbHVlKSk7CisgICAg
cmV0dXJuIG1faGVhZGVyRmllbGRzOwogfQogCi1WZWN0b3I8V2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdDo6SGVhZGVyRmllbGQ+IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OmhlYWRlckZpZWxk
cygpIGNvbnN0CitXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzIFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3Q6OmtleTMoKSBjb25zdAogewotICAgIFZlY3RvcjxIZWFkZXJGaWVsZD4gZmll
bGRzOwotICAgIGZpZWxkcy5hcHBlbmQoSGVhZGVyRmllbGQoIlVwZ3JhZGUiLCAiV2ViU29ja2V0
IikpOwotICAgIGZpZWxkcy5hcHBlbmQoSGVhZGVyRmllbGQoIkNvbm5lY3Rpb24iLCAiVXBncmFk
ZSIpKTsKLSAgICBmaWVsZHMuYXBwZW5kKEhlYWRlckZpZWxkKCJIb3N0IiwgaG9zdCgpKSk7Ci0g
ICAgZmllbGRzLmFwcGVuZChIZWFkZXJGaWVsZCgiT3JpZ2luIiwgbV9vcmlnaW4pKTsKLSAgICBp
ZiAoIW1fd2ViU29ja2V0UHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBmaWVsZHMuYXBwZW5k
KEhlYWRlckZpZWxkKCJXZWJTb2NrZXQtUHJvdG9jb2wiLCBtX3dlYlNvY2tldFByb3RvY29sKSk7
Ci0gICAgZmllbGRzLmFwcGVuZChtX2V4dHJhSGVhZGVyRmllbGRzKTsKLSAgICByZXR1cm4gZmll
bGRzOworICAgIHJldHVybiBtX2tleTM7CiB9CiAKLVN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0Ojpob3N0KCkgY29uc3QKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6c2V0
S2V5Myhjb25zdCB1bnNpZ25lZCBjaGFyIGtleTNbOF0pCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKLSAgICBp
ZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODApIHx8IChtX3NlY3VyZSAmJiBtX3Vy
bC5wb3J0KCkgIT0gNDQzKSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiIpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBtX2tleTMuc2V0KGtleTMpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QuaAppbmRleCBkNDg4MTM1NDhiZGYxMDk4NzliNmI4ZGViZmNjZjAw
ZDU0OTJhYWJhLi43OTJmNjdlNTJhNzc0MzI3YmFkN2I4NDZiNDBlMDBmYWQ1NmFlODBhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oCisr
KyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgKQEAgLTMz
LDM3ICszMywzNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogCisjaW5jbHVkZSAiSFRU
UEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBBdG9taWNTdHJpbmc7Ci0KIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qgewog
cHVibGljOgotICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIHdlYlNvY2tldFByb3RvY29sKTsKKyAgICBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29u
c3QgS1VSTCYpOwogICAgIH5XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KCk7CiAKLSAgICAvLyBB
Y2NvcmRpbmcgdG8gY3VycmVudCBXZWIgU29ja2V0IHByb3RvY29sIHNwZWNpZmljYXRpb24sIGZv
dXIgbWFuZGF0b3J5IGhlYWRlcnMgKFVwZ3JhZGUsIENvbm5lY3Rpb24sIEhvc3QsIGFuZCBPcmln
aW4pIGFuZAotICAgIC8vIG9uZSBvcHRpb25hbCBoZWFkZXIgKFdlYlNvY2tldC1Qcm90b2NvbCkg
c2hvdWxkIGJlIHNlbnQgaW4gdGhpcyBvcmRlciwgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaGFu
ZHNoYWtlIHJlcXVlc3QuCi0gICAgLy8gVGhlIHJlbWFpbmluZyBoZWFkZXJzIGNhbiBiZSBzZXQg
YnkgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbi4KLSAgICB2b2lkIGFkZEV4dHJhSGVhZGVy
RmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAg
ICB2b2lkIGFkZEV4dHJhSGVhZGVyRmllbGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CisgICAgU3RyaW5nIHJlcXVlc3RNZXRob2QoKSBjb25zdDsKKyAgICBLVVJMIHVy
bCgpIGNvbnN0OwogCi0gICAgLy8gUmV0dXJucyB0aGUgbGlzdCBvZiBoZWFkZXIgZmllbGRzIGlu
Y2x1ZGluZyBmaXZlIHNwZWNpYWwgb25lcy4KLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxBdG9taWNT
dHJpbmcsIFN0cmluZz4gSGVhZGVyRmllbGQ7Ci0gICAgVmVjdG9yPEhlYWRlckZpZWxkPiBoZWFk
ZXJGaWVsZHMoKSBjb25zdDsKKyAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMo
KSBjb25zdDsKKyAgICB2b2lkIGFkZEhlYWRlckZpZWxkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogCi1wcml2YXRlOgotICAgIFN0cmluZyBob3N0KCkgY29uc3Q7Cisg
ICAgc3RydWN0IEtleTMgeworICAgICAgICB1bnNpZ25lZCBjaGFyIHZhbHVlWzhdOwogCisgICAg
ICAgIEtleTMoKTsKKyAgICAgICAgdm9pZCBzZXQoY29uc3QgdW5zaWduZWQgY2hhciBrZXkzWzhd
KTsKKyAgICB9OworICAgIEtleTMga2V5MygpIGNvbnN0OworICAgIHZvaWQgc2V0S2V5Myhjb25z
dCB1bnNpZ25lZCBjaGFyIGtleTNbOF0pOworCitwcml2YXRlOgogICAgIEtVUkwgbV91cmw7Ci0g
ICAgYm9vbCBtX3NlY3VyZTsKLSAgICBTdHJpbmcgbV9vcmlnaW47Ci0gICAgU3RyaW5nIG1fd2Vi
U29ja2V0UHJvdG9jb2w7Ci0gICAgVmVjdG9yPEhlYWRlckZpZWxkPiBtX2V4dHJhSGVhZGVyRmll
bGRzOworICAgIFN0cmluZyBtX3JlcXVlc3RNZXRob2Q7CisgICAgSFRUUEhlYWRlck1hcCBtX2hl
YWRlckZpZWxkczsKKyAgICBLZXkzIG1fa2V5MzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>
<flag name="review"
          id="42015"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="45674"
          type_id="3"
          status="-"
          setter="morrita"
    />
          </attachment>
      

    </bug>

</bugzilla>