<?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>177406</bug_id>
          
          <creation_ts>2017-09-23 01:38:27 -0700</creation_ts>
          <short_desc>Images may render partial frames even after loading all the encoded data</short_desc>
          <delta_ts>2017-09-25 13:13:24 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=177458</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351944</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-23 01:38:27 -0700</bug_when>
    <thetext>This bug can happen if the image decoding thread is closed after it finished decoding the partially loaded frame. The dead decoding thread can shuts down itself if the SynchronizedFixedQueue notifies it that it has been closed. This can happen if the dispatcher makes this thread active. But before this happens, new image data is received, the image renderer is invalidated and a new decoding request is made. So a new decoding thread is created and a frame request is pushed to the SynchronizedFixedQueue. The dead thread still can access the SynchronizedFixedQueue but it did not get a chance to be active between closing the SynchronizedFixedQueue and reopening it. So the dead thread dequeues the new decoding request. When it finishes decoding, it realizes it is already dead so it drops the decoded frame. So although we received new image data we do not draw a newer image frame. If this happens after receiving all the data, the full image full won&apos;t be rendered.

This is the calling stack that can lead to this bug:

// Receiving image data and render repaint.
BitmapImage::draw()
ImageSource::requestFrameAsyncDecodingAtIndex()
ImageFrameCache::requestFrameAsyncDecodingAtIndex()
ImageFrameCache::startAsyncDecodingQueue()
WorkQueue::create()                                 // Creates a WorkQueue, say WQ1.
  ImageDecoder::createFrameImageAtIndex()           // Happens in the decoding thread WQ1.
  callOnMainThread()                                // Gets dispatched from WQ1.
    ImageFrameCache::cacheNativeImageAtIndexAsync() // Get called from callOnMainThread() from the decoding thread WQ1.
    BitmapImage::imageFrameAvailableAtIndex()       // The renderer is invalidated
    ImageSource::stopAsyncDecodingQueue()
    ImageFrameCache::stopAsyncDecodingQueue()
    SynchronizedFixedQueue::close()
BitmapImage::draw()                                 // The new frame is drawn.

// Receiving image data and render repaint.
BitmapImage::draw()
ImageSource::requestFrameAsyncDecodingAtIndex()
ImageFrameCache::requestFrameAsyncDecodingAtIndex()
ImageFrameCache::startAsyncDecodingQueue()
WorkQueue::create()                                 // Creates a WorkQueue, say WQ2
  ImageDecoder::createFrameImageAtIndex()           // Happens in the dead decoding thread WQ1
  callOnMainThread()                                // Gets dispatched from WQ1.
     m_decodingQueue￼ != protectedQueue              // This frame is dropped to the floor and the render does not get repainted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351945</commentid>
    <comment_count>1</comment_count>
      <attachid>321622</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-23 01:56:29 -0700</bug_when>
    <thetext>Created attachment 321622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351946</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-23 01:57:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/34588529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351970</commentid>
    <comment_count>3</comment_count>
      <attachid>321622</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-23 10:13:35 -0700</bug_when>
    <thetext>Comment on attachment 321622
Patch

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

&gt; Source/WTF/wtf/SynchronizedFixedQueue.h:43
&gt;      SynchronizedFixedQueue()

This constructor should be private now.

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:327
&gt; +    ASSERT(m_frameRequestQueue);
&gt; +    m_frameRequestQueue-&gt;enqueue({ index, subsamplingLevel, sizeForDrawing, decodingStatus });

The ASSERT is pointless because you&apos;ll crash on the next line anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351983</commentid>
    <comment_count>4</comment_count>
      <attachid>321636</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-23 13:11:26 -0700</bug_when>
    <thetext>Created attachment 321636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351984</commentid>
    <comment_count>5</comment_count>
      <attachid>321622</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-23 13:17:45 -0700</bug_when>
    <thetext>Comment on attachment 321622
Patch

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

&gt;&gt; Source/WTF/wtf/SynchronizedFixedQueue.h:43
&gt;&gt;      SynchronizedFixedQueue()
&gt; 
&gt; This constructor should be private now.

This wil require changing TestWebKitAPI/Tests/WTF/SynchronizedFixedQueue.cpp. And I wanted to make the smallest change to fix this bug.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:327
&gt;&gt; +    m_frameRequestQueue-&gt;enqueue({ index, subsamplingLevel, sizeForDrawing, decodingStatus });
&gt; 
&gt; The ASSERT is pointless because you&apos;ll crash on the next line anyway.

Done. And it should not be null since ImageFrameCache::requestFrameAsyncDecodingAtIndex() ensures the decoding thread is created by calling ImageFrameCache::startAsyncDecodingQueue(). This function calls ImageFrameCache::frameRequestQueue() which ensures the m_frameRequestQueue is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351985</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-23 13:46:56 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #5)
&gt; Comment on attachment 321622 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321622&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/SynchronizedFixedQueue.h:43
&gt; &gt;&gt;      SynchronizedFixedQueue()
&gt; &gt; 
&gt; &gt; This constructor should be private now.
&gt; 
&gt; This wil require changing
&gt; TestWebKitAPI/Tests/WTF/SynchronizedFixedQueue.cpp. And I wanted to make the
&gt; smallest change to fix this bug.

Then you should change the test. The way it is, someone can make a SynchronizedFixedQueue on the stack which makes no sense for a ref-counted object (and is dangerous).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351988</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-23 14:05:29 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 321636:

