<?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>66127</bug_id>
          
          <creation_ts>2011-08-11 23:52:41 -0700</creation_ts>
          <short_desc>Construct SerializedScriptValue from Blob</short_desc>
          <delta_ts>2011-08-29 22:20:08 -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>WONTFIX</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>65249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>ap</cc>
    
    <cc>jianli</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
    
    <cc>oliver</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450321</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-11 23:52:41 -0700</bug_when>
    <thetext>To implement WebSocket binary messaging support (bug 65249), we need to create a MessageEvent containing a Blob in its &quot;data&quot; attribute. MessageEvent takes a SerializedScriptValue, thus we need to construct a SerializedScriptValue representing the given Blob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450333</commentid>
    <comment_count>1</comment_count>
      <attachid>103747</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-12 00:23:35 -0700</bug_when>
    <thetext>Created attachment 103747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450501</commentid>
    <comment_count>2</comment_count>
      <attachid>103747</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-12 10:48:27 -0700</bug_when>
    <thetext>Comment on attachment 103747
Patch

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

SerializedScriptValue is used to support structured clones, so this change brings up a lot of questions at a high level:
1. Why is this change being done without adding blob to the general algorithm for structured clones?
2. Has the change to structured clones been talked about with the appropriate mailing lists (and what was the response)?
3. How does this fit with serializing to database and then pulling it back out in a later session?  (For cross process, I get that the url should be global to the browser.)

It would be useful to know if this has gone through a some public mailing list discussion.

Thanks!

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:278
&gt; +    static bool serialize(PassRefPtr&lt;Blob&gt; blob, Vector&lt;uint8_t&gt;&amp; out)

Why does this take a PassRefPtr when it doesn&apos;t take ownership? (It doesn&apos;t put the passed in ref counted object into something like a RefPtr.)

It looks like it should take a Blob*.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1387
&gt; +PassRefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::create(PassRefPtr&lt;Blob&gt; blob)

Ditto re PassRefPtr.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1883
&gt; +PassRefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::create(PassRefPtr&lt;Blob&gt; data)

Ditto re PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450990</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-15 00:02:57 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 103747 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103747&amp;action=review
&gt; 
&gt; SerializedScriptValue is used to support structured clones, so this change brings up a lot of questions at a high level:
&gt; 1. Why is this change being done without adding blob to the general algorithm for structured clones?

Cloning Blob was implemented in both JSC and V8 almost one year ago:
- http://trac.webkit.org/changeset/57382 (Added Blob serialization in v8/SerializedScriptValue.cpp)
- http://trac.webkit.org/changeset/65102 (Added SerializedBlob in js/SerializedScriptValue.cpp)

My patch does NOT change or add any cloning algorithms; it just adds an internal interface to create a SerializedScriptObject representing a Blob (there is already a similar constructor for String), which will be necessary to construct a MessageEvent containing a Blob.

&gt; 2. Has the change to structured clones been talked about with the appropriate mailing lists (and what was the response)?

Blob is already included in structured clone algorithm:
http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#safe-passing-of-structured-data

If I understand correctly, copying a Blob is cheap; you only need to copy two small strings (url and type) and one integer (size). Backing binary data is owned and managed by the browser.

&gt; 3. How does this fit with serializing to database and then pulling it back out in a later session?  (For cross process, I get that the url should be global to the browser.)

I&apos;m not sure -- folks from File API (cc&apos;ed) may have insights on this.

&gt; 
&gt; It would be useful to know if this has gone through a some public mailing list discussion.
&gt; 
&gt; Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450997</commentid>
    <comment_count>4</comment_count>
      <attachid>103892</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-15 01:45:17 -0700</bug_when>
    <thetext>Created attachment 103892
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450998</commentid>
    <comment_count>5</comment_count>
      <attachid>103747</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-15 01:49:04 -0700</bug_when>
    <thetext>Comment on attachment 103747
Patch

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

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:278
&gt;&gt; +    static bool serialize(PassRefPtr&lt;Blob&gt; blob, Vector&lt;uint8_t&gt;&amp; out)
&gt; 
&gt; Why does this take a PassRefPtr when it doesn&apos;t take ownership? (It doesn&apos;t put the passed in ref counted object into something like a RefPtr.)
&gt; 
&gt; It looks like it should take a Blob*.

