<?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>178003</bug_id>
          
          <creation_ts>2017-10-06 02:02:20 -0700</creation_ts>
          <short_desc>[MSE] Move SourceBuffer&apos;s pending append data into the platform implementations</short_desc>
          <delta_ts>2017-10-18 01:30:42 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>aboya</cc>
    
    <cc>eocanha</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357520</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-06 02:02:20 -0700</bug_when>
    <thetext>[MSE] Move SourceBuffer&apos;s pending append data into the platform implementations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357526</commentid>
    <comment_count>1</comment_count>
      <attachid>323000</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-06 02:24:55 -0700</bug_when>
    <thetext>Created attachment 323000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357531</commentid>
    <comment_count>2</comment_count>
      <attachid>323000</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-10-06 02:37:56 -0700</bug_when>
    <thetext>Comment on attachment 323000
Patch

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

The patch looks good in general but I have a small question:

&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:143
&gt; +    GstBuffer* buffer = gst_buffer_new_wrapped_full(static_cast&lt;GstMemoryFlags&gt;(0), bufferData, bufferLength, 0, bufferLength, new Vector&lt;unsigned char&gt;(WTFMove(data)),

Why is it better to keep the original data wrapped in a Vector here? Do we have any way to &quot;steal&quot; the internal data forever (as a char*) and avoid having the new Vector alive during the whole life of the GstBuffer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357537</commentid>
    <comment_count>3</comment_count>
      <attachid>323000</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-06 02:48:25 -0700</bug_when>
    <thetext>Comment on attachment 323000
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:143
&gt;&gt; +    GstBuffer* buffer = gst_buffer_new_wrapped_full(static_cast&lt;GstMemoryFlags&gt;(0), bufferData, bufferLength, 0, bufferLength, new Vector&lt;unsigned char&gt;(WTFMove(data)),
&gt; 
&gt; Why is it better to keep the original data wrapped in a Vector here? Do we have any way to &quot;steal&quot; the internal data forever (as a char*) and avoid having the new Vector alive during the whole life of the GstBuffer?

Vector either stores the data in an inline buffer, or it manages the pointer to the FastMalloc-ed data. Directly wrapping the Vector object avoids a lot of complexity, where in case of the inline buffer being used, we&apos;d have to detect that and then actually copy the data into a separately-managed allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357575</commentid>
    <comment_count>4</comment_count>
      <attachid>323000</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2017-10-06 06:49:23 -0700</bug_when>
    <thetext>Comment on attachment 323000
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:143
&gt;&gt;&gt; +    GstBuffer* buffer = gst_buffer_new_wrapped_full(static_cast&lt;GstMemoryFlags&gt;(0), bufferData, bufferLength, 0, bufferLength, new Vector&lt;unsigned char&gt;(WTFMove(data)),
&gt;&gt; 
&gt;&gt; Why is it better to keep the original data wrapped in a Vector here? Do we have any way to &quot;steal&quot; the internal data forever (as a char*) and avoid having the new Vector alive during the whole life of the GstBuffer?
&gt; 
&gt; Vector either stores the data in an inline buffer, or it manages the pointer to the FastMalloc-ed data. Directly wrapping the Vector object avoids a lot of complexity, where in case of the inline buffer being used, we&apos;d have to detect that and then actually copy the data into a separately-managed allocation.

Ok, everything clear, copies are bad and IMHO the patch is fine as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357589</commentid>
    <comment_count>5</comment_count>
      <attachid>323000</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-10-06 08:48:36 -0700</bug_when>
    <thetext>Comment on attachment 323000
Patch

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

r=me, with nit.

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:564
&gt; +    // Ensure the m_pendingAppendData object is moved from, in case the platform implementation
&gt; +    // rejects appending the buffer for whatever reason.
&gt; +    auto data = WTFMove(m_pendingAppendData);
&gt; +    m_private-&gt;append(WTFMove(data));

Nit: I would be more comfortable with an explicit call to &quot;clear()&quot; (with this comment) than a double move.  Alternatively, this could be an &quot;ASSERT(!m_pendingAppend.size())&quot;, since the private not doing anything with the passed in data is an exceptional condition.

Also, a future improvement to this area could be to move from storing incoming data as a &quot;Vector&lt;unsigned char&gt;&quot; to a &quot;SharedBuffer&quot;.  Appends would be cheaper, and the Private&apos;s might be able to use the SharedBuffer directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361172</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-17 01:55:07 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #5)
&gt; Comment on attachment 323000 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=323000&amp;action=review
&gt; 
&gt; r=me, with nit.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:564
&gt; &gt; +    // Ensure the m_pendingAppendData object is moved from, in case the platform implementation
&gt; &gt; +    // rejects appending the buffer for whatever reason.
&gt; &gt; +    auto data = WTFMove(m_pendingAppendData);
&gt; &gt; +    m_private-&gt;append(WTFMove(data));
&gt; 
&gt; Nit: I would be more comfortable with an explicit call to &quot;clear()&quot; (with
&gt; this comment) than a double move.  Alternatively, this could be an
&gt; &quot;ASSERT(!m_pendingAppend.size())&quot;, since the private not doing anything with
&gt; the passed in data is an exceptional condition.
&gt; 

I&apos;ll use the clear() call for now since none of the implementations guarantees to move from the moved-in Vector.

&gt; Also, a future improvement to this area could be to move from storing
&gt; incoming data as a &quot;Vector&lt;unsigned char&gt;&quot; to a &quot;SharedBuffer&quot;.  Appends
&gt; would be cheaper, and the Private&apos;s might be able to use the SharedBuffer
&gt; directly.

At least for the GStreamer backend, the segmented data kept in SharedBuffer would have to be flattened into a continuous allocation and then wrapped into a GstBuffer, which would essentially mean every appended data is copied twice like it is now -- first from the BufferSource into the SharedBuffer segment, and then from that segment into the flattened representation. With this patch, the only copy is from the BufferSource, at the expense of potential reallocations that occur when these copies go beyond the currently-allocated Vector&lt;&gt; buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361174</commentid>
    <comment_count>7</comment_count>
      <attachid>324003</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-17 02:10:23 -0700</bug_when>
    <thetext>Created attachment 324003
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361595</commentid>
    <comment_count>8</comment_count>
      <attachid>324003</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-18 01:30:16 -0700</bug_when>
    <thetext>Comment on attachment 324003
Patch for landing

Clearing flags on attachment: 324003

Committed r223596: &lt;https://trac.webkit.org/changeset/223596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361596</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-10-18 01:30:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361597</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-18 01:30:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/35048022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323000</attachid>
            <date>2017-10-06 02:24:55 -0700</date>
            <delta_ts>2017-10-17 02:10:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178003-20171006112453.patch</filename>
            <type>text/plain</type>
            <size>13077</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk1OGM5N2UwZjcxNTQ1
ZmI0ZTQ5ODIwYzI4YzUyYjZhYzMzNmI5OC4uNzc1ZjYzOGYxNTk0OWMzZGEwYTNhZmY5MzZjYjll
NjYwMTVlMzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE3LTEwLTA2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXSBNb3ZlIFNv
dXJjZUJ1ZmZlcidzIHBlbmRpbmcgYXBwZW5kIGRhdGEgaW50byB0aGUgcGxhdGZvcm0gaW1wbGVt
ZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzgwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKSwgd2UgY2FuIHVzZSBt
b3ZlIHNlbWFudGljcyB0bworICAgICAgICBwYXNzIHRoZSBwZW5kaW5nIGFwcGVuZCBkYXRhIGlu
dG8gdGhlIHBsYXRmb3JtIGxheWVyLCB3aGVyZSBpdCBjYW4gdGhlbgorICAgICAgICBiZSB1c2Vk
IG1vcmUgZWZmaWNpZW50bHkuCisKKyAgICAgICAgUmVzb3VyY2VzIGluIHRoZSBtX3BlbmRpbmdB
cHBlbmREYXRhIG1lbWJlciBhcmUgZmlyc3QgbW92ZWQgaW50byBhIGxvY2FsCisgICAgICAgIFZl
Y3RvciBvYmplY3QsIGVuc3VyaW5nIHRoYXQgbV9wZW5kaW5nQXBwZW5kRGF0YSBpcyBjbGVhcmVk
IG91dCBhcyB3YXMKKyAgICAgICAgZG9uZSBiZWZvcmUuIFRoZSBTb3VyY2VCdWZmZXJQcml2YXRl
IGludGVyZmFjZSBpcyB1cGRhdGVkIHRvIGFjY2VwdCBhCisgICAgICAgIFZlY3RvciBydmFsdWUg
cmVmZXJlbmNlIGFzIHRoZSBvbmx5IHBhcmFtZXRlciBvZiB0aGUgYXBwZW5kKCkgbWV0aG9kLgor
CisgICAgICAgIEZvciB0aGUgR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uLCBzaWduYXR1cmUgb2Yg
dGhlIGFwcGVuZCgpIG1ldGhvZCBpbgorICAgICAgICBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1l
ck1TRSBjbGFzcyBpcyBhbHNvIHVwZGF0ZWQuIFRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBu
b3cgbW92ZXMgdGhlIFZlY3RvciByZXNvdXJjZXMgb3ZlciB0byBhIG9uLWhlYXAgVmVjdG9yIG9i
amVjdCB0aGF0IGlzCisgICAgICAgIHRoZW4gd3JhcHBlZCBpbnRvIGEgR3N0QnVmZmVyIG9iamVj
dCBieSB1c2luZyB0aGUKKyAgICAgICAgZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZF9mdWxsKCkgQVBJ
IGFuZCBzcGVjaWZ5aW5nIHRoZSBjdXN0b20gZGVsZXRlci4KKworICAgICAgICBUaGUgQVZGb3Vu
ZGF0aW9uIGltcGxlbWVudGF0aW9uIG9mIFNvdXJjZUJ1ZmZlclByaXZhdGUgaXMgb25seSB1cGRh
dGVkCisgICAgICAgIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgaW4gdGhlIGludGVyZmFjZS4gVGhl
IFZlY3RvciBkYXRhIHRoYXQgaXMgcGFzc2VkCisgICAgICAgIGluIGlzIHN0aWxsIGNvcGllZCBp
bnRvIHRoZSBOU0RhdGEgYWxsb2NhdGlvbi4KKworICAgICAgICBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZSBpcyBhbHNvIHVwZGF0ZWQsIHdpdGggdGhlIGFwcGVuZCBkYXRhIHN0aWxsCisgICAgICAg
IGJlaW5nIGNvcGllZCBpbnRvIHRoZSBtX2lucHV0QnVmZmVyIFZlY3Rvci4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VDbGllbnRHU3RyZWFtZXJNU0U6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDE3LTEw
LTA2ICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW01TRV1bR1N0cmVhbWVyXSBTZWVrIG9uIHlvdXR1YmUuY29tL3R2IGZhaWxzIGFmdGVy
IHIyMTcxODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcAppbmRleCBlYTUyODI2MGNjZTUwYTkyOGRhNTIxMWI2NzEyOTlkODQ3M2U0
ZDNjLi4xN2Y0OGQwNzJmNTM4NGMwNTk3NmEzZjIyMGE4ZTA1NDhjZTFkZWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBA
IC01NTgsOCArNTU4LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZp
cmVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJpdmF0ZS0+YXBwZW5kKG1f
cGVuZGluZ0FwcGVuZERhdGEuZGF0YSgpLCBtX3BlbmRpbmdBcHBlbmREYXRhLnNpemUoKSk7Ci0g
ICAgbV9wZW5kaW5nQXBwZW5kRGF0YS5jbGVhcigpOworICAgIC8vIEVuc3VyZSB0aGUgbV9wZW5k
aW5nQXBwZW5kRGF0YSBvYmplY3QgaXMgbW92ZWQgZnJvbSwgaW4gY2FzZSB0aGUgcGxhdGZvcm0g
aW1wbGVtZW50YXRpb24KKyAgICAvLyByZWplY3RzIGFwcGVuZGluZyB0aGUgYnVmZmVyIGZvciB3
aGF0ZXZlciByZWFzb24uCisgICAgYXV0byBkYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmRE
YXRhKTsKKyAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAogdm9pZCBT
b3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1
bHQgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IDdhYzVkZDI3NWJhYTU3YjBhYWU4YmU1NTA4Nzg3
NmZmMTE5MWUwYmIuLjU2ODZlNGIxY2UxMzhkMGFmZmY2ZDhjYzdiOWZlYTExNzU4ODMyZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KikgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291
cmNlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKaW5kZXggYWM5ZGFmYjMxOTQ5MmY2OTkwMTg5N2Q5ZmM1NzYxNjI3NDYw
NzY4NC4uOTUwM2M5YmJiMTc0NTZmMjYwNDJiNTM0ZDc5OWI1NDljNzZiNGZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBA
IC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUg
b3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCop
IGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+
JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2Vy
U3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggYWViOTQzYTU3MDlhZTkxZjg0NzVmMjEwOGU5OTFjMWEwNTMwM2ExYy4uMjEz
YTJhNDU0ZWJhYzAwODFmMzhhODA3MWNjM2I5YzUxZDdiZWRkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY2OCwx
MSArNjY4LDEyIEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbERhdGFQYXJzZXJRdWV1
ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjphcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYmIGRhdGEpCiB7Ci0gICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFwcGVuZCglcCkgLSBkYXRhOiVwLCBsZW5ndGg6JWQiLCB0aGlzLCBk
YXRhLCBsZW5ndGgpOworICAgIExPRyhNZWRpYVNvdXJjZSwgIlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmQoJXApIC0gZGF0YTolcCwgbGVuZ3RoOiVkIiwgdGhpcywgZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YSBsZW5ndGg6bGVuZ3RoXSk7Cisg
ICAgLy8gRklYTUU6IEF2b2lkIHRoZSBkYXRhIGNvcHkgYnkgd3JhcHBpbmcgYXJvdW5kIHRoZSBW
ZWN0b3I8PiBvYmplY3QuCisgICAgUmV0YWluUHRyPE5TRGF0YT4gbnNEYXRhID0gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXpl
KCldKTsKICAgICBXZWFrUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiB3ZWFrVGhpcyA9
IG1fYXBwZW5kV2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7CiAgICAgUmV0YWluUHRy
PEFWU3RyZWFtRGF0YVBhcnNlcj4gcGFyc2VyID0gbV9wYXJzZXI7CiAgICAgUmV0YWluUHRyPFdl
YkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3Bw
CmluZGV4IGNiNmRmZjVmMTUwNDM3NTEzZDU5YWYxMWYwZWJlNjM2YWYyZjc4NzMuLjRiMGY0ZTM2
OTVmZmI3NWVlN2E2MDFjN2E1NjZiZjk3OGMwNWYzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3Ry
ZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjQsMTEgKzEy
NCwxMSBAQCB2b2lkIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjpyZXNldFBhcnNlclN0
YXRlKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlRwogICAgIGFwcGVuZFBpcGVsaW5lLT5hYm9y
dCgpOwogfQogCi1ib29sIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFOjphcHBlbmQoUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK2Jvb2wgTWVkaWFTb3Vy
Y2VDbGllbnRHU3RyZWFtZXJNU0U6OmFwcGVuZChSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcj4gc291cmNlQnVmZmVyUHJpdmF0ZSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0
YSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKLSAgICBHU1RfREVCVUco
IkFwcGVuZGluZyAldSBieXRlcyIsIGxlbmd0aCk7CisgICAgR1NUX0RFQlVHKCJBcHBlbmRpbmcg
JXUgYnl0ZXMiLCBkYXRhLnNpemUoKSk7CiAKICAgICBpZiAoIW1fcGxheWVyUHJpdmF0ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDkgKzEzNywxNCBAQCBib29sIE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFOjphcHBlbmQoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI+CiAKICAgICBBU1NFUlQoYXBwZW5kUGlwZWxpbmUpOwogCi0gICAgdm9pZCogYnVmZmVy
RGF0YSA9IGZhc3RNYWxsb2MobGVuZ3RoKTsKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9i
dWZmZXJfbmV3X3dyYXBwZWRfZnVsbChzdGF0aWNfY2FzdDxHc3RNZW1vcnlGbGFncz4oMCksIGJ1
ZmZlckRhdGEsIGxlbmd0aCwgMCwgbGVuZ3RoLCBidWZmZXJEYXRhLCBmYXN0RnJlZSk7Ci0gICAg
Z3N0X2J1ZmZlcl9maWxsKGJ1ZmZlciwgMCwgZGF0YSwgbGVuZ3RoKTsKKyAgICAvLyBXcmFwIHRo
ZSB3aG9sZSBWZWN0b3Igb2JqZWN0IGluIGNhc2UgdGhlIGRhdGEgaXMgc3RvcmVkIGluIHRoZSBp
bmxpbmVkIGJ1ZmZlci4KKyAgICBhdXRvKiBidWZmZXJEYXRhID0gZGF0YS5kYXRhKCk7CisgICAg
YXV0byBidWZmZXJMZW5ndGggPSBkYXRhLnNpemUoKTsKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9
IGdzdF9idWZmZXJfbmV3X3dyYXBwZWRfZnVsbChzdGF0aWNfY2FzdDxHc3RNZW1vcnlGbGFncz4o
MCksIGJ1ZmZlckRhdGEsIGJ1ZmZlckxlbmd0aCwgMCwgYnVmZmVyTGVuZ3RoLCBuZXcgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+KFdURk1vdmUoZGF0YSkpLAorICAgICAgICBbXShncG9pbnRlciBkYXRh
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8VmVjdG9yPHVuc2ln
bmVkIGNoYXI+Kj4oZGF0YSk7CisgICAgICAgIH0pOwogCiAgICAgcmV0dXJuIGFwcGVuZFBpcGVs
aW5lLT5wdXNoTmV3QnVmZmVyKGJ1ZmZlcikgPT0gR1NUX0ZMT1dfT0s7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291
cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgKaW5kZXggZGE3
OThjZmI3NzdjMjdmMGVlZGQ4NTExN2YyNzczZWU1M2VmOTAwYS4uNTE2N2Q1ZGZmZDc0NzM0NmE5
OWYyYzYyZDVjYTYzYzMyMWMxMjJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gRnJvbSBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLgogICAgIHZvaWQgYWJvcnQo
UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKICAgICB2b2lkIHJlc2V0UGFy
c2VyU3RhdGUoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+KTsKLSAgICBib29s
IGFwcGVuZChSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4sIGNvbnN0IHVuc2ln
bmVkIGNoYXIqLCB1bnNpZ25lZCk7CisgICAgYm9vbCBhcHBlbmQoUmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXI+LCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7CiAgICAgdm9pZCBy
ZW1vdmVkRnJvbU1lZGlhU291cmNlKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
Pik7CiAgICAgdm9pZCBmbHVzaChBdG9taWNTdHJpbmcpOwogICAgIHZvaWQgZW5xdWV1ZVNhbXBs
ZShSZWY8TWVkaWFTYW1wbGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZTRiMTA3ZjcwZjVjOGM2OTgxNzQxNWVi
Y2E0ZDY1NWIzYWI1ZWMwNy4uNjlhMjY0NThlNmZiM2ZmYmQxMTU2NzFjZmJkMjVhYWI1NDk1OTM1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC02NiwxNCArNjYsMTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogY2xpZW50KQogICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCA9IGNsaWVudDsKIH0KIAotdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjphcHBl
bmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQobV9tZWRpYVNv
dXJjZSk7CiAKICAgICBpZiAoIW1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fY2xpZW50LT5hcHBlbmQodGhpcywgZGF0YSwgbGVuZ3RoKSkK
KyAgICBpZiAobV9jbGllbnQtPmFwcGVuZCh0aGlzLCBXVEZNb3ZlKGRhdGEpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LT5zb3VyY2VCdWZmZXJQ
cml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6UmVhZFN0cmVh
bUZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IDMzZWQ5MTRmOTI1YjA1YWJjODlhZjY2YWUzMDNhYjdhYTdmMDczMTUu
LjU1MDI2YzE3OTI0ZDJlYWEyMTdiOTJiODYzMDNkMDQwODJlNzNlZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVy
UHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1fbWVkaWFTb3Vy
Y2UgPSBudWxscHRyOyB9CiAKICAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50KikgZmluYWw7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciosIHVu
c2lnbmVkKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0
ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCBlMDMxYTliNWQyMGQxMmEx
Yjk2ZTBlMTE2Y2U0YmFhOTU0Y2YwMjIyLi5jYmI4MmI2ZmVhOWE4MjQyMmIzNDcxNTQ5ZjY1ZDk5
Yzg4YWYyNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAt
MTM5LDkgKzEzOSw5IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldENsaWVudChT
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGllbnQpCiAgICAgbV9jbGllbnQgPSBjbGllbnQ7
CiB9CiAKLXZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChjb25zdCB1bnNpZ25l
ZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKIHsKLSAgICBtX2lucHV0
QnVmZmVyLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1faW5wdXRCdWZmZXIuYXBwZW5kVmVj
dG9yKGRhdGEpOwogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBy
ZXN1bHQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQ7CiAKICAg
ICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVzdWx0ID09IFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFN1Y2NlZWRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5oCmluZGV4IDQ5NjUwNTUzYjA3YmVhYzA3ZjUzMTBlZjVlNTZlZjgyYzcyMGEwNjAu
LmYzMTg5MmJlNmVkNTQ4YjUxZTIxN2IyOGRjODk3ZTIyOTdkZTYxNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRDbGllbnQoU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBhcHBl
bmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324003</attachid>
            <date>2017-10-17 02:10:23 -0700</date>
            <delta_ts>2017-10-17 02:10:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-178003-20171017111022.patch</filename>
            <type>text/plain</type>
            <size>13246</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY3YmQzMmFkMGVmYzY5
NWYyZGJhMmZhOGRiZGI2NGY1ZjI3NjA5MC4uMmI1ZmQxMDllZDc2ZmU3YzgyZDIxMGUxNWU3OWUz
ODUzMzY5YTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTEwLTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTVNFXSBNb3ZlIFNv
dXJjZUJ1ZmZlcidzIHBlbmRpbmcgYXBwZW5kIGRhdGEgaW50byB0aGUgcGxhdGZvcm0gaW1wbGVt
ZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzgwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgSW4g
U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCksIHdlIGNhbiB1c2UgbW92ZSBz
ZW1hbnRpY3MgdG8KKyAgICAgICAgcGFzcyB0aGUgcGVuZGluZyBhcHBlbmQgZGF0YSBpbnRvIHRo
ZSBwbGF0Zm9ybSBsYXllciwgd2hlcmUgaXQgY2FuIHRoZW4KKyAgICAgICAgYmUgdXNlZCBtb3Jl
IGVmZmljaWVudGx5LgorCisgICAgICAgIFJlc291cmNlcyBpbiB0aGUgbV9wZW5kaW5nQXBwZW5k
RGF0YSBtZW1iZXIgYXJlIG1vdmVkIGludG8gdGhlIGFwcGVuZCgpCisgICAgICAgIGNhbGwgb24g
dGhlIFNvdXJjZUJ1ZmZlclByaXZhdGUgb2JqZWN0LiBUaGUgbV9wZW5kaW5nQXBwZW5kRGF0YSBp
cyBzdGlsbAorICAgICAgICBjbGVhcmVkIG91dCBtYW51YWxseSBpbiBjYXNlIHRoZSB1bmRlcmx5
aW5nIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgY2xlYXIKKyAgICAgICAgaXQgb3V0IHRocm91Z2gg
YSBtb3ZlIG9wZXJhdGlvbi4gVGhlIFNvdXJjZUJ1ZmZlclByaXZhdGUgaW50ZXJmYWNlIGlzCisg
ICAgICAgIHVwZGF0ZWQgdG8gYWNjZXB0IGEgVmVjdG9yIHJ2YWx1ZSByZWZlcmVuY2UgYXMgdGhl
IG9ubHkgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgICBhcHBlbmQoKSBtZXRob2QuCisKKyAgICAg
ICAgRm9yIHRoZSBHU3RyZWFtZXIgaW1wbGVtZW50YXRpb24sIHNpZ25hdHVyZSBvZiB0aGUgYXBw
ZW5kKCkgbWV0aG9kIGluCisgICAgICAgIE1lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFIGNs
YXNzIGlzIGFsc28gdXBkYXRlZC4gVGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgIG5vdyBtb3Zl
cyB0aGUgVmVjdG9yIHJlc291cmNlcyBvdmVyIHRvIGEgb24taGVhcCBWZWN0b3Igb2JqZWN0IHRo
YXQgaXMKKyAgICAgICAgdGhlbiB3cmFwcGVkIGludG8gYSBHc3RCdWZmZXIgb2JqZWN0IGJ5IHVz
aW5nIHRoZQorICAgICAgICBnc3RfYnVmZmVyX25ld193cmFwcGVkX2Z1bGwoKSBBUEkgYW5kIHNw
ZWNpZnlpbmcgdGhlIGN1c3RvbSBkZWxldGVyLgorCisgICAgICAgIFRoZSBBVkZvdW5kYXRpb24g
aW1wbGVtZW50YXRpb24gb2YgU291cmNlQnVmZmVyUHJpdmF0ZSBpcyBvbmx5IHVwZGF0ZWQKKyAg
ICAgICAgdG8gcmVmbGVjdCB0aGUgY2hhbmdlcyBpbiB0aGUgaW50ZXJmYWNlLiBUaGUgVmVjdG9y
IGRhdGEgdGhhdCBpcyBwYXNzZWQKKyAgICAgICAgaW4gaXMgc3RpbGwgY29waWVkIGludG8gdGhl
IE5TRGF0YSBhbGxvY2F0aW9uLgorCisgICAgICAgIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIGlz
IGFsc28gdXBkYXRlZCwgd2l0aCB0aGUgYXBwZW5kIGRhdGEgc3RpbGwKKyAgICAgICAgYmVpbmcg
Y29waWVkIGludG8gdGhlIG1faW5wdXRCdWZmZXIgVmVjdG9yLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAtLSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVu
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZUNs
aWVudEdTdHJlYW1lck1TRTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6
OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmg6CisKIDIwMTctMTAtMTcgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIFdl
YkNvcmUgc291cmNlcyB0byB3b3JrIHdpdGggdW5pZmllZCBzb3VyY2UgYnVpbGRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggZDE2YTZjZTQ0NDg4ZDhlNWEzZGFiYzUzNGY2ZjU1YmU1MmM4MDc2YS4uYjQyYjllYzZlNDY5
YjgwNTFhNjY5YWFhOGNmODY1OGY4MjJiMTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNTU4LDcgKzU1OCwxMSBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3ByaXZhdGUtPmFwcGVuZChtX3BlbmRpbmdBcHBlbmREYXRh
LmRhdGEoKSwgbV9wZW5kaW5nQXBwZW5kRGF0YS5zaXplKCkpOworICAgIC8vIE1hbnVhbGx5IGNs
ZWFyIG91dCB0aGUgbV9wZW5kaW5nQXBwZW5kRGF0YSBWZWN0b3IsIGluIGNhc2UgdGhlIHBsYXRm
b3JtIGltcGxlbWVudGF0aW9uCisgICAgLy8gcmVqZWN0cyBhcHBlbmRpbmcgdGhlIGJ1ZmZlciBm
b3Igd2hhdGV2ZXIgcmVhc29uLgorICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gc2hv
dWxkIGd1YXJhbnRlZSB0aGUgbW92ZSBmcm9tIHRoaXMgVmVjdG9yLCBhbmQgd2Ugc2hvdWxkCisg
ICAgLy8gYXNzZXJ0IGhlcmUgdG8gY29uZmlybSB0aGF0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODAwMy4KKyAgICBtX3ByaXZhdGUtPmFwcGVuZChXVEZN
b3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpKTsKICAgICBtX3BlbmRpbmdBcHBlbmREYXRhLmNsZWFy
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCA3YWM1ZGQyNzViYWE1N2IwYWFlOGJlNTUwODc4NzZm
ZjExOTFlMGJiLi41Njg2ZTRiMWNlMTM4ZDBhZmZmNmQ4Y2M3YjlmZWExMTc1ODgzMmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQ
YXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJj
ZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCmluZGV4IGFjOWRhZmIzMTk0OTJmNjk5MDE4OTdkOWZjNTc2MTYyNzQ2MDc2
ODQuLjk1MDNjOWJiYjE3NDU2ZjI2MDQyYjUzNGQ3OTliNTQ5Yzc2YjRmYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAt
MTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92
ZXJyaWRlcwogICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBm
aW5hbDsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0
YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tCmluZGV4IDNiMWMxYWI3MjI4ZWQ5YWE1YjY0YTA3YmQ0NmQyY2VmOWVlYTUyNTQuLjZmMzBh
OTk2ODFhODE3MmQxMmM0ODAyNTkzYTg2Y2I4YTE4Y2I5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC02NjksMTEg
KzY2OSwxMiBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxEYXRhUGFyc2VyUXVldWUo
KQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4mJiBkYXRhKQogewotICAgIExPRyhNZWRpYVNvdXJjZSwgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmQoJXApIC0gZGF0YTolcCwgbGVuZ3RoOiVkIiwgdGhpcywgZGF0
YSwgbGVuZ3RoKTsKKyAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6YXBwZW5kKCVwKSAtIGRhdGE6JXAsIGxlbmd0aDolZCIsIHRoaXMsIGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmRhdGEgbGVuZ3RoOmxlbmd0aF0pOworICAg
IC8vIEZJWE1FOiBBdm9pZCB0aGUgZGF0YSBjb3B5IGJ5IHdyYXBwaW5nIGFyb3VuZCB0aGUgVmVj
dG9yPD4gb2JqZWN0LgorICAgIFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgp
XSk7CiAgICAgV2Vha1B0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gd2Vha1RoaXMgPSBt
X2FwcGVuZFdlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpOwogICAgIFJldGFpblB0cjxB
VlN0cmVhbURhdGFQYXJzZXI+IHBhcnNlciA9IG1fcGFyc2VyOwogICAgIFJldGFpblB0cjxXZWJB
VlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gZGVsZWdhdGUgPSBtX2RlbGVnYXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApp
bmRleCBjYjZkZmY1ZjE1MDQzNzUxM2Q1OWFmMTFmMGViZTYzNmFmMmY3ODczLi40YjBmNGUzNjk1
ZmZiNzVlZTdhNjAxYzdhNTY2YmY5NzhjMDVmMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVh
bWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhU291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmNwcApAQCAtMTI0LDExICsxMjQs
MTEgQEAgdm9pZCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6cmVzZXRQYXJzZXJTdGF0
ZShSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUcKICAgICBhcHBlbmRQaXBlbGluZS0+YWJvcnQo
KTsKIH0KIAotYm9vbCBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRTo6YXBwZW5kKFJlZlB0
cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPiBzb3VyY2VCdWZmZXJQcml2YXRlLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCitib29sIE1lZGlhU291cmNl
Q2xpZW50R1N0cmVhbWVyTVNFOjphcHBlbmQoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXI+IHNvdXJjZUJ1ZmZlclByaXZhdGUsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEp
CiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgR1NUX0RFQlVHKCJB
cHBlbmRpbmcgJXUgYnl0ZXMiLCBsZW5ndGgpOworICAgIEdTVF9ERUJVRygiQXBwZW5kaW5nICV1
IGJ5dGVzIiwgZGF0YS5zaXplKCkpOwogCiAgICAgaWYgKCFtX3BsYXllclByaXZhdGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNyw5ICsxMzcsMTQgQEAgYm9vbCBNZWRpYVNvdXJjZUNs
aWVudEdTdHJlYW1lck1TRTo6YXBwZW5kKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyPgogCiAgICAgQVNTRVJUKGFwcGVuZFBpcGVsaW5lKTsKIAotICAgIHZvaWQqIGJ1ZmZlckRh
dGEgPSBmYXN0TWFsbG9jKGxlbmd0aCk7Ci0gICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVm
ZmVyX25ld193cmFwcGVkX2Z1bGwoc3RhdGljX2Nhc3Q8R3N0TWVtb3J5RmxhZ3M+KDApLCBidWZm
ZXJEYXRhLCBsZW5ndGgsIDAsIGxlbmd0aCwgYnVmZmVyRGF0YSwgZmFzdEZyZWUpOwotICAgIGdz
dF9idWZmZXJfZmlsbChidWZmZXIsIDAsIGRhdGEsIGxlbmd0aCk7CisgICAgLy8gV3JhcCB0aGUg
d2hvbGUgVmVjdG9yIG9iamVjdCBpbiBjYXNlIHRoZSBkYXRhIGlzIHN0b3JlZCBpbiB0aGUgaW5s
aW5lZCBidWZmZXIuCisgICAgYXV0byogYnVmZmVyRGF0YSA9IGRhdGEuZGF0YSgpOworICAgIGF1
dG8gYnVmZmVyTGVuZ3RoID0gZGF0YS5zaXplKCk7CisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBn
c3RfYnVmZmVyX25ld193cmFwcGVkX2Z1bGwoc3RhdGljX2Nhc3Q8R3N0TWVtb3J5RmxhZ3M+KDAp
LCBidWZmZXJEYXRhLCBidWZmZXJMZW5ndGgsIDAsIGJ1ZmZlckxlbmd0aCwgbmV3IFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPihXVEZNb3ZlKGRhdGEpKSwKKyAgICAgICAgW10oZ3BvaW50ZXIgZGF0YSkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPio+KGRhdGEpOworICAgICAgICB9KTsKIAogICAgIHJldHVybiBhcHBlbmRQaXBlbGlu
ZS0+cHVzaE5ld0J1ZmZlcihidWZmZXIpID09IEdTVF9GTE9XX09LOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZUNsaWVudEdTdHJlYW1lck1TRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lck1TRS5oCmluZGV4IGRhNzk4
Y2ZiNzc3YzI3ZjBlZWRkODUxMTdmMjc3M2VlNTNlZjkwMGEuLjUxNjdkNWRmZmQ3NDczNDZhOTlm
MmM2MmQ1Y2E2M2MzMjFjMTIyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VDbGllbnRHU3RyZWFtZXJNU0UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlQ2xpZW50R1N0cmVhbWVyTVNFLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IC8vIEZyb20gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci4KICAgICB2b2lkIGFib3J0KFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPik7CiAgICAgdm9pZCByZXNldFBhcnNl
clN0YXRlKFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyPik7Ci0gICAgYm9vbCBh
cHBlbmQoUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI+LCBjb25zdCB1bnNpZ25l
ZCBjaGFyKiwgdW5zaWduZWQpOworICAgIGJvb2wgYXBwZW5kKFJlZlB0cjxTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyPiwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwogICAgIHZvaWQgcmVt
b3ZlZEZyb21NZWRpYVNvdXJjZShSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcj4p
OwogICAgIHZvaWQgZmx1c2goQXRvbWljU3RyaW5nKTsKICAgICB2b2lkIGVucXVldWVTYW1wbGUo
UmVmPE1lZGlhU2FtcGxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1
ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGU0YjEwN2Y3MGY1YzhjNjk4MTc0MTVlYmNh
NGQ2NTViM2FiNWVjMDcuLjY5YTI2NDU4ZTZmYjNmZmJkMTE1NjcxY2ZiZDI1YWFiNTQ5NTkzNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtNjYsMTQgKzY2LDE0IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJl
YW1lcjo6c2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIGNsaWVudCkKICAgICBt
X3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQgPSBjbGllbnQ7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lcjo6YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcjo6YXBwZW5k
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fbWVkaWFTb3Vy
Y2UpOwogCiAgICAgaWYgKCFtX3NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2NsaWVudC0+YXBwZW5kKHRoaXMsIGRhdGEsIGxlbmd0aCkpCisg
ICAgaWYgKG1fY2xpZW50LT5hcHBlbmQodGhpcywgV1RGTW92ZShkYXRhKSkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OlJlYWRTdHJlYW1G
YWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3Ry
ZWFtZXIuaAppbmRleCAzM2VkOTE0ZjkyNWIwNWFiYzg5YWY2NmFlMzAzYWI3YWE3ZjA3MzE1Li41
NTAyNmMxNzkyNGQyZWFhMjE3YjkyYjg2MzAzZDA0MDgyZTczZWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNl
ID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudCopIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNp
Z25lZCkgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUo
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggZTAzMWE5YjVkMjBkMTJhMWI5
NmUwZTExNmNlNGJhYTk1NGNmMDIyMi4uY2JiODJiNmZlYTlhODI0MjJiMzQ3MTU0OWY2NWQ5OWM4
OGFmMjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEz
OSw5ICsxMzksOSBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRDbGllbnQoU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogY2xpZW50KQogICAgIG1fY2xpZW50ID0gY2xpZW50Owog
fQogCi12b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiB7Ci0gICAgbV9pbnB1dEJ1
ZmZlci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2lucHV0QnVmZmVyLmFwcGVuZFZlY3Rv
cihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgcmVz
dWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kU3VjY2VlZGVkOwogCiAgICAg
d2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpBcHBlbmRTdWNjZWVkZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaAppbmRleCA0OTY1MDU1M2IwN2JlYWMwN2Y1MzEwZWY1ZTU2ZWY4MmM3MjBhMDYwLi5m
MzE4OTJiZTZlZDU0OGI1MWUyMTdiMjhkYzg5N2UyMjk3ZGU2MTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgYXBwZW5k
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7
CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJv
bU1lZGlhU291cmNlKCkgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>