http/tests/security/cross-origin-xsl-BLOCKED.html bug 51054 (authors: abarth@webkit.org, jochen@chromium.org, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351989</commentid>
    <comment_count>8</comment_count>
      <attachid>321636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-23 14:05:56 -0700</bug_when>
    <thetext>Comment on attachment 321636
Patch

Clearing flags on attachment: 321636

Committed r222427: &lt;http://trac.webkit.org/changeset/222427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351990</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-23 14:05:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351993</commentid>
    <comment_count>10</comment_count>
      <attachid>321636</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-23 14:42:34 -0700</bug_when>
    <thetext>Comment on attachment 321636
Patch

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

&gt; Source/WebCore/platform/graphics/ImageFrameCache.h:142
&gt;      Ref&lt;WorkQueue&gt; decodingQueue();

This likely should just return WorkQueue&amp;, not Ref&lt;WorkQueue&gt;, unless there is some case where this creates a newly created queue or there is some major risk of it being deallocated while being used.

&gt; Source/WebCore/platform/graphics/ImageFrameCache.h:143
&gt; +    Ref&lt;SynchronizedFixedQueue&lt;ImageFrameRequest, BufferSize&gt;&gt; frameRequestQueue();

I think this should return just a plain reference, not a Ref&lt;&gt;, for the same reasons I cited above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352370</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-09-25 13:13:00 -0700</bug_when>
    <thetext>The followup bug is https://bugs.webkit.org/show_bug.cgi?id=177458</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321622</attachid>
            <date>2017-09-23 01:56:29 -0700</date>
            <delta_ts>2017-09-23 13:11:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177406-20170923015628.patch</filename>
            <type>text/plain</type>
            <size>10448</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhY2Q4MjNjMzdjZDIwMTRlODAzNzUw
YjczOTRkNTgxYzJkMjMyZjIuLjc5ZDI2MmYyMjE2YTI3YTQ4MDBkZjIyNTQxZjkxMzdkYzg2NzZm
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDktMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBJbWFnZXMgbWF5IHJlbmRlciBwYXJ0
aWFsIGZyYW1lcyBldmVuIGFmdGVyIGxvYWRpbmcgYWxsIHRoZSBlbmNvZGVkIGRhdGEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzQwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIGEgUmVmUHRyPFN5bmNocm9uaXplZEZpeGVkUXVldWU+LgorCisgICAgICAg
ICogd3RmL1N5bmNocm9uaXplZEZpeGVkUXVldWUuaDoKKyAgICAgICAgKFdURjo6U3luY2hyb25p
emVkRml4ZWRRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6U3luY2hyb25pemVkRml4ZWRR
dWV1ZTo6ZW5xdWV1ZSk6CisgICAgICAgIChXVEY6OlN5bmNocm9uaXplZEZpeGVkUXVldWU6OmRl
cXVldWUpOgorCiAyMDE3LTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBTdHJpbmdCdWlsZGVyIG1vdmFibGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzNjdlZmIxZDk3ZDg5MDE2MGJjODAyNmUwNTE5MzIxOWYxMTkyYWJjLi4xYmY5NmJmOWNi
OTQ1ZWFkYjI4MTBlZThiNDQzMGJiZDI0ZGQ0MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTctMDktMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBJbWFnZXMgbWF5IHJlbmRlciBwYXJ0aWFsIGZyYW1lcyBldmVuIGFmdGVy
IGxvYWRpbmcgYWxsIHRoZSBlbmNvZGVkIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzQwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gYmxvY2sgdGhl
IG1haW4gdGhyZWFkIHdhaXRpbmcgZm9yIHRoZSBpbWFnZSBkZWNvZGluZworICAgICAgICB0aHJl
YWQgdG8gdGVybWluYXRlLCB3ZSBsZXQgdGhlIGRlY29kaW5nIHRocmVhZCBmaW5pc2ggaXRzIHdv
cmsgZXZlbiBpdCB3aWxsCisgICAgICAgIGJlIHRocm93biBhd2F5LiBJZiBhIG5ldyBkZWNvZGlu
ZyB0aHJlYWQgaXMgY3JlYXRlZCBhbmQgdGhlIFN5bmNocm9uaXplZEZpeGVkUXVldWUKKyAgICAg
ICAgaXMgcmVvcGVuZWQsIHRoZSB0ZXJtaW5hdGluZyBkZWNvZGluZyB0aHJlYWQgbWlnaHQgaGF2
ZSB0aGUgY2hhbmNlIHRvIHByb2Nlc3MKKyAgICAgICAgYSBuZXcgZnJhbWUgcmVxdWVzdC4gQWZ0
ZXIgaXQgZmluaXNoZXMgZGVjb2RpbmcgaXQsIGl0IHJlYWxpemUgdGhhdCBpdCBpcworICAgICAg
ICB0ZXJtaW5hdGluZyBzbyBpdCB3aWxsIGRyb3AgdGhlIGRlY29kZWQgZnJhbWUgdG8gdGhlIGZs
b29yLiBTbyB0aGUgbmV3IHJlcXVlc3QKKyAgICAgICAgd2FzIG5vdCBwcm9jZXNzZWQgYnkgdGhl
IG5ldyB0aHJlYWQgYW5kIGJlY2F1c2UgaXQgd2FzIHByb2Nlc3NlZCBieSB0aGUKKyAgICAgICAg
dGVybWluYXRpbmcgdGhyZWFkLCBub3RoaW5nIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIEJpdG1h
cEltYWdlIG9iamVjdCBhbmQKKyAgICAgICAgdGhlIHJlbmRlcmVyIHdpbGwgbm90IGJlIHJlcGFp
bnRlZC4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGNyZWF0ZSBhIG5ldyBTeW5jaHJvbml6ZWRG
aXhlZFF1ZXVlIGV2ZXJ5IHRpbWUgYSBkZWNvZGluZyAKKyAgICAgICAgdGhyZWFkIGlzIGNyZWF0
ZWQuIFRoaXMgd2lsbCBndWFyYW50ZWUgdGhhdCB0aGUgdGVybWluYXRpbmcgdGhyZWFkIHdvbid0
CisgICAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBuZXcgZnJhbWUgcmVxdWVzdCBhbmQgd2lsbCBz
aHV0IGRvd24gYWZ0ZXIgYmVpbmcgbm90aWZpZWQKKyAgICAgICAgYnkgdGhlIG9sZCBTeW5jaHJv
bml6ZWRGaXhlZFF1ZXVlIHRoYXQgaXQgaGFzIGJlZW4gY2xvc2VkLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVDYWNoZTo6ZnJhbWVSZXF1ZXN0UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZUNhY2hlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lQ2FjaGU6OnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6c3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmg6CisKIDIwMTct
MDktMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSB0aGUgbmVlZCBmb3IgU2V0dGVyTWF5VGhyb3dFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1N5bmNocm9uaXplZEZpeGVkUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1N5bmNo
cm9uaXplZEZpeGVkUXVldWUuaAppbmRleCA5NjdjYTY3NjM3ZDRhMTQ5NjMxZmQ0OWNmYTc1N2Zk
YmIxNDg5NzBkLi4wY2YyNGJiODI4MGZlNDk0MTEyNzU4ZGNhMzk2OWE0MTUyYTIyODQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmgKKysrIGIvU291
cmNlL1dURi93dGYvU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oCkBAIC0yOCwxNyArMjgsMjMgQEAK
ICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBCdWZmZXJT
aXplPgotY2xhc3MgU3luY2hyb25pemVkRml4ZWRRdWV1ZSB7CitjbGFzcyBTeW5jaHJvbml6ZWRG
aXhlZFF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9uaXplZEZpeGVk
UXVldWU8VCwgQnVmZmVyU2l6ZT4+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN5bmNocm9u
aXplZEZpeGVkUXVldWU+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlKCkpOworICAgIH0KKwogICAgIFN5bmNocm9uaXpl
ZEZpeGVkUXVldWUoKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghKChCdWZmZXJTaXpl
IC0gMSkgJiBCdWZmZXJTaXplKSwgIkJ1ZmZlclNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiIpOwog
ICAgIH0KLSAgICAKKwogICAgIHZvaWQgb3BlbigpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVy
IGxvY2tIb2xkZXIobV9tdXRleCk7CkBAIC00OSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9vcGVuID0gdHJ1ZTsKICAgICAgICAgbV9xdWV1ZS5jbGVhcigpOwogICAgIH0KLSAgICAKKwog
ICAgIHZvaWQgY2xvc2UoKQogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1f
bXV0ZXgpOwpAQCAtNjAsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fb3BlbiA9IGZhbHNl
OwogICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAgICB9Ci0gICAgCisKICAgICBi
b29sIGlzT3BlbigpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CkBAIC03MywxMSArNzksMTEgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFdhaXQgZm9yIGFu
IGVtcHR5IHBsYWNlIHRvIGJlIGF2YWlsYWJsZSBpbiB0aGUgcXVldWUuCiAgICAgICAgIG1fY29u
ZGl0aW9uLndhaXQobV9tdXRleCwgW3RoaXNdKCkgeyByZXR1cm4gIW1fb3BlbiB8fCBtX3F1ZXVl
LnNpemUoKSA8IEJ1ZmZlclNpemU7IH0pOwotICAgICAgICAKKwogICAgICAgICAvLyBUaGUgcXVl
dWUgaXMgY2xvc2luZywgZXhpdCBpbW1lZGlhdGVseS4KICAgICAgICAgaWYgKCFtX29wZW4pCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEFkZCB0aGUg
aXRlbSBpbiB0aGUgcXVldWUuCiAgICAgICAgIG1fcXVldWUuYXBwZW5kKHZhbHVlKTsKIApAQCAt
ODUsMTEgKzkxLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5QWxsKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgZGVxdWV1ZShU
JiB2YWx1ZSkKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsK
LSAgICAgICAgCisKICAgICAgICAgLy8gV2FpdCBmb3IgYW4gaXRlbSB0byBiZSBhZGRlZC4KICAg
ICAgICAgbV9jb25kaXRpb24ud2FpdChtX211dGV4LCBbdGhpc10oKSB7IHJldHVybiAhbV9vcGVu
IHx8IG1fcXVldWUuc2l6ZSgpOyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKaW5kZXggZjYxMDg1NzAxYjQ2ZGEwMGU5
M2UyZjY3ZWEwZmRiMzc1N2JmNmYwYy4uYTc3OWMzZmY1MTMyYzcyMGJhZThiZGIyZDI3NzBhZGI2
YmRkNGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lQ2FjaGUuY3BwCkBAIC0yNzAsMTggKzI3MCwyNCBAQCBSZWY8V29ya1F1ZXVlPiBJ
bWFnZUZyYW1lQ2FjaGU6OmRlY29kaW5nUXVldWUoKQogICAgIHJldHVybiAqbV9kZWNvZGluZ1F1
ZXVlOwogfQogCitSZWY8SW1hZ2VGcmFtZUNhY2hlOjpGcmFtZVJlcXVlc3RRdWV1ZT4gSW1hZ2VG
cmFtZUNhY2hlOjpmcmFtZVJlcXVlc3RRdWV1ZSgpCit7CisgICAgaWYgKCFtX2ZyYW1lUmVxdWVz
dFF1ZXVlKQorICAgICAgICBtX2ZyYW1lUmVxdWVzdFF1ZXVlID0gRnJhbWVSZXF1ZXN0UXVldWU6
OmNyZWF0ZSgpOworICAgIAorICAgIHJldHVybiAqbV9mcmFtZVJlcXVlc3RRdWV1ZTsKK30KKwog
dm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKIHsKICAgICBp
ZiAoaGFzQXN5bmNEZWNvZGluZ1F1ZXVlKCkgfHwgIWlzRGVjb2RlckF2YWlsYWJsZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lUmVxdWVzdFF1ZXVlLm9wZW4oKTsKLQogICAgIC8v
IFdlIG5lZWQgdG8gcHJvdGVjdCB0aGlzLCBtX2RlY29kaW5nUXVldWUgYW5kIG1fZGVjb2RlciBm
cm9tIGJlaW5nIGRlbGV0ZWQgd2hpbGUgd2UgYXJlIGluIHRoZSBkZWNvZGluZyBsb29wLgotICAg
IGRlY29kaW5nUXVldWUoKS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcHJvdGVjdGVkUXVldWUgPSBkZWNvZGluZ1F1ZXVlKCksIHByb3RlY3RlZERlY29kZXIgPSBt
YWtlUmVmKCptX2RlY29kZXIpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwoKS5zdHJpbmcoKS5pc29s
YXRlZENvcHkoKV0geworICAgIGRlY29kaW5nUXVldWUoKS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZSA9IGRlY29kaW5nUXVl
dWUoKSwgcHJvdGVjdGVkRnJhbWVSZXF1ZXN0UXVldWUgPSBmcmFtZVJlcXVlc3RRdWV1ZSgpLCBw
cm90ZWN0ZWREZWNvZGVyID0gbWFrZVJlZigqbV9kZWNvZGVyKSwgc291cmNlVVJMID0gc291cmNl
VVJMKCkuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgSW1hZ2VGcmFtZVJlcXVl
c3QgZnJhbWVSZXF1ZXN0OwogCi0gICAgICAgIHdoaWxlIChwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1l
UmVxdWVzdFF1ZXVlLmRlcXVldWUoZnJhbWVSZXF1ZXN0KSkgeworICAgICAgICB3aGlsZSAocHJv
dGVjdGVkRnJhbWVSZXF1ZXN0UXVldWUtPmRlcXVldWUoZnJhbWVSZXF1ZXN0KSkgewogICAgICAg
ICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoQXN5bmNJbWFnZURlY29kZVN0YXJ0LCBBc3lu
Y0ltYWdlRGVjb2RlRW5kKTsKIAogICAgICAgICAgICAgLy8gR2V0IHRoZSBmcmFtZSBOYXRpdmVJ
bWFnZSBvbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgpAQCAtMjk0LDcgKzMwMCw3IEBAIHZvaWQgSW1h
Z2VGcmFtZUNhY2hlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgbWFpbiB0aHJl
YWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhlIE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhy
ZWFkLgotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IHByb3Rl
Y3RlZFRoaXMuY29weVJlZigpLCBwcm90ZWN0ZWRRdWV1ZSA9IHByb3RlY3RlZFF1ZXVlLmNvcHlS
ZWYoKSwgcHJvdGVjdGVkRGVjb2RlciA9IHByb3RlY3RlZERlY29kZXIuY29weVJlZigpLCBzb3Vy
Y2VVUkwgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShu
YXRpdmVJbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCksIHBy
b3RlY3RlZFF1ZXVlID0gcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5jb3B5UmVmKCksIHByb3RlY3Rl
ZERlY29kZXIgPSBwcm90ZWN0ZWREZWNvZGVyLmNvcHlSZWYoKSwgc291cmNlVVJMID0gc291cmNl
VVJMLmlzb2xhdGVkQ29weSgpLCBuYXRpdmVJbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpLCBm
cmFtZVJlcXVlc3RdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIFRoZSBxdWV1ZSBt
YXkgaGF2ZSBiZWVuIGNsb3NlZCBpZiBhZnRlciB3ZSBnb3QgdGhlIGZyYW1lIE5hdGl2ZUltYWdl
LCBzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkgd2FzIGNhbGxlZC4KICAgICAgICAgICAgICAgICBp
ZiAocHJvdGVjdGVkUXVldWUucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGluZ1F1ZXVl
ICYmIHByb3RlY3RlZERlY29kZXIucHRyKCkgPT0gcHJvdGVjdGVkVGhpcy0+bV9kZWNvZGVyKSB7
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUaGlzLT5tX2ZyYW1lQ29tbWl0
UXVldWUuZmlyc3QoKSA9PSBmcmFtZVJlcXVlc3QpOwpAQCAtMzE3LDcgKzMyMyw4IEBAIHZvaWQg
SW1hZ2VGcmFtZUNhY2hlOjpyZXF1ZXN0RnJhbWVBc3luY0RlY29kaW5nQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nCiAgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMgPSBt
X2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpID8gRGVjb2RpbmdTdGF0dXM6
OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWw7CiAKICAgICBMT0coSW1hZ2VzLCAi
SW1hZ2VGcmFtZUNhY2hlOjolcyAtICVwIC0gdXJsOiAlcyBbZW5xdWV1aW5nIGZyYW1lICVsZCBm
b3IgZGVjb2RpbmddIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBpbmRleCk7Ci0gICAgbV9mcmFtZVJlcXVlc3RRdWV1ZS5lbnF1ZXVlKHsg
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIHNpemVGb3JEcmF3aW5nLCBkZWNvZGluZ1N0YXR1cyB9
KTsKKyAgICBBU1NFUlQobV9mcmFtZVJlcXVlc3RRdWV1ZSk7CisgICAgbV9mcmFtZVJlcXVlc3RR
dWV1ZS0+ZW5xdWV1ZSh7IGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBzaXplRm9yRHJhd2luZywg
ZGVjb2RpbmdTdGF0dXMgfSk7CiAgICAgbV9mcmFtZUNvbW1pdFF1ZXVlLmFwcGVuZCh7IGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsLCBzaXplRm9yRHJhd2luZywgZGVjb2RpbmdTdGF0dXMgfSk7CiB9
CiAKQEAgLTMzOSw3ICszNDYsMTAgQEAgdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OnN0b3BBc3luY0Rl
Y29kaW5nUXVldWUoKQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBtX2ZyYW1lUmVxdWVzdFF1
ZXVlLmNsb3NlKCk7CisgICAgLy8gQ2xvc2UgbV9mcmFtZVJlcXVlc3RRdWV1ZSB0aGVuIHNldCBp
dCB0byBudWxscHRyLiBBIG5ldyB0aHJlYWQgbWlnaHQgc3RhcnQgYW5kIGEKKyAgICAvLyBuZXcg
bV9mcmFtZVJlcXVlc3RRdWV1ZSBpcyBjcmVhdGVkLiBTbyB0aGUgZGVhZCB0aHJlYWQgd2lsbCBu
b3QgaGF2ZSBhY2Nlc3MgdG8gaXQuCisgICAgbV9mcmFtZVJlcXVlc3RRdWV1ZS0+Y2xvc2UoKTsK
KyAgICBtX2ZyYW1lUmVxdWVzdFF1ZXVlID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lQ29tbWl0UXVl
dWUuY2xlYXIoKTsKICAgICBtX2RlY29kaW5nUXVldWUgPSBudWxscHRyOwogICAgIExPRyhJbWFn
ZXMsICJJbWFnZUZyYW1lQ2FjaGU6OiVzIC0gJXAgLSB1cmw6ICVzIFtkZWNvZGluZyBoYXMgYmVl
biBzdG9wcGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oCmluZGV4IDc5Y2RjMGFiM2I2ZjFlNDA4ZGQ1YWMxNjIyMzljY2I3MjAw
ZGZjMGMuLmZlMzhiYzk5ZDY3ZjJlY2JhZTcxMzBlZDczNmQ2MTIyZGVhODIwMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBA
IC0xMzcsNyArMTM3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlQXRJ
bmRleChOYXRpdmVJbWFnZVB0ciYmLCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQp
OwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXhBc3luYyhOYXRpdmVJbWFnZVB0ciYm
LCBzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYsIERlY29k
aW5nU3RhdHVzKTsKIAorICAgIHN0cnVjdCBJbWFnZUZyYW1lUmVxdWVzdDsKKyAgICBzdGF0aWMg
Y29uc3QgaW50IEJ1ZmZlclNpemUgPSA4OwogICAgIFJlZjxXb3JrUXVldWU+IGRlY29kaW5nUXVl
dWUoKTsKKyAgICBSZWY8U3luY2hyb25pemVkRml4ZWRRdWV1ZTxJbWFnZUZyYW1lUmVxdWVzdCwg
QnVmZmVyU2l6ZT4+IGZyYW1lUmVxdWVzdFF1ZXVlKCk7CiAKICAgICBjb25zdCBJbWFnZUZyYW1l
JiBmcmFtZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCkBAIC0xNTks
MTAgKzE2Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gaW5kZXggPT0gb3RoZXIu
aW5kZXggJiYgc3Vic2FtcGxpbmdMZXZlbCA9PSBvdGhlci5zdWJzYW1wbGluZ0xldmVsICYmIGRl
Y29kaW5nT3B0aW9ucyA9PSBvdGhlci5kZWNvZGluZ09wdGlvbnMgJiYgZGVjb2RpbmdTdGF0dXMg
PT0gb3RoZXIuZGVjb2RpbmdTdGF0dXM7CiAgICAgICAgIH0KICAgICB9OwotICAgIHN0YXRpYyBj
b25zdCBpbnQgQnVmZmVyU2l6ZSA9IDg7CiAgICAgdXNpbmcgRnJhbWVSZXF1ZXN0UXVldWUgPSBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlPEltYWdlRnJhbWVSZXF1ZXN0LCBCdWZmZXJTaXplPjsKICAg
ICB1c2luZyBGcmFtZUNvbW1pdFF1ZXVlID0gRGVxdWU8SW1hZ2VGcmFtZVJlcXVlc3QsIEJ1ZmZl
clNpemU+OwotICAgIEZyYW1lUmVxdWVzdFF1ZXVlIG1fZnJhbWVSZXF1ZXN0UXVldWU7CisgICAg
UmVmUHRyPEZyYW1lUmVxdWVzdFF1ZXVlPiBtX2ZyYW1lUmVxdWVzdFF1ZXVlOwogICAgIEZyYW1l
Q29tbWl0UXVldWUgbV9mcmFtZUNvbW1pdFF1ZXVlOwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1f
ZGVjb2RpbmdRdWV1ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321636</attachid>
            <date>2017-09-23 13:11:26 -0700</date>
            <delta_ts>2017-09-23 14:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177406-20170923131125.patch</filename>
            <type>text/plain</type>
            <size>10431</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhY2Q4MjNjMzdjZDIwMTRlODAzNzUw
YjczOTRkNTgxYzJkMjMyZjIuLmU3OGFhYmM2OTMzNWE2MTgyOWQ3YWVhNTdiODZhYTdkNWUxOTkz
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDktMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBJbWFnZXMgbWF5IHJlbmRlciBwYXJ0
aWFsIGZyYW1lcyBldmVuIGFmdGVyIGxvYWRpbmcgYWxsIHRoZSBlbmNvZGVkIGRhdGEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzQwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxl
IHRvIGNyZWF0ZSBhIFJlZlB0cjxTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlPi4KKworICAgICAgICAq
IHd0Zi9TeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmg6CisgICAgICAgIChXVEY6OlN5bmNocm9uaXpl
ZEZpeGVkUXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlN5bmNocm9uaXplZEZpeGVkUXVl
dWU6OmVucXVldWUpOgorICAgICAgICAoV1RGOjpTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlOjpkZXF1
ZXVlKToKKwogMjAxNy0wOS0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE1ha2UgU3RyaW5nQnVpbGRlciBtb3ZhYmxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMzY3ZWZiMWQ5N2Q4OTAxNjBiYzgwMjZlMDUxOTMyMTlmMTE5MmFiYy4uZTI3Yjg0YTVkM2Q0
MTNlZDI2MDUyNDEzNzBiMmE0ZDlkOTZlNzUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE3LTA5LTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1hZ2VzIG1heSByZW5kZXIgcGFydGlhbCBmcmFtZXMgZXZlbiBhZnRlciBs
b2FkaW5nIGFsbCB0aGUgZW5jb2RlZCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgQmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBibG9jayB0aGUgbWFp
biB0aHJlYWQgd2FpdGluZyBmb3IgdGhlIGltYWdlIGRlY29kaW5nCisgICAgICAgIHRocmVhZCB0
byB0ZXJtaW5hdGUsIHdlIGxldCB0aGUgZGVjb2RpbmcgdGhyZWFkIGZpbmlzaCBpdHMgd29yayBl
dmVuIGl0IHdpbGwKKyAgICAgICAgYmUgdGhyb3duIGF3YXkuIElmIGEgbmV3IGRlY29kaW5nIHRo
cmVhZCBpcyBjcmVhdGVkIGFuZCB0aGUgU3luY2hyb25pemVkRml4ZWRRdWV1ZQorICAgICAgICBp
cyByZW9wZW5lZCwgdGhlIHRlcm1pbmF0aW5nIGRlY29kaW5nIHRocmVhZCBtaWdodCBoYXZlIHRo
ZSBjaGFuY2UgdG8gcHJvY2VzcworICAgICAgICBhIG5ldyBmcmFtZSByZXF1ZXN0LiBBZnRlciBp
dCBmaW5pc2hlcyBkZWNvZGluZyBpdCwgaXQgcmVhbGl6ZSB0aGF0IGl0IGlzCisgICAgICAgIHRl
cm1pbmF0aW5nIHNvIGl0IHdpbGwgZHJvcCB0aGUgZGVjb2RlZCBmcmFtZSB0byB0aGUgZmxvb3Iu
IFNvIHRoZSBuZXcgcmVxdWVzdAorICAgICAgICB3YXMgbm90IHByb2Nlc3NlZCBieSB0aGUgbmV3
IHRocmVhZCBhbmQgYmVjYXVzZSBpdCB3YXMgcHJvY2Vzc2VkIGJ5IHRoZQorICAgICAgICB0ZXJt
aW5hdGluZyB0aHJlYWQsIG5vdGhpbmcgd2lsbCBiZSByZXBvcnRlZCB0byB0aGUgQml0bWFwSW1h
Z2Ugb2JqZWN0IGFuZAorICAgICAgICB0aGUgcmVuZGVyZXIgd2lsbCBub3QgYmUgcmVwYWludGVk
LgorCisgICAgICAgIFRoZSBmaXggaXMgdG8gY3JlYXRlIGEgbmV3IFN5bmNocm9uaXplZEZpeGVk
UXVldWUgZXZlcnkgdGltZSBhIGRlY29kaW5nIAorICAgICAgICB0aHJlYWQgaXMgY3JlYXRlZC4g
VGhpcyB3aWxsIGd1YXJhbnRlZSB0aGF0IHRoZSB0ZXJtaW5hdGluZyB0aHJlYWQgd29uJ3QKKyAg
ICAgICAgaGF2ZSBhY2Nlc3MgdG8gdGhlIG5ldyBmcmFtZSByZXF1ZXN0IGFuZCB3aWxsIHNodXQg
ZG93biBhZnRlciBiZWluZyBub3RpZmllZAorICAgICAgICBieSB0aGUgb2xkIFN5bmNocm9uaXpl
ZEZpeGVkUXVldWUgdGhhdCBpdCBoYXMgYmVlbiBjbG9zZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZUNhY2hlOjpmcmFtZVJlcXVlc3RRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZy
YW1lQ2FjaGU6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVDYWNoZTo6cmVxdWVzdEZyYW1lQXN5bmNEZWNvZGluZ0F0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaDoKKwogMjAxNy0wOS0y
MSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSBuZWVkIGZvciBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU3luY2hyb25pemVkRml4ZWRRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvU3luY2hyb25p
emVkRml4ZWRRdWV1ZS5oCmluZGV4IDk2N2NhNjc2MzdkNGExNDk2MzFmZDQ5Y2ZhNzU3ZmRiYjE0
ODk3MGQuLjBjZjI0YmI4MjgwZmU0OTQxMTI3NThkY2EzOTY5YTQxNTJhMjI4NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1N5bmNocm9uaXplZEZpeGVkUXVldWUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TeW5jaHJvbml6ZWRGaXhlZFF1ZXVlLmgKQEAgLTI4LDE3ICsyOCwyMyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEJ1ZmZlclNpemU+
Ci1jbGFzcyBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlIHsKK2NsYXNzIFN5bmNocm9uaXplZEZpeGVk
UXVldWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hyb25pemVkRml4ZWRRdWV1
ZTxULCBCdWZmZXJTaXplPj4gewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3luY2hyb25pemVk
Rml4ZWRRdWV1ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN5bmNocm9uaXplZEZpeGVkUXVldWUoKSk7CisgICAgfQorCiAgICAgU3luY2hyb25pemVkRml4
ZWRRdWV1ZSgpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCEoKEJ1ZmZlclNpemUgLSAx
KSAmIEJ1ZmZlclNpemUpLCAiQnVmZmVyU2l6ZSBtdXN0IGJlIHBvd2VyIG9mIDIuIik7CiAgICAg
fQotICAgIAorCiAgICAgdm9pZCBvcGVuKCkKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a0hvbGRlcihtX211dGV4KTsKQEAgLTQ5LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICBtX29w
ZW4gPSB0cnVlOwogICAgICAgICBtX3F1ZXVlLmNsZWFyKCk7CiAgICAgfQotICAgIAorCiAgICAg
dm9pZCBjbG9zZSgpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9tdXRl
eCk7CkBAIC02MCw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9vcGVuID0gZmFsc2U7CiAg
ICAgICAgIG1fY29uZGl0aW9uLm5vdGlmeUFsbCgpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wg
aXNPcGVuKCkKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlcihtX211dGV4KTsK
QEAgLTczLDExICs3OSwxMSBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gV2FpdCBmb3IgYW4gZW1w
dHkgcGxhY2UgdG8gYmUgYXZhaWxhYmxlIGluIHRoZSBxdWV1ZS4KICAgICAgICAgbV9jb25kaXRp
b24ud2FpdChtX211dGV4LCBbdGhpc10oKSB7IHJldHVybiAhbV9vcGVuIHx8IG1fcXVldWUuc2l6
ZSgpIDwgQnVmZmVyU2l6ZTsgfSk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRoZSBxdWV1ZSBp
cyBjbG9zaW5nLCBleGl0IGltbWVkaWF0ZWx5LgogICAgICAgICBpZiAoIW1fb3BlbikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgLy8gQWRkIHRoZSBpdGVt
IGluIHRoZSBxdWV1ZS4KICAgICAgICAgbV9xdWV1ZS5hcHBlbmQodmFsdWUpOwogCkBAIC04NSwx
MSArOTEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBkZXF1ZXVlKFQmIHZh
bHVlKQogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwotICAg
ICAgICAKKwogICAgICAgICAvLyBXYWl0IGZvciBhbiBpdGVtIHRvIGJlIGFkZGVkLgogICAgICAg
ICBtX2NvbmRpdGlvbi53YWl0KG1fbXV0ZXgsIFt0aGlzXSgpIHsgcmV0dXJuICFtX29wZW4gfHwg
bV9xdWV1ZS5zaXplKCk7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCBmNjEwODU3MDFiNDZkYTAwZTkzZTJm
NjdlYTBmZGIzNzU3YmY2ZjBjLi5hZGQzMWYzMDc4OWZkOTE4YTg2NGYxYWQ1YmNhY2FmYTY1ZjM5
OGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWVDYWNoZS5jcHAKQEAgLTI3MCwxOCArMjcwLDI0IEBAIFJlZjxXb3JrUXVldWU+IEltYWdl
RnJhbWVDYWNoZTo6ZGVjb2RpbmdRdWV1ZSgpCiAgICAgcmV0dXJuICptX2RlY29kaW5nUXVldWU7
CiB9CiAKK1JlZjxJbWFnZUZyYW1lQ2FjaGU6OkZyYW1lUmVxdWVzdFF1ZXVlPiBJbWFnZUZyYW1l
Q2FjaGU6OmZyYW1lUmVxdWVzdFF1ZXVlKCkKK3sKKyAgICBpZiAoIW1fZnJhbWVSZXF1ZXN0UXVl
dWUpCisgICAgICAgIG1fZnJhbWVSZXF1ZXN0UXVldWUgPSBGcmFtZVJlcXVlc3RRdWV1ZTo6Y3Jl
YXRlKCk7CisgICAgCisgICAgcmV0dXJuICptX2ZyYW1lUmVxdWVzdFF1ZXVlOworfQorCiB2b2lk
IEltYWdlRnJhbWVDYWNoZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQogewogICAgIGlmICho
YXNBc3luY0RlY29kaW5nUXVldWUoKSB8fCAhaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZnJhbWVSZXF1ZXN0UXVldWUub3BlbigpOwotCiAgICAgLy8gV2Ug
bmVlZCB0byBwcm90ZWN0IHRoaXMsIG1fZGVjb2RpbmdRdWV1ZSBhbmQgbV9kZWNvZGVyIGZyb20g
YmVpbmcgZGVsZXRlZCB3aGlsZSB3ZSBhcmUgaW4gdGhlIGRlY29kaW5nIGxvb3AuCi0gICAgZGVj
b2RpbmdRdWV1ZSgpLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBw
cm90ZWN0ZWRRdWV1ZSA9IGRlY29kaW5nUXVldWUoKSwgcHJvdGVjdGVkRGVjb2RlciA9IG1ha2VS
ZWYoKm1fZGVjb2RlciksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCgpLnN0cmluZygpLmlzb2xhdGVk
Q29weSgpXSB7CisgICAgZGVjb2RpbmdRdWV1ZSgpLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlID0gZGVjb2RpbmdRdWV1ZSgp
LCBwcm90ZWN0ZWRGcmFtZVJlcXVlc3RRdWV1ZSA9IGZyYW1lUmVxdWVzdFF1ZXVlKCksIHByb3Rl
Y3RlZERlY29kZXIgPSBtYWtlUmVmKCptX2RlY29kZXIpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwo
KS5zdHJpbmcoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBJbWFnZUZyYW1lUmVxdWVzdCBm
cmFtZVJlcXVlc3Q7CiAKLSAgICAgICAgd2hpbGUgKHByb3RlY3RlZFRoaXMtPm1fZnJhbWVSZXF1
ZXN0UXVldWUuZGVxdWV1ZShmcmFtZVJlcXVlc3QpKSB7CisgICAgICAgIHdoaWxlIChwcm90ZWN0
ZWRGcmFtZVJlcXVlc3RRdWV1ZS0+ZGVxdWV1ZShmcmFtZVJlcXVlc3QpKSB7CiAgICAgICAgICAg
ICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShBc3luY0ltYWdlRGVjb2RlU3RhcnQsIEFzeW5jSW1h
Z2VEZWNvZGVFbmQpOwogCiAgICAgICAgICAgICAvLyBHZXQgdGhlIGZyYW1lIE5hdGl2ZUltYWdl
IG9uIHRoZSBkZWNvZGluZyB0aHJlYWQuCkBAIC0yOTQsNyArMzAwLDcgQEAgdm9pZCBJbWFnZUZy
YW1lQ2FjaGU6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgLy8gVXBkYXRlIHRoZSBjYWNoZWQgZnJhbWVzIG9uIHRoZSBtYWluIHRocmVhZCB0
byBhdm9pZCB1cGRhdGluZyB0aGUgTWVtb3J5Q2FjaGUgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQu
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVk
VGhpcy5jb3B5UmVmKCksIHByb3RlY3RlZFF1ZXVlID0gcHJvdGVjdGVkUXVldWUuY29weVJlZigp
LCBwcm90ZWN0ZWREZWNvZGVyID0gcHJvdGVjdGVkRGVjb2Rlci5jb3B5UmVmKCksIHNvdXJjZVVS
TCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2
ZUltYWdlKSwgZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKSwgcHJvdGVj
dGVkUXVldWUgPSBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLmNvcHlSZWYoKSwgcHJvdGVjdGVkRGVj
b2RlciA9IHByb3RlY3RlZERlY29kZXIuY29weVJlZigpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwu
aXNvbGF0ZWRDb3B5KCksIG5hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1l
UmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHF1ZXVlIG1heSBo
YXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdvdCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2UsIHN0
b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2FsbGVkLgogICAgICAgICAgICAgICAgIGlmIChw
cm90ZWN0ZWRRdWV1ZS5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kaW5nUXVldWUgJiYg
cHJvdGVjdGVkRGVjb2Rlci5wdHIoKSA9PSBwcm90ZWN0ZWRUaGlzLT5tX2RlY29kZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHByb3RlY3RlZFRoaXMtPm1fZnJhbWVDb21taXRRdWV1
ZS5maXJzdCgpID09IGZyYW1lUmVxdWVzdCk7CkBAIC0zMTcsNyArMzIzLDcgQEAgdm9pZCBJbWFn
ZUZyYW1lQ2FjaGU6OnJlcXVlc3RGcmFtZUFzeW5jRGVjb2RpbmdBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmcKICAgICBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cyA9IG1fZGVj
b2Rlci0+ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgPyBEZWNvZGluZ1N0YXR1czo6Q29t
cGxldGUgOiBEZWNvZGluZ1N0YXR1czo6UGFydGlhbDsKIAogICAgIExPRyhJbWFnZXMsICJJbWFn
ZUZyYW1lQ2FjaGU6OiVzIC0gJXAgLSB1cmw6ICVzIFtlbnF1ZXVpbmcgZnJhbWUgJWxkIGZvciBk
ZWNvZGluZ10iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGluZGV4KTsKLSAgICBtX2ZyYW1lUmVxdWVzdFF1ZXVlLmVucXVldWUoeyBpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgc2l6ZUZvckRyYXdpbmcsIGRlY29kaW5nU3RhdHVzIH0pOwor
ICAgIG1fZnJhbWVSZXF1ZXN0UXVldWUtPmVucXVldWUoeyBpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCwgc2l6ZUZvckRyYXdpbmcsIGRlY29kaW5nU3RhdHVzIH0pOwogICAgIG1fZnJhbWVDb21taXRR
dWV1ZS5hcHBlbmQoeyBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgc2l6ZUZvckRyYXdpbmcsIGRl
Y29kaW5nU3RhdHVzIH0pOwogfQogCkBAIC0zMzksNyArMzQ1LDEwIEBAIHZvaWQgSW1hZ2VGcmFt
ZUNhY2hlOjpzdG9wQXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgfQogICAgIH0pOwogCi0g
ICAgbV9mcmFtZVJlcXVlc3RRdWV1ZS5jbG9zZSgpOworICAgIC8vIENsb3NlIG1fZnJhbWVSZXF1
ZXN0UXVldWUgdGhlbiBzZXQgaXQgdG8gbnVsbHB0ci4gQSBuZXcgZGVjb2RpbmcgdGhyZWFkIG1p
Z2h0IHN0YXJ0IGFuZCBhCisgICAgLy8gbmV3IG1fZnJhbWVSZXF1ZXN0UXVldWUgd2lsbCBiZSBj
cmVhdGVkLiBTbyB0aGUgdGVybWluYXRpbmcgdGhyZWFkIHdpbGwgbm90IGhhdmUgYWNjZXNzIHRv
IGl0LgorICAgIG1fZnJhbWVSZXF1ZXN0UXVldWUtPmNsb3NlKCk7CisgICAgbV9mcmFtZVJlcXVl
c3RRdWV1ZSA9IG51bGxwdHI7CiAgICAgbV9mcmFtZUNvbW1pdFF1ZXVlLmNsZWFyKCk7CiAgICAg
bV9kZWNvZGluZ1F1ZXVlID0gbnVsbHB0cjsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VGcmFtZUNh
Y2hlOjolcyAtICVwIC0gdXJsOiAlcyBbZGVjb2RpbmcgaGFzIGJlZW4gc3RvcHBlZF0iLCBfX0ZV
TkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaApp
bmRleCA3OWNkYzBhYjNiNmYxZTQwOGRkNWFjMTYyMjM5Y2NiNzIwMGRmYzBjLi5mZTM4YmM5OWQ2
N2YyZWNiYWU3MTMwZWQ3MzZkNjEyMmRlYTgyMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaApAQCAtMTM3LDcgKzEzNywxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQ
dHImJiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBE
ZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKICAgICB2b2lkIGNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7CiAKKyAg
ICBzdHJ1Y3QgSW1hZ2VGcmFtZVJlcXVlc3Q7CisgICAgc3RhdGljIGNvbnN0IGludCBCdWZmZXJT
aXplID0gODsKICAgICBSZWY8V29ya1F1ZXVlPiBkZWNvZGluZ1F1ZXVlKCk7CisgICAgUmVmPFN5
bmNocm9uaXplZEZpeGVkUXVldWU8SW1hZ2VGcmFtZVJlcXVlc3QsIEJ1ZmZlclNpemU+PiBmcmFt
ZVJlcXVlc3RRdWV1ZSgpOwogCiAgICAgY29uc3QgSW1hZ2VGcmFtZSYgZnJhbWVBdEluZGV4Q2Fj
aGVJZk5lZWRlZChzaXplX3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIApAQCAtMTU5LDEwICsxNjIsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09IG90aGVyLmluZGV4ICYmIHN1YnNhbXBs
aW5nTGV2ZWwgPT0gb3RoZXIuc3Vic2FtcGxpbmdMZXZlbCAmJiBkZWNvZGluZ09wdGlvbnMgPT0g
b3RoZXIuZGVjb2RpbmdPcHRpb25zICYmIGRlY29kaW5nU3RhdHVzID09IG90aGVyLmRlY29kaW5n
U3RhdHVzOwogICAgICAgICB9CiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3QgaW50IEJ1ZmZlclNp
emUgPSA4OwogICAgIHVzaW5nIEZyYW1lUmVxdWVzdFF1ZXVlID0gU3luY2hyb25pemVkRml4ZWRR
dWV1ZTxJbWFnZUZyYW1lUmVxdWVzdCwgQnVmZmVyU2l6ZT47CiAgICAgdXNpbmcgRnJhbWVDb21t
aXRRdWV1ZSA9IERlcXVlPEltYWdlRnJhbWVSZXF1ZXN0LCBCdWZmZXJTaXplPjsKLSAgICBGcmFt
ZVJlcXVlc3RRdWV1ZSBtX2ZyYW1lUmVxdWVzdFF1ZXVlOworICAgIFJlZlB0cjxGcmFtZVJlcXVl
c3RRdWV1ZT4gbV9mcmFtZVJlcXVlc3RRdWV1ZTsKICAgICBGcmFtZUNvbW1pdFF1ZXVlIG1fZnJh
bWVDb21taXRRdWV1ZTsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX2RlY29kaW5nUXVldWU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>