Because serializing a null blob did not sound meaningful, &quot;const Blob&amp;&quot; is used (instead of &quot;Blob*&quot;) in patch v2.

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1387
&gt;&gt; +PassRefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::create(PassRefPtr&lt;Blob&gt; blob)
&gt; 
&gt; Ditto re PassRefPtr.

Fixed in patch v2 (see above).

&gt;&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1883
&gt;&gt; +PassRefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::create(PassRefPtr&lt;Blob&gt; data)
&gt; 
&gt; Ditto re PassRefPtr.

Fixed in patch v2 (see above).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451184</commentid>
    <comment_count>6</comment_count>
      <attachid>103892</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-15 11:48:08 -0700</bug_when>
    <thetext>Comment on attachment 103892
Patch v2

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

Thanks!

Just a few last comments.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:279
&gt; +    static bool serialize(const Blob&amp; blob, Vector&lt;uint8_t&gt;&amp; out)

Thanks for all of the information.

This is why I thought blob was being added.

Is there anyway to collapse this with the current serialization for blob rather than have two places where it is serialized and need to be maintained to do the same thing?  (Because this seems like a place where things will easily go wrong in the future.)

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.h:36
&gt; +#include &lt;wtf/Forward.h&gt;

Why is this being added?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451604</commentid>
    <comment_count>7</comment_count>
      <attachid>103892</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-16 07:30:06 -0700</bug_when>
    <thetext>Comment on attachment 103892
Patch v2

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

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:279
&gt;&gt; +    static bool serialize(const Blob&amp; blob, Vector&lt;uint8_t&gt;&amp; out)
&gt; 
&gt; Thanks for all of the information.
&gt; 
&gt; This is why I thought blob was being added.
&gt; 
&gt; Is there anyway to collapse this with the current serialization for blob rather than have two places where it is serialized and need to be maintained to do the same thing?  (Because this seems like a place where things will easily go wrong in the future.)

You are right -- but it&apos;s hard to do it within the current design as long as CloneSerializer requires ExecState*.

We probably should write something similar to &quot;Writer&quot; class which exists in v8/SerializedScriptObject.cpp. However, it requires a moderate amount of refactoring effort and does not seem to be a thing to be done in this change.

I&apos;ll put a FIXME comment to this function.

&gt;&gt; Source/WebCore/bindings/v8/SerializedScriptValue.h:36
&gt;&gt; +#include &lt;wtf/Forward.h&gt;
&gt; 
&gt; Why is this being added?

This was originally added for PassRefPtr&lt;&gt; (which has actually gone in patch v2), but I thought this was necessary because of String. It is not directly related to this patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451639</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-16 08:43:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 103892 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103892&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:279
&gt; &gt;&gt; +    static bool serialize(const Blob&amp; blob, Vector&lt;uint8_t&gt;&amp; out)
&gt; &gt; 
&gt; &gt; Thanks for all of the information.
&gt; &gt; 
&gt; &gt; This is why I thought blob was being added.
&gt; &gt; 
&gt; &gt; Is there anyway to collapse this with the current serialization for blob rather than have two places where it is serialized and need to be maintained to do the same thing?  (Because this seems like a place where things will easily go wrong in the future.)
&gt; 
&gt; You are right -- but it&apos;s hard to do it within the current design as long as CloneSerializer requires ExecState*.
&gt; 
&gt; We probably should write something similar to &quot;Writer&quot; class which exists in v8/SerializedScriptObject.cpp. However, it requires a moderate amount of refactoring effort and does not seem to be a thing to be done in this change.

Feel free to do it before this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451662</commentid>
    <comment_count>9</comment_count>
      <attachid>103892</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-16 09:24:09 -0700</bug_when>
    <thetext>Comment on attachment 103892
Patch v2

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

