<?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>117458</bug_id>
          
          <creation_ts>2013-06-10 18:01:35 -0700</creation_ts>
          <short_desc>XMLHttpRequest performs too many copies for ArrayBuffer results</short_desc>
          <delta_ts>2014-02-06 04:06:38 -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>Page Loading</component>
          <version>528+ (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>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128289</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>sam</cc>
    
    <cc>w.bielawski</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>898935</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-06-10 18:01:35 -0700</bug_when>
    <thetext>Consider merging https://chromium.googlesource.com/chromium/blink/+/bed266aa5a43f7c080c87e527bd35e2b80ecc7b7

This cuts
- two memsets (in ArrayBuffer::create and SharedBuffer::m_buffer::resize)
- one copy (SharedBuffer::m_buffer to ArrayBufferContents::m_data)
- one allocation (SharedBuffer::m_buffer)

Copy for consolidation still happens from m_segments to m_data instead of from
m_segments to m_buffer.

Quick localhost benchmark showed ~10% speedup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899062</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-06-10 23:48:22 -0700</bug_when>
    <thetext>Sounds like a good idea, but the patch cannot be landed as is, at least because of incorrect naming (getAsArrayBuffer is not a proper name for a getter).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972403</commentid>
    <comment_count>2</comment_count>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-01-27 05:46:07 -0800</bug_when>
    <thetext>Does anyone working on it? If not I will.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975793</commentid>
    <comment_count>3</comment_count>
      <attachid>222975</attachid>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-02-03 03:35:40 -0800</bug_when>
    <thetext>Created attachment 222975
Blink&apos;s implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975794</commentid>
    <comment_count>4</comment_count>
      <attachid>222975</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-02-03 03:49:56 -0800</bug_when>
    <thetext>Comment on attachment 222975
Blink&apos;s implementation 

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

A couple of nits

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +

Although it&apos;s nice to refer to the source of the change, the ChangeLog should include a description of the patch at least including the savings we get.

&gt; Source/WebCore/platform/SharedBuffer.cpp:295
&gt; +    return arrayBuffer;

I think it&apos;s a good idea to use arrayBuffer.release() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975844</commentid>
    <comment_count>5</comment_count>
      <attachid>222978</attachid>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-02-03 05:54:19 -0800</bug_when>
    <thetext>Created attachment 222978
Blink&apos;s implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975895</commentid>
    <comment_count>6</comment_count>
      <attachid>222978</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-03 09:47:40 -0800</bug_when>
    <thetext>Comment on attachment 222978
Blink&apos;s implementation

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

&gt; Source/JavaScriptCore/runtime/ArrayBuffer.h:99
&gt; +    // Only for use by Uint8ClampedArray::createUninitialized and SharedBuffer::getAsArrayBuffer.

getAsArrayBuffer is mentioned in this comment, and in two ChangeLogs, but this function no longer exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975896</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-03 09:48:58 -0800</bug_when>
    <thetext>How did you decide that it&apos;s fine to override what&apos;s been requested in this comment?

-    // Only for use by Uint8ClampedArray::createUninitialized.
+    // Only for use by Uint8ClampedArray::createUninitialized and SharedBuffer::getAsArrayBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975902</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-03 09:55:13 -0800</bug_when>
    <thetext>I understand that you need some way to merge the data into a buffer, but I don&apos;t know the rationale for this comment. Seems like whoever added it wanted us to not add more exceptions even in cases where we thought that we needed them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975905</commentid>
    <comment_count>9</comment_count>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-02-03 09:57:17 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; How did you decide that it&apos;s fine to override what&apos;s been requested in this comment?
&gt; 
&gt; -    // Only for use by Uint8ClampedArray::createUninitialized.
&gt; +    // Only for use by Uint8ClampedArray::createUninitialized and SharedBuffer::getAsArrayBuffer.

It was in original commit. Shall I remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976252</commentid>
    <comment_count>10</comment_count>
      <attachid>223087</attachid>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-02-04 02:14:36 -0800</bug_when>
    <thetext>Created attachment 223087
Blink&apos;s implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976256</commentid>
    <comment_count>11</comment_count>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-02-04 02:21:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I understand that you need some way to merge the data into a buffer, but I don&apos;t know the rationale for this comment. Seems like whoever added it wanted us to not add more exceptions even in cases where we thought that we needed them.

I assume that the author of original commit didn&apos;t find any inconsistency in creaateUninitialized code reusage. This comment also seems like justification does it neccessary at all. I could remove that comment at all since creaateUninitialized is public anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976326</commentid>
    <comment_count>12</comment_count>
      <attachid>223087</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-04 07:01:47 -0800</bug_when>
    <thetext>Comment on attachment 223087
Blink&apos;s implementation

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

LGTM.  Did you mean to mark this as r?

&gt; Source/JavaScriptCore/runtime/ArrayBuffer.h:99
&gt; -    // Only for use by Uint8ClampedArray::createUninitialized.
&gt; +    // Only for use by Uint8ClampedArray::createUninitialized and SharedBuffer::createArrayBuffer.

I agree with this change.  The reason why createUninitialized() is public is because it was impractical to use friends because of the template madness going on in Uint8ClamperArray.  This comment is a kind of unenforced &quot;friend&quot; replacement.

&gt; Source/WebCore/platform/SharedBuffer.cpp:289
&gt; +        ASSERT_NOT_REACHED();

I prefer RELEASE_ASSERT_NOT_REACHED().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976422</commentid>
    <comment_count>13</comment_count>
      <attachid>223087</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-04 10:13:27 -0800</bug_when>
    <thetext>Comment on attachment 223087
Blink&apos;s implementation

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

Nice!

&gt; Source/WebCore/platform/SharedBuffer.cpp:279
&gt; +    RefPtr&lt;ArrayBuffer&gt; arrayBuffer = ArrayBuffer::createUninitialized(static_cast&lt;unsigned&gt;(size()), 1);

Nit: sizeof(char) would make this code slightly easier to read - with &quot;1&quot;, most people will need to open another file to check what createUninitialized() arguments are.

&gt;&gt; Source/WebCore/platform/SharedBuffer.cpp:289
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; I prefer RELEASE_ASSERT_NOT_REACHED().

We don&apos;t have a lot of these in WebCore, and I actually don&apos;t think that we should. Unlike in JSC, many logic errors don&apos;t cause huge unintended consequences such as security bugs, and it&apos;s better to have a web site with some functionality broken than a WebProcess crash.

In this particular case, the failure is pretty benign - we essentially fail the load, which could happen for other reasons, like a network failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976691</commentid>
    <comment_count>14</comment_count>
      <attachid>223223</attachid>
    <who name="Wojciech Bielawski">w.bielawski</who>
    <bug_when>2014-02-05 02:08:23 -0800</bug_when>
    <thetext>Created attachment 223223
Blink&apos;s implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976713</commentid>
    <comment_count>15</comment_count>
      <attachid>223223</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-05 04:53:54 -0800</bug_when>
    <thetext>Comment on attachment 223223
Blink&apos;s implementation

Clearing flags on attachment: 223223

Committed r163444: &lt;http://trac.webkit.org/changeset/163444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976714</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-05 04:53:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222975</attachid>
            <date>2014-02-03 03:35:40 -0800</date>
            <delta_ts>2014-02-03 05:54:19 -0800</delta_ts>
            <desc>Blink&apos;s implementation </desc>
            <filename>vectorFromBlink.patch</filename>
            <type>text/plain</type>
            <size>4985</size>
            <attacher name="Wojciech Bielawski">w.bielawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEwYTE2MTMuLjg5NjQ3NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTAxLTI3ICBXb2pjaWVjaCBCaWVs
YXdza2kgIDx3LmJpZWxhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVz
dCBwZXJmb3JtcyB0b28gbWFueSBjb3BpZXMgZm9yIEFycmF5QnVmZmVyIHJlc3VsdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzQ1OAorCisgICAg
ICAgIEJhc2VkIG9uIGJsaW5rIGNoYW5nZTogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2Nocm9taXVtL2JsaW5rLysvYmVkMjY2YWE1YTQzZjdjMDgwYzg3ZTUyN2JkMzVlMmI4MGVj
YzdiNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDE0LTAyLTAzICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdGx5IGFkZHJlc3MgRGFyaW7igJlzIHJldmll
dyBjb21tZW50IG9uIHRoZSBsYXN0IGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGYwZDdkMjcuLjVkNzBhZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUoQXJy
YXlCdWZmZXJDb250ZW50cyYpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZC4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6Z2V0QXNBcnJheUJ1ZmZlci4KICAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAg
ICBpbmxpbmUgdm9pZCogZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5OGFhZGEuLmYzZjcxYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0wMS0yNyAgV29qY2llY2ggQmllbGF3c2tp
ICA8dy5iaWVsYXdza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3QgcGVy
Zm9ybXMgdG9vIG1hbnkgY29waWVzIGZvciBBcnJheUJ1ZmZlciByZXN1bHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0NTgKKworICAgICAgICBC
YXNlZCBvbiBibGluayBjaGFuZ2U6IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
aHJvbWl1bS9ibGluay8rL2JlZDI2NmFhNWE0M2Y3YzA4MGM4N2U1MjdiZDM1ZTJiODBlY2M3YjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFdlYktpdCBkZXNuJ3QgcHJvdmlkZSB0ZXN0IG1lY2hhbmlzbSBzaW1pbGFyIHRvIGJs
aW5rJ3Mgb25lLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQXJyYXlCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBcnJheUJ1ZmZl
cik6CisKIDIwMTQtMDItMDIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZG9wdCBVUkxVdGlscyBpbnRlcmZhY2UgYW5kIHRlbXBsYXRlIGluIEhUTUxBbmNo
b3JFbGVtZW50IGFuZCBIVE1MQXJlYUVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGNjOWI0ZmYuLjM5Nzk0NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTI3NSw2ICsyNzUsMjYgQEAgY29uc3QgY2hhciog
U2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gdGhpcy0+YnVmZmVyKCkuZGF0
YSgpOwogfQogCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUoKSksIDEpOworCisgICAgY29uc3QgY2hhciogc2VnbWVudCA9IDA7CisgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBzZWdtZW50U2l6ZSA9IGdldFNv
bWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9uKSkgeworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8
Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNlZ21lbnQsIHNlZ21lbnRT
aXplKTsKKyAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudFNpemU7CisgICAgfQorCisgICAgaWYg
KHBvc2l0aW9uICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIC8vIERvbid0IHJldHVybiB0aGUgaW5jb21wbGV0ZSBB
cnJheUJ1ZmZlci4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGFycmF5
QnVmZmVyOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBjb25zdCBjaGFyKiBzZWdtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCA4YzU5NTNhLi45NTg0MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTaGFyZWRCdWZmZXJf
aAogI2RlZmluZSBTaGFyZWRCdWZmZXJfaAogCisjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC05OSw2ICsxMDAsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gdG8gYmUgbWVyZ2VkIGludG8gYSBmbGF0IGJ1ZmZlci4gVXNlIGdldFNvbWVEYXRhKCkg
d2hlbmV2ZXIgcG9zc2libGUKICAgICAvLyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIGNv
bnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFu
ZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJy
YXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1
ZmZlci4KKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGVBcnJheUJ1ZmZlcigpIGNv
bnN0OwogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCBjNGFjYmU3Li40NDYzM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTMyNSw3ICszMjUsNyBAQCBBcnJheUJ1ZmZlciogWE1MSHR0
cFJlcXVlc3Q6OnJlc3BvbnNlQXJyYXlCdWZmZXIoKQogCiAgICAgaWYgKCFtX3Jlc3BvbnNlQXJy
YXlCdWZmZXIpIHsKICAgICAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAg
ICAgICAgbV9yZXNwb25zZUFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdF9j
YXN0PGNoYXIqPihtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5zaXplKCkpKTsKKyAgICAgICAgICAg
IG1fcmVzcG9uc2VBcnJheUJ1ZmZlciA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5jcmVhdGVB
cnJheUJ1ZmZlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3Jlc3BvbnNlQXJyYXlC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgICAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci5jbGVhcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222978</attachid>
            <date>2014-02-03 05:54:19 -0800</date>
            <delta_ts>2014-02-04 02:14:36 -0800</delta_ts>
            <desc>Blink&apos;s implementation</desc>
            <filename>vectorFromBlink2.patch</filename>
            <type>text/plain</type>
            <size>5696</size>
            <attacher name="Wojciech Bielawski">w.bielawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEwYTE2MTMuLjIzNmNiNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI3ICBXb2pjaWVjaCBCaWVs
YXdza2kgIDx3LmJpZWxhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVz
dCBwZXJmb3JtcyB0b28gbWFueSBjb3BpZXMgZm9yIEFycmF5QnVmZmVyIHJlc3VsdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzQ1OAorCisgICAg
ICAgIEJhc2VkIG9uIGJsaW5rIGNoYW5nZTogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2Nocm9taXVtL2JsaW5rLysvYmVkMjY2YWE1YTQzZjdjMDgwYzg3ZTUyN2JkMzVlMmI4MGVj
YzdiNworCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXI6OmdldEFzQXJyYXlCdWZmZXIoKSBhbmQg
dXNlIGl0IHRvIGNyZWF0ZSBYTUxIdHRwUmVxdWVzdCdzIHJlc3BvbnNlIGluIEFycmF5QnVmZmVy
CisgICAgICAgIFRoaXMgY3V0cworICAgICAgICAgICAgLSB0d28gbWVtc2V0cyAoaW4gQXJyYXlC
dWZmZXI6OmNyZWF0ZSBhbmQgU2hhcmVkQnVmZmVyOjptX2J1ZmZlcjo6cmVzaXplKQorICAgICAg
ICAgICAgLSBvbmUgY29weSAoU2hhcmVkQnVmZmVyOjptX2J1ZmZlciB0byBBcnJheUJ1ZmZlckNv
bnRlbnRzOjptX2RhdGEpCisgICAgICAgICAgICAtIG9uZSBhbGxvY2F0aW9uIChTaGFyZWRCdWZm
ZXI6Om1fYnVmZmVyKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDE0LTAyLTAzICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdGx5IGFkZHJlc3MgRGFyaW7i
gJlzIHJldmlldyBjb21tZW50IG9uIHRoZSBsYXN0IGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGYwZDdkMjcuLjVkNzBhZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtOTYsNyArOTYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBj
cmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBi
eXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZC4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6Z2V0QXNBcnJheUJ1
ZmZlci4KICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSk7CiAKICAgICBpbmxpbmUgdm9pZCogZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5OGFhZGEuLjkw
OTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNC0wMS0yNyAgV29qY2llY2gg
QmllbGF3c2tpICA8dy5iaWVsYXdza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgWE1MSHR0cFJl
cXVlc3QgcGVyZm9ybXMgdG9vIG1hbnkgY29waWVzIGZvciBBcnJheUJ1ZmZlciByZXN1bHRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0NTgKKwor
ICAgICAgICBCYXNlZCBvbiBibGluayBjaGFuZ2U6IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9ibGluay8rL2JlZDI2NmFhNWE0M2Y3YzA4MGM4N2U1MjdiZDM1ZTJi
ODBlY2M3YjcKKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyOjpnZXRBc0FycmF5QnVmZmVyKCkg
YW5kIHVzZSBpdCB0byBjcmVhdGUgWE1MSHR0cFJlcXVlc3QncyByZXNwb25zZSBpbiBBcnJheUJ1
ZmZlcgorICAgICAgICBUaGlzIGN1dHMKKyAgICAgICAgICAgIC0gdHdvIG1lbXNldHMgKGluIEFy
cmF5QnVmZmVyOjpjcmVhdGUgYW5kIFNoYXJlZEJ1ZmZlcjo6bV9idWZmZXI6OnJlc2l6ZSkKKyAg
ICAgICAgICAgIC0gb25lIGNvcHkgKFNoYXJlZEJ1ZmZlcjo6bV9idWZmZXIgdG8gQXJyYXlCdWZm
ZXJDb250ZW50czo6bV9kYXRhKQorICAgICAgICAgICAgLSBvbmUgYWxsb2NhdGlvbiAoU2hhcmVk
QnVmZmVyOjptX2J1ZmZlcikKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIFdlYktpdCBkZXNuJ3QgcHJvdmlkZSB0ZXN0IG1lY2hh
bmlzbSBzaW1pbGFyIHRvIGJsaW5rJ3Mgb25lLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQXJyYXlC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
cmVzcG9uc2VBcnJheUJ1ZmZlcik6CisKIDIwMTQtMDItMDIgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBVUkxVdGlscyBpbnRlcmZhY2UgYW5kIHRl
bXBsYXRlIGluIEhUTUxBbmNob3JFbGVtZW50IGFuZCBIVE1MQXJlYUVsZW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGNjOWI0ZmYuLmVlMzY0ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMjc1LDYgKzI3NSwy
NiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiB0
aGlzLT5idWZmZXIoKS5kYXRhKCk7CiB9CiAKK1Bhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAoreworICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CisKKyAgICBjb25zdCBjaGFyKiBzZWdtZW50
ID0gMDsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKHVuc2lnbmVkIHNl
Z21lbnRTaXplID0gZ2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgIG1l
bWNweShzdGF0aWNfY2FzdDxjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSkgKyBwb3NpdGlvbiwg
c2VnbWVudCwgc2VnbWVudFNpemUpOworICAgICAgICBwb3NpdGlvbiArPSBzZWdtZW50U2l6ZTsK
KyAgICB9CisKKyAgICBpZiAocG9zaXRpb24gIT0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgLy8gRG9uJ3QgcmV0dXJu
IHRoZSBpbmNvbXBsZXRlIEFycmF5QnVmZmVyLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICByZXR1cm4gYXJyYXlCdWZmZXIucmVsZWFzZSgpOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBzZWdtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA4YzU5NTNhLi45NTg0
MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjcsNiArMjcs
NyBAQAogI2lmbmRlZiBTaGFyZWRCdWZmZXJfaAogI2RlZmluZSBTaGFyZWRCdWZmZXJfaAogCisj
aW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC05OSw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgLy8gdG8gYmUgbWVyZ2VkIGludG8gYSBmbGF0
IGJ1ZmZlci4gVXNlIGdldFNvbWVEYXRhKCkgd2hlbmV2ZXIgcG9zc2libGUKICAgICAvLyBmb3Ig
YmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICAv
LyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBj
b250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21l
bnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBjcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjNGFjYmU3Li40
NDYzM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTMyNSw3ICsz
MjUsNyBAQCBBcnJheUJ1ZmZlciogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQXJyYXlCdWZmZXIo
KQogCiAgICAgaWYgKCFtX3Jlc3BvbnNlQXJyYXlCdWZmZXIpIHsKICAgICAgICAgaWYgKG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9yZXNwb25zZUFycmF5QnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdF9jYXN0PGNoYXIqPihtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2VBcnJheUJ1ZmZlciA9IG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLT5jcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlQXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51
bGxwdHIsIDApOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5jbGVhcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223087</attachid>
            <date>2014-02-04 02:14:36 -0800</date>
            <delta_ts>2014-02-05 02:08:23 -0800</delta_ts>
            <desc>Blink&apos;s implementation</desc>
            <filename>vectorFromBlink3.patch</filename>
            <type>text/plain</type>
            <size>5694</size>
            <attacher name="Wojciech Bielawski">w.bielawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZjYmVlZWIuLjhjN2JiYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI3ICBXb2pjaWVjaCBCaWVs
YXdza2kgIDx3LmJpZWxhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVz
dCBwZXJmb3JtcyB0b28gbWFueSBjb3BpZXMgZm9yIEFycmF5QnVmZmVyIHJlc3VsdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzQ1OAorCisgICAg
ICAgIEJhc2VkIG9uIGJsaW5rIGNoYW5nZTogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2Nocm9taXVtL2JsaW5rLysvYmVkMjY2YWE1YTQzZjdjMDgwYzg3ZTUyN2JkMzVlMmI4MGVj
YzdiNworCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXI6OmNyZWF0ZUFycmF5QnVmZmVyKCkgYW5k
IHVzZSBpdCB0byBjcmVhdGUgWE1MSHR0cFJlcXVlc3QncyByZXNwb25zZSBpbiBBcnJheUJ1ZmZl
cgorICAgICAgICBUaGlzIGN1dHMKKyAgICAgICAgICAgIC0gdHdvIG1lbXNldHMgKGluIEFycmF5
QnVmZmVyOjpjcmVhdGUgYW5kIFNoYXJlZEJ1ZmZlcjo6bV9idWZmZXI6OnJlc2l6ZSkKKyAgICAg
ICAgICAgIC0gb25lIGNvcHkgKFNoYXJlZEJ1ZmZlcjo6bV9idWZmZXIgdG8gQXJyYXlCdWZmZXJD
b250ZW50czo6bV9kYXRhKQorICAgICAgICAgICAgLSBvbmUgYWxsb2NhdGlvbiAoU2hhcmVkQnVm
ZmVyOjptX2J1ZmZlcikKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuaDoKKwogMjAxNC0wMi0wMyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIExpZnQgdGhlIEZUTCB0aWVyLXVwIHRo
cmVzaG9sZCBmcm9tIDI1MDAwIHRvIDEwMDAwMApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZjBkN2QyNy4uYTdiNmYzMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC05Niw3ICs5Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShBcnJh
eUJ1ZmZlckNvbnRlbnRzJik7CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBjcmVhdGVBZG9wdGVkKGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
OwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjpjcmVhdGVBcnJheUJ1ZmZlci4KICAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKICAg
ICBpbmxpbmUgdm9pZCogZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFjNWUwOTEuLmU4YzEwODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNC0wMS0yNyAgV29qY2llY2ggQmllbGF3c2tp
ICA8dy5iaWVsYXdza2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3QgcGVy
Zm9ybXMgdG9vIG1hbnkgY29waWVzIGZvciBBcnJheUJ1ZmZlciByZXN1bHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0NTgKKworICAgICAgICBC
YXNlZCBvbiBibGluayBjaGFuZ2U6IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
aHJvbWl1bS9ibGluay8rL2JlZDI2NmFhNWE0M2Y3YzA4MGM4N2U1MjdiZDM1ZTJiODBlY2M3YjcK
KworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyOjpjcmVhdGVBcnJheUJ1ZmZlcigpIGFuZCB1c2Ug
aXQgdG8gY3JlYXRlIFhNTEh0dHBSZXF1ZXN0J3MgcmVzcG9uc2UgaW4gQXJyYXlCdWZmZXIKKyAg
ICAgICAgVGhpcyBjdXRzCisgICAgICAgICAgICAtIHR3byBtZW1zZXRzIChpbiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlIGFuZCBTaGFyZWRCdWZmZXI6Om1fYnVmZmVyOjpyZXNpemUpCisgICAgICAgICAg
ICAtIG9uZSBjb3B5IChTaGFyZWRCdWZmZXI6Om1fYnVmZmVyIHRvIEFycmF5QnVmZmVyQ29udGVu
dHM6Om1fZGF0YSkKKyAgICAgICAgICAgIC0gb25lIGFsbG9jYXRpb24gKFNoYXJlZEJ1ZmZlcjo6
bV9idWZmZXIpCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBXZWJLaXQgZGVzbid0IHByb3ZpZGUgdGVzdCBtZWNoYW5pc20gc2lt
aWxhciB0byBibGluaydzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZUFycmF5QnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
QXJyYXlCdWZmZXIpOgorCiAyMDE0LTAyLTA0ICBNaWhhaSBNYWVyZWFuICA8bW1hZXJlYW5AYWRv
YmUuY29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gRml4IEFzc2VydCBTSE9VTEQgTkVWRVIg
QkUgUkVBQ0hFRCBpbiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nRWxlbWVudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA4MDkzZmVjLi5kZjZhOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTI3NCw2ICsyNzQsMjYg
QEAgY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gdGhp
cy0+YnVmZmVyKCkuZGF0YSgpOwogfQogCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOworCisgICAgY29uc3QgY2hhciogc2VnbWVudCA9
IDA7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBzZWdt
ZW50U2l6ZSA9IGdldFNvbWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9uKSkgeworICAgICAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgcG9zaXRpb24sIHNl
Z21lbnQsIHNlZ21lbnRTaXplKTsKKyAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudFNpemU7Cisg
ICAgfQorCisgICAgaWYgKHBvc2l0aW9uICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIC8vIERvbid0IHJldHVybiB0
aGUgaW5jb21wbGV0ZSBBcnJheUJ1ZmZlci4KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgcmV0dXJuIGFycmF5QnVmZmVyLnJlbGVhc2UoKTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgY29uc3QgY2hhciogc2VnbWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggOGM1OTUzYS4uOTU4NDMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNpZm5kZWYgU2hhcmVkQnVmZmVyX2gKICNkZWZpbmUgU2hhcmVkQnVmZmVyX2gKIAorI2lu
Y2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
OTksNiArMTAwLDkgQEAgcHVibGljOgogICAgIC8vIHRvIGJlIG1lcmdlZCBpbnRvIGEgZmxhdCBi
dWZmZXIuIFVzZSBnZXRTb21lRGF0YSgpIHdoZW5ldmVyIHBvc3NpYmxlCiAgICAgLy8gZm9yIGJl
dHRlciBwZXJmb3JtYW5jZS4KICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgLy8g
Q3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29u
dGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50
ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
cj4gY3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzRhY2JlNy4uNDQ2
MzNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zMjUsNyArMzI1
LDcgQEAgQXJyYXlCdWZmZXIqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFycmF5QnVmZmVyKCkK
IAogICAgIGlmICghbV9yZXNwb25zZUFycmF5QnVmZmVyKSB7CiAgICAgICAgIGlmIChtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fcmVzcG9uc2VBcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoY29uc3RfY2FzdDxjaGFyKj4obV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXItPmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX3Jlc3BvbnNlQXJyYXlCdWZmZXIgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+Y3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9yZXNwb25zZUFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxs
cHRyLCAwKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuY2xlYXIoKTsK
</data>
<flag name="review"
          id="247126"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223223</attachid>
            <date>2014-02-05 02:08:23 -0800</date>
            <delta_ts>2014-02-05 04:53:54 -0800</delta_ts>
            <desc>Blink&apos;s implementation</desc>
            <filename>vectorFromBlink4.patch</filename>
            <type>text/plain</type>
            <size>5665</size>
            <attacher name="Wojciech Bielawski">w.bielawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBmOTMzOGIuLjRlODBlOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI3ICBXb2pjaWVjaCBCaWVs
YXdza2kgIDx3LmJpZWxhd3NraUBzYW1zdW5nLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVz
dCBwZXJmb3JtcyB0b28gbWFueSBjb3BpZXMgZm9yIEFycmF5QnVmZmVyIHJlc3VsdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzQ1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQmFzZWQgb24g
YmxpbmsgY2hhbmdlOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
YmxpbmsvKy9iZWQyNjZhYTVhNDNmN2MwODBjODdlNTI3YmQzNWUyYjgwZWNjN2I3CisKKyAgICAg
ICAgQWRkIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQXJyYXlCdWZmZXIoKSBhbmQgdXNlIGl0IHRvIGNy
ZWF0ZSBYTUxIdHRwUmVxdWVzdCdzIHJlc3BvbnNlIGluIEFycmF5QnVmZmVyCisgICAgICAgIFRo
aXMgY3V0cworICAgICAgICAgICAgLSB0d28gbWVtc2V0cyAoaW4gQXJyYXlCdWZmZXI6OmNyZWF0
ZSBhbmQgU2hhcmVkQnVmZmVyOjptX2J1ZmZlcjo6cmVzaXplKQorICAgICAgICAgICAgLSBvbmUg
Y29weSAoU2hhcmVkQnVmZmVyOjptX2J1ZmZlciB0byBBcnJheUJ1ZmZlckNvbnRlbnRzOjptX2Rh
dGEpCisgICAgICAgICAgICAtIG9uZSBhbGxvY2F0aW9uIChTaGFyZWRCdWZmZXI6Om1fYnVmZmVy
KQorCisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDE0LTAyLTA0ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgc3RhY2sgbGltaXQgY29t
cHV0YXRpb24gZG9lcyBub3Qgd29yayBmb3IgV2luZG93cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGYwZDdkMjcuLmE3YjZmMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtOTYsNyArOTYsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVh
dGUoQXJyYXlCdWZmZXJDb250ZW50cyYpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gY3JlYXRlQWRvcHRlZChjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBieXRl
TGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZC4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQXJyYXlCdWZm
ZXIuCiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUp
OwogCiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNzU5YWU5Li4zOWEy
YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDEtMjcgIFdvamNpZWNoIEJp
ZWxhd3NraSAgPHcuYmllbGF3c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1
ZXN0IHBlcmZvcm1zIHRvbyBtYW55IGNvcGllcyBmb3IgQXJyYXlCdWZmZXIgcmVzdWx0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NDU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBCYXNlZCBv
biBibGluayBjaGFuZ2U6IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1
bS9ibGluay8rL2JlZDI2NmFhNWE0M2Y3YzA4MGM4N2U1MjdiZDM1ZTJiODBlY2M3YjcKKworICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyOjpjcmVhdGVBcnJheUJ1ZmZlcigpIGFuZCB1c2UgaXQgdG8g
Y3JlYXRlIFhNTEh0dHBSZXF1ZXN0J3MgcmVzcG9uc2UgaW4gQXJyYXlCdWZmZXIKKyAgICAgICAg
VGhpcyBjdXRzCisgICAgICAgICAgICAtIHR3byBtZW1zZXRzIChpbiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlIGFuZCBTaGFyZWRCdWZmZXI6Om1fYnVmZmVyOjpyZXNpemUpCisgICAgICAgICAgICAtIG9u
ZSBjb3B5IChTaGFyZWRCdWZmZXI6Om1fYnVmZmVyIHRvIEFycmF5QnVmZmVyQ29udGVudHM6Om1f
ZGF0YSkKKyAgICAgICAgICAgIC0gb25lIGFsbG9jYXRpb24gKFNoYXJlZEJ1ZmZlcjo6bV9idWZm
ZXIpCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBXZWJLaXQgZGVzbid0IHByb3ZpZGUgdGVzdCBt
ZWNoYW5pc20gc2ltaWxhciB0byBibGluaydzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZUFy
cmF5QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnJlc3BvbnNlQXJyYXlCdWZmZXIpOgorCiAyMDE0LTAyLTA0ICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgPGlmcmFtZSBzZWFtbGVzcz4gc3Vw
cG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDgwOTNm
ZWMuLjM5NTc2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApA
QCAtMjc0LDYgKzI3NCwyNiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25z
dAogICAgIHJldHVybiB0aGlzLT5idWZmZXIoKS5kYXRhKCk7CiB9CiAKK1Bhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAoreworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5p
bml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgc2l6ZW9mKGNoYXIpKTsK
KworICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQgPSAwOworICAgIHVuc2lnbmVkIHBvc2l0aW9uID0g
MDsKKyAgICB3aGlsZSAodW5zaWduZWQgc2VnbWVudFNpemUgPSBnZXRTb21lRGF0YShzZWdtZW50
LCBwb3NpdGlvbikpIHsKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSArIHBvc2l0aW9uLCBzZWdtZW50LCBzZWdtZW50U2l6ZSk7CisgICAgICAg
IHBvc2l0aW9uICs9IHNlZ21lbnRTaXplOworICAgIH0KKworICAgIGlmIChwb3NpdGlvbiAhPSBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAvLyBEb24ndCByZXR1cm4gdGhlIGluY29tcGxldGUgQXJyYXlCdWZmZXIuCisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBhcnJheUJ1ZmZlci5yZWxlYXNl
KCk7Cit9CisKIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoU2hhcmVkQnVmZmVyKiBkYXRhKQog
ewogICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCmluZGV4IDhjNTk1M2EuLjk1ODQzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFNoYXJlZEJ1ZmZlcl9oCiAj
ZGVmaW5lIFNoYXJlZEJ1ZmZlcl9oCiAKKyNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTk5LDYgKzEwMCw5IEBAIHB1YmxpYzoKICAgICAv
LyB0byBiZSBtZXJnZWQgaW50byBhIGZsYXQgYnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVu
ZXZlciBwb3NzaWJsZQogICAgIC8vIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgY29uc3Qg
Y2hhciogZGF0YSgpIGNvbnN0OworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNv
cGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgorICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7
CiAKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IGM0YWNiZTcuLjQ0NjMzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIEFycmF5QnVmZmVyKiBYTUxIdHRwUmVx
dWVzdDo6cmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAKICAgICBpZiAoIW1fcmVzcG9uc2VBcnJheUJ1
ZmZlcikgewogICAgICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAg
ICBtX3Jlc3BvbnNlQXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0X2Nhc3Q8
Y2hhcio+KG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSkpOworICAgICAgICAgICAgbV9y
ZXNwb25zZUFycmF5QnVmZmVyID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmNyZWF0ZUFycmF5
QnVmZmVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcmVzcG9uc2VBcnJheUJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLmNsZWFyKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>