&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:279
&gt;&gt;&gt;&gt; +    static bool serialize(const Blob&amp; blob, Vector&lt;uint8_t&gt;&amp; out)
&gt;&gt;&gt; 
&gt;&gt;&gt; Thanks for all of the information.
&gt;&gt;&gt; 
&gt;&gt;&gt; This is why I thought blob was being added.
&gt;&gt;&gt; 
&gt;&gt;&gt; Is there anyway to collapse this with the current serialization for blob rather than have two places where it is serialized and need to be maintained to do the same thing?  (Because this seems like a place where things will easily go wrong in the future.)
&gt;&gt; 
&gt;&gt; You are right -- but it&apos;s hard to do it within the current design as long as CloneSerializer requires ExecState*.
&gt;&gt; 
&gt;&gt; We probably should write something similar to &quot;Writer&quot; class which exists in v8/SerializedScriptObject.cpp. However, it requires a moderate amount of refactoring effort and does not seem to be a thing to be done in this change.
&gt;&gt; 
&gt;&gt; I&apos;ll put a FIXME comment to this function.
&gt; 
&gt; Feel free to do it before this change.

I&apos;m happy to do this, but I think it&apos;s better to wait for a patch in bug 65209 to land because the change is likely to conflict severely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451665</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-16 09:28:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt;&gt; We probably should write something similar to &quot;Writer&quot; class which exists in v8/SerializedScriptObject.cpp. However, it requires a moderate amount of refactoring effort and does not seem to be a thing to be done in this change.
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;ll put a FIXME comment to this function.
&gt; &gt; 
&gt; &gt; Feel free to do it before this change.
&gt; 
&gt; I&apos;m happy to do this, but I think it&apos;s better to wait for a patch in bug 65209 to land because the change is likely to conflict severely.

We&apos;re trying hard to get that landed. Should have an update on that today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451680</commentid>
    <comment_count>11</comment_count>
      <attachid>104058</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-16 09:48:02 -0700</bug_when>
    <thetext>Created attachment 104058
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451682</commentid>
    <comment_count>12</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-16 09:48:34 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=104058) [details]
&gt; Patch v3

Added FIXME comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451759</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-16 11:21:37 -0700</bug_when>
    <thetext>I don&apos;t think this should be landed in its current form as I tried to suggest in https://bugs.webkit.org/show_bug.cgi?id=66127#c8

If that needs to wait for https://bugs.webkit.org/show_bug.cgi?id=65209, then it should wait a little bit. That patch should land this week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452067</commentid>
    <comment_count>14</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-16 18:58:14 -0700</bug_when>
    <thetext>Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452575</commentid>
    <comment_count>15</comment_count>
      <attachid>104058</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-17 14:24:44 -0700</bug_when>
    <thetext>Comment on attachment 104058
Patch v3

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:270
&gt; +        // FIXME: It&apos;s better to share the serialization code like Writer class in v8/SerializedScriptValue.cpp.

I have no idea what this comment is saying.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:280
&gt; +    static bool serialize(const Blob&amp; blob, Vector&lt;uint8_t&gt;&amp; out)

Why do we need a specific entry point for Blob?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:282
&gt; +        // FIXME: Ditto.

Not a useful comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458701</commentid>
    <comment_count>16</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-29 22:20:08 -0700</bug_when>
    <thetext>This change has become unnecessary, because I was able to change MessageEvent so it could hold a variant value (see bug 66841).

Abondoning this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103747</attachid>
            <date>2011-08-12 00:23:35 -0700</date>
            <delta_ts>2011-08-15 01:49:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66127-20110812162334.patch</filename>
            <type>text/plain</type>
            <size>6750</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4NzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMmJiZjI5OTNjMDZjNjRh
MWQ2ODYwZDVmNjI1ZjdhY2M2YzUxODYzLi4wZjVlNDNiMmU4NjA3MDk4YTQyNGFmNjM3Mzc3OWU5
ZGQwMzM2ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDgtMTEgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29uc3RydWN0IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIEJsb2IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IG92ZXJsb2FkZWQgZnVuY3Rpb24gb2YgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSB3aGljaCB0YWtlcyBhIEJsb2IKKyAgICAgICAgYXMg
aXRzIGFyZ3VtZW50LiBUaGlzIHdpbGwgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBNZXNzYWdlRXZl
bnQgY29udGFpbmluZyBhIEJsb2IgYXMKKyAgICAgICAgaXRzICJkYXRhIiBhdHRyaWJ1dGUuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoZSBuZXcgZnVuY3Rpb24gaXMgbm90IHVz
ZWQgeWV0IGFuZCB0aGVyZSBpcyBubyB2aXNpYmxlIGNoYW5nZQorICAgICAgICBpbiBmdW5jdGlv
bmFsaXR5LiBOZXcgdGVzdHMgd2lsbCBiZSBhZGRlZCB3aGVuIFdlYlNvY2tldCBiaW5hcnkgbWVz
c2FnaW5nIGlzCisgICAgICAgIGltcGxlbWVudGVkLCBhbmQgdGhleSB3aWxsIGNvdmVyIHRoaXMg
Y29kZSBjaGFuZ2UuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjp3cml0ZVN0cmluZ0Rh
dGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXpl
KToKKyAgICAgICAgU2VyaWFsaXphdGlvbiBmb3JtYXQgaXMgIkJsb2JUYWcgPHVybDpTdHJpbmdE
YXRhPjx0eXBlOlN0cmluZ0RhdGE+PHNpemU6bG9uZyBsb25nPiIuCisgICAgICAgIChXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aDoKKwogMjAxMS0wOC0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MDc1CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCA4YmFmOTE5NGZmZWQwM2E5N2RlMTYyOWEzMDQ2ZTA1YjBhZTEwMzJmLi5hNjVlZGRmMjhh
YzIwMWZmOWIzZTM2ZThkNTIwYWJmNjZhZTkyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI1Niw2ICsyNTYs
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUp
OwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIHdyaXRlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcm
IHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQorICAgIHsKKyAgICAgICAgd3JpdGVMaXR0bGVFbmRp
YW4ob3V0LCBzLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIHMu
aW1wbCgpLT5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpOworICAgIH0KKwogICAgIHN0YXRpYyBi
b29sIHNlcmlhbGl6ZShjb25zdCBTdHJpbmcmIHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAg
IHsKICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBDdXJyZW50VmVyc2lvbik7CkBAIC0y
NjQsOCArMjcyLDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG91dCwgU3RyaW5nVGFnKTsK
LSAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBzLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0
dXJuIHdyaXRlTGl0dGxlRW5kaWFuKG91dCwgcy5pbXBsKCktPmNoYXJhY3RlcnMoKSwgcy5sZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiB3cml0ZVN0cmluZ0RhdGEocywgb3V0KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemUoUGFzc1JlZlB0cjxCbG9iPiBibG9iLCBWZWN0b3I8
dWludDhfdD4mIG91dCkKKyAgICB7CisgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG91dCwgQ3Vy
cmVudFZlcnNpb24pOworICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihvdXQsIEJs
b2JUYWcpOworICAgICAgICBpZiAoIXdyaXRlU3RyaW5nRGF0YShibG9iLT51cmwoKS5zdHJpbmco
KSwgb3V0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCF3cml0ZVN0
cmluZ0RhdGEoYmxvYi0+dHlwZSgpLCBvdXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIGJsb2ItPnNpemUoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzNjUsNiArMTM4NCwxNCBAQCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBzdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKGJ1ZmZlcikpOwogfQogCitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoUGFzc1JlZlB0cjxCbG9iPiBibG9iKQor
eworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgaWYgKCFDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShibG9iLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKK30KKwogUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KEpTQ29udGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhvcmlnaW5Db250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKaW5kZXggM2ZlNGUwMmI3NmUxNzJlOWZmY2Q0NjZkNjE0MTM0MmY0NWI3YTc5ZS4u
YmM1NTY5OTE1NzgyYjZjYzJmNWViZjFjODgyYzE2ZWFlY2Y5YzA0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM4LDcg
KzM4LDggQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gCitjbGFzcyBCbG9iOworCiBlbnVtIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCiAgICAgU3RhY2tP
dmVyZmxvd0Vycm9yLApAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQ
dHI8QmxvYj4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
YWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJk
OWQwY2QzOGM4YzdmZDYyMGQzMmU0ZDI5ODk3YTdjODY2ODU5NjIuLjI3ZDNlYTBhMzJjNTUzNDRk
NTU0OTJlZTRlMWNkNTY4OWU0MzExYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTg4MCw2ICsxODgwLDE0IEBA
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxp
emVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKIH0KIAorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QmxvYj4g
ZGF0YSkKK3sKKyAgICBXcml0ZXIgd3JpdGVyOworICAgIHdyaXRlci53cml0ZUJsb2IoZGF0YS0+
dXJsKCksIGRhdGEtPnR5cGUoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBTdHJpbmcgd2lyZURhdGEg
PSBTdHJpbmdJbXBsOjphZG9wdCh3cml0ZXIuZGF0YSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh3aXJlRGF0YSkpOworfQorCiBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRl
eCA0ZDI0OTJkN2FlMDlhN2U1NjY2YzZkMGIxMmRhZGZkZTNhMmY1MDljLi4xOTcyYzMxYWIxNDdj
MDA2YTViMjFmN2U4ZTIxZDdjNjM3MTQxNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzMsMTAgKzMzLDEzIEBACiAK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQmxvYjsKKwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGRlc2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLApAQCAtNTMsNiArNTYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21XaXJlKGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBkYXRhKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGNyZWF0ZShQYXNzUmVmUHRyPEJsb2I+IGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKCk7CiAKICAgICBzdGF0aWMgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiBudWxsVmFsdWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103892</attachid>
            <date>2011-08-15 01:45:17 -0700</date>
            <delta_ts>2011-08-16 09:47:56 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-66127-20110815174515.patch</filename>
            <type>text/plain</type>
            <size>6932</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwMjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWZkYmEyNGM4ODVjNWRl
YmMwYTE4NDg0MWNjOGNiOTIyYTdjZTJmLi44OGRhOWI1MTI0MGVmYjY5MGU5ZmRlYWUxNjAxOGE5
OWEyMDA1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMTUgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29uc3RydWN0IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIEJsb2IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IG92ZXJsb2FkZWQgZnVuY3Rpb24gb2YgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSB3aGljaCB0YWtlcyBhIEJsb2IKKyAgICAgICAgYXMg
aXRzIGFyZ3VtZW50LiBUaGlzIHdpbGwgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBNZXNzYWdlRXZl
bnQgY29udGFpbmluZyBhIEJsb2IgYXMKKyAgICAgICAgaXRzICJkYXRhIiBhdHRyaWJ1dGUuCisK
KyAgICAgICAgQmxvYiBzZXJpYWxpemF0aW9uIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gYm90
aCBKU0MgYW5kIFY4LiBUaGlzIGNoYW5nZSBvbmx5IGFkZHMKKyAgICAgICAgYW4gaW50ZXJuYWwg
aW50ZXJmYWNlIHRvIGNyZWF0ZSBhIFNlcmlhbGl6ZWRTY3JpcHRPYmplY3QgcmVwcmVzZW50aW5n
IGEgQmxvYi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhlIG5ldyBmdW5jdGlv
biBpcyBub3QgdXNlZCB5ZXQgYW5kIHRoZXJlIGlzIG5vIHZpc2libGUgY2hhbmdlCisgICAgICAg
IGluIGZ1bmN0aW9uYWxpdHkuIE5ldyB0ZXN0cyB3aWxsIGJlIGFkZGVkIHdoZW4gV2ViU29ja2V0
IGJpbmFyeSBtZXNzYWdpbmcgaXMKKyAgICAgICAgaW1wbGVtZW50ZWQsIGFuZCB0aGV5IHdpbGwg
Y292ZXIgdGhpcyBjb2RlIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6Ondy
aXRlU3RyaW5nRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
OjpzZXJpYWxpemUpOgorICAgICAgICBTZXJpYWxpemF0aW9uIGZvcm1hdCBpcyAiQmxvYlRhZyA8
dXJsOlN0cmluZ0RhdGE+PHR5cGU6U3RyaW5nRGF0YT48c2l6ZTpsb25nIGxvbmc+Ii4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorCiAyMDExLTA4LTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgLVtXZWJVbmRlZmluZWQg
ZGVhbGxvY10gdG8gYXBwZWFzZSB0aGUgYm90IGdvZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBmNmMyYTI4MmY4
ZDZjNWMwOTg1ZTVjMTU4NmQyNmVkZTBiMzZjZGE3Li5kMzE3MmUwNjkzZDIzNmE5ZDg1M2Y3YWQx
OWNhOWVjZjQxMjJiODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI1Nyw2ICsyNTcsMTQgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwogICAgIH0KIAorICAg
IHN0YXRpYyBib29sIHdyaXRlU3RyaW5nRGF0YShjb25zdCBTdHJpbmcmIHMsIFZlY3Rvcjx1aW50
OF90PiYgb3V0KQorICAgIHsKKyAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBzLmxlbmd0
aCgpKTsKKyAgICAgICAgaWYgKHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHJldHVybiB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIHMuaW1wbCgpLT5jaGFyYWN0
ZXJzKCksIHMubGVuZ3RoKCkpOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNlcmlhbGl6ZShj
b25zdCBTdHJpbmcmIHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgIHsKICAgICAgICAgd3Jp
dGVMaXR0bGVFbmRpYW4ob3V0LCBDdXJyZW50VmVyc2lvbik7CkBAIC0yNjUsOCArMjczLDE5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHdy
aXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG91dCwgU3RyaW5nVGFnKTsKLSAgICAgICAgd3JpdGVM
aXR0bGVFbmRpYW4ob3V0LCBzLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIHdyaXRlTGl0dGxl
RW5kaWFuKG91dCwgcy5pbXBsKCktPmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7CisgICAgICAg
IHJldHVybiB3cml0ZVN0cmluZ0RhdGEocywgb3V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBzZXJpYWxpemUoY29uc3QgQmxvYiYgYmxvYiwgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAg
eworICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIEN1cnJlbnRWZXJzaW9uKTsKKyAgICAg
ICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4ob3V0LCBCbG9iVGFnKTsKKyAgICAgICAgaWYg
KCF3cml0ZVN0cmluZ0RhdGEoYmxvYi51cmwoKS5zdHJpbmcoKSwgb3V0KSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCF3cml0ZVN0cmluZ0RhdGEoYmxvYi50eXBlKCks
IG91dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHdyaXRlTGl0dGxlRW5k
aWFuKG91dCwgYmxvYi5zaXplKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC0xMzY2LDYgKzEzODUsMTQgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3QKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKIH0K
IAorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGNvbnN0IEJsb2ImIGJsb2IpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cjsKKyAgICBpZiAoIUNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKGJsb2IsIGJ1ZmZlcikpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKGJ1ZmZlcikpOworfQorCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQs
IEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKG9yaWdpbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCAzZmU0ZTAyYjc2ZTE3
MmU5ZmZjZDQ2NmQ2MTQxMzQyZjQ1YjdhNzllLi5mNzcyM2U2MzQ1YzUxOTI1ZDY3ZWM0ZTA5NDg1
MTRiMWM2YWQ4ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzgsNyArMzgsOCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVKU1ZhbHVlKiBKU1ZhbHVlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAK
K2NsYXNzIEJsb2I7CisKIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCwKICAgICBTdGFja092ZXJmbG93RXJyb3IsCkBAIC01Nyw2ICs1OCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9y
TW9kZSA9IFRocm93aW5nKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBjcmVhdGUoY29uc3QgQmxvYiYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShi
dWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDJkOWQwY2QzOGM4YzdmZDYyMGQzMmU0ZDI5ODk3YTdjODY2
ODU5NjIuLjZmMDg5YzFmMjZmMmE0YzExODA1NmViMTBlMTI1MmU5MmI3NThiZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtMTg4MCw2ICsxODgwLDE0IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKIH0KIAor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGNvbnN0IEJsb2ImIGRhdGEpCit7CisgICAgV3JpdGVyIHdyaXRlcjsKKyAgICB3cml0
ZXIud3JpdGVCbG9iKGRhdGEudXJsKCksIGRhdGEudHlwZSgpLCBkYXRhLnNpemUoKSk7CisgICAg
U3RyaW5nIHdpcmVEYXRhID0gU3RyaW5nSW1wbDo6YWRvcHQod3JpdGVyLmRhdGEoKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKK30K
KwogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKaW5kZXggNGQyNDkyZDdhZTA5YTdlNTY2NmM2ZDBiMTJkYWRmZGUzYTJmNTA5
Yy4uY2VmYzJjYzk2ZWE5ODI4MzI5ZTQxM2M0N2JiNzM3ZTRhZWNmY2VjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTMz
LDEwICszMywxMyBAQAogCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx2OC5o
PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJsb2I7CisKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZXNlcmlhbGl6ZUFuZFNldFByb3Bl
cnR5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKQEAg
LTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tV2lyZShjb25zdCBTdHJp
bmcmIGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoY29uc3QgQmxvYiYgZGF0YSk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoKTsKIAogICAgIHN0YXRpYyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIG51bGxWYWx1ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104058</attachid>
            <date>2011-08-16 09:48:02 -0700</date>
            <delta_ts>2011-08-17 14:24:44 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-66127-20110817014800.patch</filename>
            <type>text/plain</type>
            <size>7125</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MGU4ZmM1MzEzOThiMmNk
YjZjMDk4YmY5NjBhYTczNzlhODhiYmVhLi4xM2YwNDk4YjQ0NGY2Y2UzYWY5Nzk1MjU1NzJlZmYy
Y2FkZGJiZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMTYgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29uc3RydWN0IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIEJsb2IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IG92ZXJsb2FkZWQgZnVuY3Rpb24gb2YgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSB3aGljaCB0YWtlcyBhIEJsb2IKKyAgICAgICAgYXMg
aXRzIGFyZ3VtZW50LiBUaGlzIHdpbGwgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBNZXNzYWdlRXZl
bnQgY29udGFpbmluZyBhIEJsb2IgYXMKKyAgICAgICAgaXRzICJkYXRhIiBhdHRyaWJ1dGUuCisK
KyAgICAgICAgQmxvYiBzZXJpYWxpemF0aW9uIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gYm90
aCBKU0MgYW5kIFY4LiBUaGlzIGNoYW5nZSBvbmx5IGFkZHMKKyAgICAgICAgYW4gaW50ZXJuYWwg
aW50ZXJmYWNlIHRvIGNyZWF0ZSBhIFNlcmlhbGl6ZWRTY3JpcHRPYmplY3QgcmVwcmVzZW50aW5n
IGEgQmxvYi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhlIG5ldyBmdW5jdGlv
biBpcyBub3QgdXNlZCB5ZXQgYW5kIHRoZXJlIGlzIG5vIHZpc2libGUgY2hhbmdlCisgICAgICAg
IGluIGZ1bmN0aW9uYWxpdHkuIE5ldyB0ZXN0cyB3aWxsIGJlIGFkZGVkIHdoZW4gV2ViU29ja2V0
IGJpbmFyeSBtZXNzYWdpbmcgaXMKKyAgICAgICAgaW1wbGVtZW50ZWQsIGFuZCB0aGV5IHdpbGwg
Y292ZXIgdGhpcyBjb2RlIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6Ondy
aXRlU3RyaW5nRGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVy
OjpzZXJpYWxpemUpOgorICAgICAgICBTZXJpYWxpemF0aW9uIGZvcm1hdCBpcyAiQmxvYlRhZyA8
dXJsOlN0cmluZ0RhdGE+PHR5cGU6U3RyaW5nRGF0YT48c2l6ZTpsb25nIGxvbmc+Ii4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorCiAyMDExLTA4LTE1ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5j
b20+CiAKICAgICAgICAgTmV3IFhNTCBwYXJzZXI6IGFkZCB4bWwgbmFtZXNwYWNlIHRvIHRoZSBk
ZWZhdWx0IG1hcCBvZiBuYW1lc3BhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBmNmMyYTI4MmY4ZDZjNWMwOTg1
ZTVjMTU4NmQyNmVkZTBiMzZjZGE3Li4wMGI1ZDI4ZDkxNDYwMDljYjE1MTdkNzlkZGQ1YjU5YmVk
ZWNkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI1NywxNiArMjU3LDM3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICB9CiAKKyAgICBzdGF0aWMg
Ym9vbCB3cml0ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJiBzLCBWZWN0b3I8dWludDhfdD4mIG91
dCkKKyAgICB7CisgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG91dCwgcy5sZW5ndGgoKSk7Cisg
ICAgICAgIGlmIChzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICByZXR1cm4gd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBzLmltcGwoKS0+Y2hhcmFjdGVycygpLCBz
Lmxlbmd0aCgpKTsKKyAgICB9CisKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemUoY29uc3QgU3Ry
aW5nJiBzLCBWZWN0b3I8dWludDhfdD4mIG91dCkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBJ
dCdzIGJldHRlciB0byBzaGFyZSB0aGUgc2VyaWFsaXphdGlvbiBjb2RlIGxpa2UgV3JpdGVyIGNs
YXNzIGluIHY4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAuCiAgICAgICAgIHdyaXRlTGl0dGxl
RW5kaWFuKG91dCwgQ3VycmVudFZlcnNpb24pOwogICAgICAgICBpZiAocy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG91dCwgRW1wdHlTdHJpbmdU
YWcpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgd3JpdGVM
aXR0bGVFbmRpYW48dWludDhfdD4ob3V0LCBTdHJpbmdUYWcpOwotICAgICAgICB3cml0ZUxpdHRs
ZUVuZGlhbihvdXQsIHMubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gd3JpdGVMaXR0bGVFbmRp
YW4ob3V0LCBzLmltcGwoKS0+Y2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0
dXJuIHdyaXRlU3RyaW5nRGF0YShzLCBvdXQpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIHNl
cmlhbGl6ZShjb25zdCBCbG9iJiBibG9iLCBWZWN0b3I8dWludDhfdD4mIG91dCkKKyAgICB7Cisg
ICAgICAgIC8vIEZJWE1FOiBEaXR0by4KKyAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4ob3V0LCBD
dXJyZW50VmVyc2lvbik7CisgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KG91dCwg
QmxvYlRhZyk7CisgICAgICAgIGlmICghd3JpdGVTdHJpbmdEYXRhKGJsb2IudXJsKCkuc3RyaW5n
KCksIG91dCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghd3JpdGVT
dHJpbmdEYXRhKGJsb2IudHlwZSgpLCBvdXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIGJsb2Iuc2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTM2Niw2ICsxMzg3LDE0IEBAIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoYnVmZmVyKSk7CiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb25zdCBCbG9iJiBibG9iKQoreworICAg
IFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CisgICAgaWYgKCFDbG9uZVNlcmlhbGl6ZXI6OnNlcmlh
bGl6ZShibG9iLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKK30KKwogUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29u
dGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhvcmlnaW5Db250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKaW5kZXggM2ZlNGUwMmI3NmUxNzJlOWZmY2Q0NjZkNjE0MTM0MmY0NWI3YTc5ZS4uZjc3MjNl
NjM0NWM1MTkyNWQ2N2VjNGUwOTQ4NTE0YjFjNmFkOGYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM4LDcgKzM4LDgg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gCitjbGFzcyBCbG9iOworCiBlbnVtIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21wbGV0ZWQsCiAgICAgU3RhY2tPdmVyZmxv
d0Vycm9yLApAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IEJsb2ImKTsK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rv
cjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyZDlkMGNkMzhjOGM3
ZmQ2MjBkMzJlNGQyOTg5N2E3Yzg2Njg1OTYyLi42ZjA4OWMxZjI2ZjJhNGMxMTgwNTZlYjEwZTEy
NTJlOTJiNzU4YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE4ODAsNiArMTg4MCwxNCBAQCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBkYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKHdpcmVEYXRhKSk7CiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb25zdCBCbG9iJiBkYXRhKQoreworICAgIFdy
aXRlciB3cml0ZXI7CisgICAgd3JpdGVyLndyaXRlQmxvYihkYXRhLnVybCgpLCBkYXRhLnR5cGUo
KSwgZGF0YS5zaXplKCkpOworICAgIFN0cmluZyB3aXJlRGF0YSA9IFN0cmluZ0ltcGw6OmFkb3B0
KHdyaXRlci5kYXRhKCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKHdpcmVEYXRhKSk7Cit9CisKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDRkMjQ5MmQ3YWUwOWE3ZTU2
NjZjNmQwYjEyZGFkZmRlM2EyZjUwOWMuLmNlZmMyY2M5NmVhOTgyODMyOWU0MTNjNDdiYjczN2U0
YWVjZmNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMywxMCArMzMsMTMgQEAKIAogI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCbG9i
OworCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsCkBAIC01Myw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlRnJvbVdpcmUoY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IEJsb2Im
IGRhdGEpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlKCk7CiAKICAgICBzdGF0aWMgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBudWxsVmFsdWUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>