<?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>185771</bug_id>
          
          <creation_ts>2018-05-18 10:25:01 -0700</creation_ts>
          <short_desc>[css-flexbox] WebKit mistakenly lets pointer events (click/hover/etc) pass through flex items, if they have negative margin</short_desc>
          <delta_ts>2020-06-29 05:15:14 -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>Layout and Rendering</component>
          <version>Safari 11</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>FromImplementor, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Holbert">dholbert</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1425165</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Holbert">dholbert</who>
    <bug_when>2018-05-18 10:25:01 -0700</bug_when>
    <thetext>What steps will reproduce the problem?
(1) Visit https://jsfiddle.net/1tf66qrn/
(2) Hover &amp; click the orange area

What is the expected result?
Hovers/clicks on the orange area **should not** trigger the covered-up link or cause the cursor to change.

What happens instead?
Clicks do trigger the link, and hovering does trigger the &quot;link&quot; mouse cursor.

This only seems to happen with flexbox, as far as I&apos;ve seen so far. If I rewrite the testcase to use side-by-side inline-blocks or floats (instead of flex items), then I get the correct/expected result.  Also, if I add a nondefault opacity or position:relative to the negative-margin div, then the issue goes away (it starts blocking click events like it should).

Edge 17 and Firefox 62 Nightly give &quot;expected results&quot;.
Safari 11.1 and Chrome 68 dev edition give the other &quot;what happens instead&quot; result.



I filed a Chrome/Blink bug for this as well, which is https://bugs.chromium.org/p/chromium/issues/detail?id=844505</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425200</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Holbert">dholbert</who>
    <bug_when>2018-05-18 11:29:36 -0700</bug_when>
    <thetext>For demonstration/comparison purposes, here are two tweaks I can make to the testcase, which make it no longer reproduce the problem:

 (1) add a nondefault opacity to the child with a negative margin:
https://jsfiddle.net/1tf66qrn/1/
 (position:relative has the same effect, too)

 (2) Make the children inline-blocks rather than flex items:
https://jsfiddle.net/1tf66qrn/2/

With either of those tweaks, Safari (and Chrome) will correctly make the orange div prevent mouse events from reaching the link that it&apos;s covering up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425720</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-21 11:14:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/40422555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638419</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-04-06 19:17:24 -0700</bug_when>
    <thetext>The Chrome fix from  https://crbug.com/844505 added two WPT tests:

https://wpt.live/css/css-flexbox/hittest-overlapping-margin.html
https://wpt.live/css/css-flexbox/hittest-overlapping-relative.html

The first one fails on WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638421</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-04-06 19:19:24 -0700</bug_when>
    <thetext>Also https://wpt.live/css/css-flexbox/hittest-overlapping-order.html which also fails</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660722</commentid>
    <comment_count>5</comment_count>
      <attachid>401448</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-09 10:05:09 -0700</bug_when>
    <thetext>Created attachment 401448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660844</commentid>
    <comment_count>6</comment_count>
      <attachid>401448</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2020-06-09 13:58:32 -0700</bug_when>
    <thetext>Comment on attachment 401448
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        This is because painting of flexbox children is done in order modified document order instead of raw document order.

Don&apos;t we have the very same issue in Grid Layout?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:258
&gt; +bool RenderFlexibleBox::hitTestChildren(const HitTestRequest&amp; request, HitTestResult&amp; result, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; adjustedLocation, HitTestAction hitTestAction)

In theory this method was going to be similar to the one but it has a bunch of differences, could you elaborate on them?

Also what happens with positioned or floated children, do they work as expected regarding hit testing or do they might cause problems too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660861</commentid>
    <comment_count>7</comment_count>
      <attachid>401448</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2020-06-09 14:15:15 -0700</bug_when>
    <thetext>Comment on attachment 401448
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:264
&gt; +    if (hasOverflowClip())

Did you consider using ternary operator to save an assignment ?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:909
&gt; +        m_reversedOrderIteratorForHitTesting.append(child);

Couldn&apos;t we insert the new items at the head of the Vector and avoid the reverse() call later ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661103</commentid>
    <comment_count>8</comment_count>
      <attachid>401448</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-10 01:11:53 -0700</bug_when>
    <thetext>Comment on attachment 401448
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        This is because painting of flexbox children is done in order modified document order instead of raw document order.
&gt; 
&gt; Don&apos;t we have the very same issue in Grid Layout?

Very likely yes

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:258
&gt;&gt; +bool RenderFlexibleBox::hitTestChildren(const HitTestRequest&amp; request, HitTestResult&amp; result, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; adjustedLocation, HitTestAction hitTestAction)
&gt; 
&gt; In theory this method was going to be similar to the one but it has a bunch of differences, could you elaborate on them?
&gt; 
&gt; Also what happens with positioned or floated children, do they work as expected regarding hit testing or do they might cause problems too?

Hmm I should have expressed myself badly. The RenderBlock::hitTestChildren() is the one that is equal to the original implementation, I just moved it around. The one in RenderFlexibleBox is just iterating over the flex items and performing a hit test.

Regarding float items, the spec (https://www.w3.org/TR/css-flexbox-1/#painting) does only talk about flex items so I guess there is nothing that should be done specifically for them.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:264
&gt;&gt; +    if (hasOverflowClip())
&gt; 
&gt; Did you consider using ternary operator to save an assignment ?

OK, I&apos;ll change it.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:909
&gt;&gt; +        m_reversedOrderIteratorForHitTesting.append(child);
&gt; 
&gt; Couldn&apos;t we insert the new items at the head of the Vector and avoid the reverse() call later ?

Vector only has append() not prepend(). It&apos;s true that we still have insert(position,data,size) but it looked a bit convoluted to me, and AFAIK it&apos;s hardly ever used in the code base.

I think it&apos;s because append() + reverse() is in general more efficient than prepend() because the latter implies moving around all the data on every insertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661107</commentid>
    <comment_count>9</comment_count>
      <attachid>401520</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-10 01:53:11 -0700</bug_when>
    <thetext>Created attachment 401520
Patch

Applied suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662577</commentid>
    <comment_count>10</comment_count>
      <attachid>401448</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2020-06-15 01:34:00 -0700</bug_when>
    <thetext>Comment on attachment 401448
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:909
&gt;&gt;&gt; +        m_reversedOrderIteratorForHitTesting.append(child);
&gt;&gt; 
&gt;&gt; Couldn&apos;t we insert the new items at the head of the Vector and avoid the reverse() call later ?
&gt; 
&gt; Vector only has append() not prepend(). It&apos;s true that we still have insert(position,data,size) but it looked a bit convoluted to me, and AFAIK it&apos;s hardly ever used in the code base.
&gt; 
&gt; I think it&apos;s because append() + reverse() is in general more efficient than prepend() because the latter implies moving around all the data on every insertion.

Sure, I was thinking on using a list; but it&apos;s rather an usual pattern in the Rendering code and probably not worth the effort in this case.

Sorry if I&apos;m not understanding completely the purpose of this new reverse iterator, but since you are just adding the items in the same order than in the current m_orderIterator, and then just reversing the elements&apos; position, I wonder if this reverse operation can be avoided somehow. Can&apos;t we just use a revere iterator when accessing this new vector ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667066</commentid>
    <comment_count>11</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-06-29 05:15:14 -0700</bug_when>
    <thetext>Committed r263659: &lt;https://trac.webkit.org/changeset/263659&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401448</attachid>
            <date>2020-06-09 10:05:09 -0700</date>
            <delta_ts>2020-06-10 01:53:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185771-20200609190508.patch</filename>
            <type>text/plain</type>
            <size>13425</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdiNjgxYWY1ZWUzMjY2
YjdlMmJjZGIxNTRlY2FlYTM3NDQ5YWMwMS4uY2E4MmE5NTRhMTQzYjkzZjE3MTI2MTE2YTVjZGQ2
ZmQ2NzI2MzYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA2LTA5ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gV2ViS2l0IG1pc3Rha2VubHkgbGV0cyBwb2ludGVyIGV2ZW50cyAoY2xpY2svaG92ZXIv
ZXRjKSBwYXNzIHRocm91Z2ggZmxleCBpdGVtcywgaWYgdGhleSBoYXZlIG5lZ2F0aXZlIG1hcmdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Nzcx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBt
dWx0aXBsZSBjaGlsZCBlbGVtZW50cyBvZiBhIGZsZXhib3ggb3ZlcmxhcCAoZm9yIGV4YW1wbGUs
IGR1ZSB0byBuZWdhdGl2ZSBtYXJnaW5zKSwgdGhlIGVsZW1lbnQgZHJhd24gaW4gdGhlCisgICAg
ICAgIGZvcmVncm91bmQgbWF5IG5vdCBhY3R1YWxseSBjYXB0dXJlIHRoZSBoaXQgaWYgdGhlIGVs
ZW1lbnQgdW5kZXJuZWF0aCBpdCBpcyBoaXQtdGVzdGVkIGRlc3BpdGUgYmVpbmcgb2NjbHVkZWQu
CisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBwYWludGluZyBvZiBmbGV4Ym94IGNoaWxkcmVuIGlz
IGRvbmUgaW4gb3JkZXIgbW9kaWZpZWQgZG9jdW1lbnQgb3JkZXIgaW5zdGVhZCBvZiByYXcgZG9j
dW1lbnQgb3JkZXIuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGlzIHdlIHNob3Vs
ZCBpbnNwZWN0IGZsZXggaXRlbXMgaW4gcmV2ZXJzZSBvcmRlciBtb2RpZmllZCBkb2N1bWVudCBv
cmRlci4gQXMgdGhlIE9yZGVySXRlcmF0b3IKKyAgICAgICAgY2Fubm90IGdvIGJhY2t3YXJkcywg
d2UgY2FjaGUgdGhlIHJldmVyc2Ugb3JkZXIgb2YgaXRlbXMgd2hlbiBkb2luZyB0aGUgbGF5b3V0
IGluIG9yZGVyIHRvIGhhdmUgZmFzdCBoaXQgdGVzdGluZyBpbgorICAgICAgICBmbGV4Ym94IGNv
bnRhaW5lcnMuCisKKyAgICAgICAgQXMgdGhpcyBiZWhhdmlvdXIgaXMgZGlmZmVyZW50IHRvIHRo
ZSBvbmUgaW1wbGVtZW50ZWQgaW4gUmVuZGVyQmxvY2sgYSBuZXcgdmlydHVhbCBtZXRob2QgdG8g
cGVyZm9ybSBoaXQgdGVzdGluZyBvZiBjaGlsZHJlbgorICAgICAgICB3YXMgZXh0cmFjdGVkIGZy
b20gUmVuZGVyQmxvY2s6bm9kZUF0UG9pbnQoKSB0byBhIG5ldyBtZXRob2QgY2FsbGVkIFJlbmRl
ckJsb2NrOjpoaXRUZXN0Q2hpbGRyZW4uIFRoZSBSZW5kZXJCbG9jayAKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50IG9uZSBidXQgZmxleGJveCBjb250
YWluZXJzIG92ZXJ3cml0ZSBpdC4KKworICAgICAgICBUd28gV1BUIGZsZXhib3ggaGl0dGVzdHMg
YXJlIHBhc3Npbmcgbm93IHRoYW5rcyB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoaXRU
ZXN0Q2hpbGRyZW4pOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IHZpcnR1YWwgbWV0aG9kIGV4
dHJhY3RlZCBmcm9tIG5vZGVBdFBvaW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
Om5vZGVBdFBvaW50KTogTW92ZWQgY29kZSB0byBoaXQgdGVzdCBjaGlsZHJlbiB0byBoaXRUZXN0
Q2hpbGRyZW4oKQorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOiBBZGRlZCBoaXRU
ZXN0Q2hpbGRyZW4gbmV3IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
aGl0VGVzdENoaWxkcmVuKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKTogQ2FjaGUgdGhlIHJldmVyc2Ugb2YgdGhlIG9y
ZGVyIGl0ZXJhdG9yIHRvIGJlIHVzZWQgYnkgaGl0IHRlc3RpbmcuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6IEFkZGVkIGhpdFRlc3RDaGlsZHJlbi4KKwogMjAyMC0w
Ni0wOSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtFTUVdIENETVByb3h5SW5zdGFuY2Ugc2hvdWxkIG5vdCBrZWVwIENETUluc3RhbmNl
U2Vzc2lvbnMgaGFyZCByZWZlcmVuY2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCBmNWY0ZTM2YWQzZWQ2ZWNjNmQwZmI3OGI0YTcxNmVhZTgzYzg0N2RmLi4z
NzNjNzk2NzYyYzZjNzAxNzA1NGI2MzVlMWZiNjc2MTk2YWVhYWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIwMDMsMTAgKzIwMDMsMjUgQEAgTm9kZSog
UmVuZGVyQmxvY2s6Om5vZGVGb3JIaXRUZXN0KCkgY29uc3QKICAgICByZXR1cm4gY29udGludWF0
aW9uKCkgPyBjb250aW51YXRpb24oKS0+ZWxlbWVudCgpIDogZWxlbWVudCgpOwogfQogCitib29s
IFJlbmRlckJsb2NrOjpoaXRUZXN0Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWRqdXN0ZWRMb2NhdGlvbiwgSGl0VGVz
dEFjdGlvbiBoaXRUZXN0QWN0aW9uKQoreworICAgIC8vIEhpdCB0ZXN0IGRlc2NlbmRhbnRzIGZp
cnN0LgorICAgIGNvbnN0IExheW91dFNpemUgbG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRq
dXN0ZWRMb2NhdGlvbik7CisgICAgY29uc3QgTGF5b3V0U2l6ZSBzY3JvbGxlZE9mZnNldChsb2Nh
bE9mZnNldCAtIHRvTGF5b3V0U2l6ZShzY3JvbGxQb3NpdGlvbigpKSk7CisKKyAgICBpZiAoaGl0
VGVzdEFjdGlvbiA9PSBIaXRUZXN0RmxvYXQgJiYgaGl0VGVzdEZsb2F0cyhyZXF1ZXN0LCByZXN1
bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIHRvTGF5b3V0UG9pbnQoc2Nyb2xsZWRPZmZzZXQpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCBy
ZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIHRvTGF5b3V0UG9pbnQoc2Nyb2xsZWRPZmZzZXQp
LCBoaXRUZXN0QWN0aW9uKSkgeworICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwg
ZmxpcEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIGxvY2FsT2Zm
c2V0KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRM
b2NhdGlvbihhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCkpOwotICAgIExheW91dFNpemUg
bG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRqdXN0ZWRMb2NhdGlvbik7CisgICAgY29uc3Qg
TGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbihhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9u
KCkpOworICAgIGNvbnN0IExheW91dFNpemUgbG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRq
dXN0ZWRMb2NhdGlvbik7CiAKICAgICBpZiAoIWlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgIC8v
IENoZWNrIGlmIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgYXQgYWxsLgpAQCAtMjA1NCwxNyArMjA2
OSw4IEBAIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1CiAgICAgYm9vbCB1c2VPdmVyZmxvd0NsaXAg
PSBoYXNPdmVyZmxvd0NsaXAoKSAmJiAhaGFzU2VsZlBhaW50aW5nTGF5ZXIoKTsKICAgICBib29s
IHVzZUNsaXAgPSAoaGFzQ29udHJvbENsaXAoKSB8fCB1c2VPdmVyZmxvd0NsaXApOwogICAgIGJv
b2wgY2hlY2tDaGlsZHJlbiA9ICF1c2VDbGlwIHx8IChoYXNDb250cm9sQ2xpcCgpID8gbG9jYXRp
b25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKGNvbnRyb2xDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9u
KSkgOiBsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMob3ZlcmZsb3dDbGlwUmVjdChhZGp1
c3RlZExvY2F0aW9uLCBudWxscHRyLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpKSk7Ci0g
ICAgaWYgKGNoZWNrQ2hpbGRyZW4pIHsKLSAgICAgICAgLy8gSGl0IHRlc3QgZGVzY2VuZGFudHMg
Zmlyc3QuCi0gICAgICAgIExheW91dFNpemUgc2Nyb2xsZWRPZmZzZXQobG9jYWxPZmZzZXQgLSB0
b0xheW91dFNpemUoc2Nyb2xsUG9zaXRpb24oKSkpOwotCi0gICAgICAgIGlmIChoaXRUZXN0QWN0
aW9uID09IEhpdFRlc3RGbG9hdCAmJiBoaXRUZXN0RmxvYXRzKHJlcXVlc3QsIHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgdG9MYXlvdXRQb2ludChzY3JvbGxlZE9mZnNldCkpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwg
cmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCB0b0xheW91dFBvaW50KHNjcm9sbGVkT2Zmc2V0
KSwgaGl0VGVzdEFjdGlvbikpIHsKLSAgICAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCBmbGlwRm9yV3JpdGluZ01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gbG9j
YWxPZmZzZXQpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGlmIChjaGVja0NoaWxkcmVuICYmIGhpdFRlc3RDaGlsZHJlbihyZXF1ZXN0LCByZXN1bHQs
IGxvY2F0aW9uSW5Db250YWluZXIsIGFkanVzdGVkTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24pKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghY2hlY2tDaGlsZHJlbiAmJiBoaXRUZXN0
RXhjbHVkZWRDaGlsZHJlbkluQm9yZGVyKHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRh
aW5lciwgYWRqdXN0ZWRMb2NhdGlvbiwgaGl0VGVzdEFjdGlvbikpCiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA0NTM2ZjY1Zjkz
ZGExMTdiNWJiZGIzODY2ZDdlNjU0Yjk4YThiYzM1Li41NjgyMGNkODhhYWFmYmUwNGVjYjIwODQy
OGIyMDI4NjZiNTdmMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtNDUyLDYgKzQ1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhpdFRlc3RDb250
ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiAgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1v
dmUgdmlydHVhbGl6YXRpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJs
b2NrRmxvdwogICAgIHZpcnR1YWwgYm9vbCBoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91
dFBvaW50JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdENoaWxk
cmVuKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVk
TG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBoaXRUZXN0SW5saW5l
Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgaGl0VGVzdEV4Y2x1ZGVkQ2hpbGRyZW5JbkJvcmRlcihjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgSGl0VGVzdEFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCmluZGV4IDk4M2NiYTI3ODE5ZDg0YTlmMGE0YTlhMjJhZWNmMDNiZjJh
ZDlmNjcuLjAzMjljZmMwZDMwMTg1MGEyODU0Njk1NTA3YmQ1MWQ2ZGFhZDU0OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCiAKICNpbmNsdWRlICJGbGV4
aWJsZUJveEFsZ29yaXRobS5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTI1NCw2ICsyNTUsMjggQEAgdm9pZCBSZW5kZXJG
bGV4aWJsZUJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKgogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aGl0VGVzdENo
aWxkcmVuKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikK
K3sKKyAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgTGF5b3V0UG9pbnQgc2Nyb2xsZWRPZmZzZXQgPSBhZGp1c3Rl
ZExvY2F0aW9uOworICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKKyAgICAgICAgc2Nyb2xsZWRP
ZmZzZXQgLT0gdG9MYXlvdXRTaXplKHNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgZm9yIChhdXRv
KiBjaGlsZCA6IG1fcmV2ZXJzZWRPcmRlckl0ZXJhdG9yRm9ySGl0VGVzdGluZykgeworICAgICAg
ICBpZiAoY2hpbGQtPmhhc1NlbGZQYWludGluZ0xheWVyKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgYXV0byBjaGlsZFBvaW50ID0gZmxpcEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQo
Y2hpbGQsIHNjcm9sbGVkT2Zmc2V0KTsKKyAgICAgICAgaWYgKGNoaWxkLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCkpIHsKKyAgICAgICAg
ICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBmbGlwRm9yV3JpdGluZ01vZGUodG9MYXlv
dXRQb2ludChsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSBhZGp1c3RlZExvY2F0aW9uKSkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQo
KSk7CkBAIC04NzIsNyArODk1LDkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0Rmxl
eEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAvLyBTZXQgdXAgb3VyIG1hc3RlciBs
aXN0IG9mIGZsZXggaXRlbXMuIEFsbCBvZiB0aGUgcmVzdCBvZiB0aGUgYWxnb3JpdGhtCiAgICAg
Ly8gc2hvdWxkIHdvcmsgb2ZmIHRoaXMgbGlzdCBvZiBhIHN1YnNldC4KICAgICAvLyBUT0RPKGNi
aWVzaW5nZXIpOiBUaGF0IHNlY29uZCBwYXJ0IGlzIG5vdCB5ZXQgdHJ1ZS4KKyAgICAvLyBBbHNv
IGluaXRpYWxpemUgdGhlIHJldmVyc2VkIG9yZGVyIGl0ZXJhdG9yIHRoYXQgd291bGQgYmUgZXZl
bnR1YWxseSB1c2VkIGZvciBoaXQgdGVzdGluZy4KICAgICBWZWN0b3I8RmxleEl0ZW0+IGFsbEl0
ZW1zOworICAgIG1fcmV2ZXJzZWRPcmRlckl0ZXJhdG9yRm9ySGl0VGVzdGluZy5jbGVhcigpOwog
ICAgIG1fb3JkZXJJdGVyYXRvci5maXJzdCgpOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9
IG1fb3JkZXJJdGVyYXRvci5jdXJyZW50Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0
ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAobV9vcmRlckl0ZXJhdG9yLnNob3VsZFNraXBD
aGlsZCgqY2hpbGQpKSB7CkBAIC04ODEsOCArOTA2LDEwIEBAIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmxheW91dEZsZXhJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAg
ICAgcHJlcGFyZUNoaWxkRm9yUG9zaXRpb25lZExheW91dCgqY2hpbGQpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KKyAgICAgICAgbV9yZXZlcnNlZE9yZGVySXRlcmF0b3JGb3JI
aXRUZXN0aW5nLmFwcGVuZChjaGlsZCk7CiAgICAgICAgIGFsbEl0ZW1zLmFwcGVuZChjb25zdHJ1
Y3RGbGV4SXRlbSgqY2hpbGQsIHJlbGF5b3V0Q2hpbGRyZW4pKTsKICAgICB9CisgICAgbV9yZXZl
cnNlZE9yZGVySXRlcmF0b3JGb3JIaXRUZXN0aW5nLnJldmVyc2UoKTsKICAgICAKICAgICBjb25z
dCBMYXlvdXRVbml0IGxpbmVCcmVha0xlbmd0aCA9IG1haW5BeGlzQ29udGVudEV4dGVudChMYXlv
dXRVbml0OjptYXgoKSk7CiAgICAgRmxleExheW91dEFsZ29yaXRobSBmbGV4QWxnb3JpdGhtKHN0
eWxlKCksIGxpbmVCcmVha0xlbmd0aCwgYWxsSXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCBmNzBkZTllZWRkM2JmNDg3Y2MxNDA2NmYy
YzdiZGUwZjA0ZTc0YjkwLi4xNWFmYmI3M2E4N2VmNjU3Njc4MDM0YTFjZDUyM2M5MWQ2Nzg3ZGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAt
NTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwor
ICAgIGJvb2wgaGl0VGVzdENoaWxkcmVuKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBvaW50JiBhZGp1c3Rl
ZExvY2F0aW9uLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q2hpbGRy
ZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9y
Q2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNIb3Jpem9u
dGFsRmxvdygpIGNvbnN0OwpAQCAtMjA4LDYgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNl
dDxjb25zdCBSZW5kZXJCb3gqPiBtX3JlbGFpZE91dENoaWxkcmVuOwogICAgIAogICAgIG11dGFi
bGUgT3JkZXJJdGVyYXRvciBtX29yZGVySXRlcmF0b3IgeyAqdGhpcyB9OworICAgIFZlY3RvcjxS
ZW5kZXJCb3gqPiBtX3JldmVyc2VkT3JkZXJJdGVyYXRvckZvckhpdFRlc3Rpbmc7CiAgICAgaW50
IG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lIHsgLTEgfTsKICAgICAKICAgICAv
LyBUaGlzIGlzIFNpemVJc1Vua25vd24gb3V0c2lkZSBvZiBsYXlvdXRCbG9jaygpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA5Y2RkYzlkZTVlOTI3ZDg4ZjFlNDZiMWJhNjMyODRk
YzkyZWY0N2FlLi5iODNiNTRlNWQxODNmNjQyYmY0YjUxNTA2YzIyNDJiYWM3ZDJmMThiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNi0wOSAg
U2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbY3Nz
LWZsZXhib3hdIFdlYktpdCBtaXN0YWtlbmx5IGxldHMgcG9pbnRlciBldmVudHMgKGNsaWNrL2hv
dmVyL2V0YykgcGFzcyB0aHJvdWdoIGZsZXggaXRlbXMsIGlmIHRoZXkgaGF2ZSBuZWdhdGl2ZSBt
YXJnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NTc3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW1h
cmdpbi1leHBlY3RlZC50eHQ6IFJlcGxhY2VkIEZBSUwgYnkgUEFTUyBleHBlY3RhdGlvbi4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2hpdHRlc3Qtb3Zlcmxh
cHBpbmctb3JkZXItZXhwZWN0ZWQudHh0OiBEaXR0by4KKwogMjAyMC0wNi0wOCAgUm9iIEJ1aXMg
IDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFhNTEhUVFBSZXF1ZXN0LnNlbmQgc2hvdWxk
IG5vdCBzZW5kIENvbnRlbnQtVHlwZSBoZWFkZXJzIHdoZW4gQmxvYiBoYXMgbm8gdHlwZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWZsZXhib3gvaGl0dGVzdC1vdmVybGFwcGluZy1tYXJnaW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gv
aGl0dGVzdC1vdmVybGFwcGluZy1tYXJnaW4tZXhwZWN0ZWQudHh0CmluZGV4IGY5YTU1NTc5ZjM2
OGM5ZmU3MGNiYTk2ZGJhYmU2NzBlNzI0ZDJmOGQuLjE5ODUyM2NkN2RjYTY2MWE3ZTk5NzM3NWMw
MjQ3MGYyOWNmMmEwMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2hpdHRlc3Qtb3ZlcmxhcHBpbmctbWFyZ2lu
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW1hcmdpbi1leHBlY3Rl
ZC50eHQKQEAgLTEsNCArMSw0IEBACiBmb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29m
b29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb28KIAotRkFJ
TCBGbGV4Ym94ZXMgc2hvdWxkIHBlcmZvcm0gaGl0IHRlc3RpbmcgaW4gcmV2ZXJzZSBwYWludCBv
cmRlciBmb3Igb3ZlcmxhcHBpbmcgZWxlbWVudHM6IG5lZ2F0aXZlIG1hcmdpbiBjYXNlIChjcmJ1
Zy5jb20vODQ0NTA1KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRElWIiBidXQgZ290ICJBIgor
UEFTUyBGbGV4Ym94ZXMgc2hvdWxkIHBlcmZvcm0gaGl0IHRlc3RpbmcgaW4gcmV2ZXJzZSBwYWlu
dCBvcmRlciBmb3Igb3ZlcmxhcHBpbmcgZWxlbWVudHM6IG5lZ2F0aXZlIG1hcmdpbiBjYXNlIChj
cmJ1Zy5jb20vODQ0NTA1KSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvaGl0dGVzdC1vdmVybGFwcGluZy1v
cmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW9yZGVyLWV4cGVjdGVk
LnR4dAppbmRleCA3MDE3YTIyNTc4ZThhZThiMDQzMzNkMWQ0MWM3ZmVjZjRhMWNjNDljLi4wNTJi
MWNjM2JhNDA4Y2EzYjY1NGZjMTBlZTI2YzFiYjcyNjE3ZThlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0
ZXN0LW92ZXJsYXBwaW5nLW9yZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJs
YXBwaW5nLW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIGZvb2Zvb2Zvb2Zvb2Zv
b2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zv
b2Zvb2Zvb2Zvb2ZvbwogCi1GQUlMIEZsZXhib3hlcyBzaG91bGQgcGVyZm9ybSBoaXQgdGVzdGlu
ZyBpbiByZXZlcnNlIHBhaW50IG9yZGVyIGZvciBvdmVybGFwcGluZyBlbGVtZW50czogZmxleCBv
cmRlciBjYXNlIChjcmJ1Zy5jb20vODQ0NTA1KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRElW
IiBidXQgZ290ICJBIgorUEFTUyBGbGV4Ym94ZXMgc2hvdWxkIHBlcmZvcm0gaGl0IHRlc3Rpbmcg
aW4gcmV2ZXJzZSBwYWludCBvcmRlciBmb3Igb3ZlcmxhcHBpbmcgZWxlbWVudHM6IGZsZXggb3Jk
ZXIgY2FzZSAoY3JidWcuY29tLzg0NDUwNSkgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401520</attachid>
            <date>2020-06-10 01:53:11 -0700</date>
            <delta_ts>2020-06-10 04:28:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185771-20200610105309.patch</filename>
            <type>text/plain</type>
            <size>13410</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdiNjgxYWY1ZWUzMjY2
YjdlMmJjZGIxNTRlY2FlYTM3NDQ5YWMwMS4uY2E4MmE5NTRhMTQzYjkzZjE3MTI2MTE2YTVjZGQ2
ZmQ2NzI2MzYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA2LTA5ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gV2ViS2l0IG1pc3Rha2VubHkgbGV0cyBwb2ludGVyIGV2ZW50cyAoY2xpY2svaG92ZXIv
ZXRjKSBwYXNzIHRocm91Z2ggZmxleCBpdGVtcywgaWYgdGhleSBoYXZlIG5lZ2F0aXZlIG1hcmdp
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Nzcx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBt
dWx0aXBsZSBjaGlsZCBlbGVtZW50cyBvZiBhIGZsZXhib3ggb3ZlcmxhcCAoZm9yIGV4YW1wbGUs
IGR1ZSB0byBuZWdhdGl2ZSBtYXJnaW5zKSwgdGhlIGVsZW1lbnQgZHJhd24gaW4gdGhlCisgICAg
ICAgIGZvcmVncm91bmQgbWF5IG5vdCBhY3R1YWxseSBjYXB0dXJlIHRoZSBoaXQgaWYgdGhlIGVs
ZW1lbnQgdW5kZXJuZWF0aCBpdCBpcyBoaXQtdGVzdGVkIGRlc3BpdGUgYmVpbmcgb2NjbHVkZWQu
CisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBwYWludGluZyBvZiBmbGV4Ym94IGNoaWxkcmVuIGlz
IGRvbmUgaW4gb3JkZXIgbW9kaWZpZWQgZG9jdW1lbnQgb3JkZXIgaW5zdGVhZCBvZiByYXcgZG9j
dW1lbnQgb3JkZXIuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGlzIHdlIHNob3Vs
ZCBpbnNwZWN0IGZsZXggaXRlbXMgaW4gcmV2ZXJzZSBvcmRlciBtb2RpZmllZCBkb2N1bWVudCBv
cmRlci4gQXMgdGhlIE9yZGVySXRlcmF0b3IKKyAgICAgICAgY2Fubm90IGdvIGJhY2t3YXJkcywg
d2UgY2FjaGUgdGhlIHJldmVyc2Ugb3JkZXIgb2YgaXRlbXMgd2hlbiBkb2luZyB0aGUgbGF5b3V0
IGluIG9yZGVyIHRvIGhhdmUgZmFzdCBoaXQgdGVzdGluZyBpbgorICAgICAgICBmbGV4Ym94IGNv
bnRhaW5lcnMuCisKKyAgICAgICAgQXMgdGhpcyBiZWhhdmlvdXIgaXMgZGlmZmVyZW50IHRvIHRo
ZSBvbmUgaW1wbGVtZW50ZWQgaW4gUmVuZGVyQmxvY2sgYSBuZXcgdmlydHVhbCBtZXRob2QgdG8g
cGVyZm9ybSBoaXQgdGVzdGluZyBvZiBjaGlsZHJlbgorICAgICAgICB3YXMgZXh0cmFjdGVkIGZy
b20gUmVuZGVyQmxvY2s6bm9kZUF0UG9pbnQoKSB0byBhIG5ldyBtZXRob2QgY2FsbGVkIFJlbmRl
ckJsb2NrOjpoaXRUZXN0Q2hpbGRyZW4uIFRoZSBSZW5kZXJCbG9jayAKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50IG9uZSBidXQgZmxleGJveCBjb250
YWluZXJzIG92ZXJ3cml0ZSBpdC4KKworICAgICAgICBUd28gV1BUIGZsZXhib3ggaGl0dGVzdHMg
YXJlIHBhc3Npbmcgbm93IHRoYW5rcyB0byB0aGlzIHBhdGNoLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpoaXRU
ZXN0Q2hpbGRyZW4pOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IHZpcnR1YWwgbWV0aG9kIGV4
dHJhY3RlZCBmcm9tIG5vZGVBdFBvaW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
Om5vZGVBdFBvaW50KTogTW92ZWQgY29kZSB0byBoaXQgdGVzdCBjaGlsZHJlbiB0byBoaXRUZXN0
Q2hpbGRyZW4oKQorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOiBBZGRlZCBoaXRU
ZXN0Q2hpbGRyZW4gbmV3IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
aGl0VGVzdENoaWxkcmVuKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKTogQ2FjaGUgdGhlIHJldmVyc2Ugb2YgdGhlIG9y
ZGVyIGl0ZXJhdG9yIHRvIGJlIHVzZWQgYnkgaGl0IHRlc3RpbmcuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6IEFkZGVkIGhpdFRlc3RDaGlsZHJlbi4KKwogMjAyMC0w
Ni0wOSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtFTUVdIENETVByb3h5SW5zdGFuY2Ugc2hvdWxkIG5vdCBrZWVwIENETUluc3RhbmNl
U2Vzc2lvbnMgaGFyZCByZWZlcmVuY2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCBmNWY0ZTM2YWQzZWQ2ZWNjNmQwZmI3OGI0YTcxNmVhZTgzYzg0N2RmLi4z
NzNjNzk2NzYyYzZjNzAxNzA1NGI2MzVlMWZiNjc2MTk2YWVhYWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIwMDMsMTAgKzIwMDMsMjUgQEAgTm9kZSog
UmVuZGVyQmxvY2s6Om5vZGVGb3JIaXRUZXN0KCkgY29uc3QKICAgICByZXR1cm4gY29udGludWF0
aW9uKCkgPyBjb250aW51YXRpb24oKS0+ZWxlbWVudCgpIDogZWxlbWVudCgpOwogfQogCitib29s
IFJlbmRlckJsb2NrOjpoaXRUZXN0Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWRqdXN0ZWRMb2NhdGlvbiwgSGl0VGVz
dEFjdGlvbiBoaXRUZXN0QWN0aW9uKQoreworICAgIC8vIEhpdCB0ZXN0IGRlc2NlbmRhbnRzIGZp
cnN0LgorICAgIGNvbnN0IExheW91dFNpemUgbG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRq
dXN0ZWRMb2NhdGlvbik7CisgICAgY29uc3QgTGF5b3V0U2l6ZSBzY3JvbGxlZE9mZnNldChsb2Nh
bE9mZnNldCAtIHRvTGF5b3V0U2l6ZShzY3JvbGxQb3NpdGlvbigpKSk7CisKKyAgICBpZiAoaGl0
VGVzdEFjdGlvbiA9PSBIaXRUZXN0RmxvYXQgJiYgaGl0VGVzdEZsb2F0cyhyZXF1ZXN0LCByZXN1
bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIHRvTGF5b3V0UG9pbnQoc2Nyb2xsZWRPZmZzZXQpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCBy
ZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIHRvTGF5b3V0UG9pbnQoc2Nyb2xsZWRPZmZzZXQp
LCBoaXRUZXN0QWN0aW9uKSkgeworICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwg
ZmxpcEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIGxvY2FsT2Zm
c2V0KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRM
b2NhdGlvbihhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCkpOwotICAgIExheW91dFNpemUg
bG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRqdXN0ZWRMb2NhdGlvbik7CisgICAgY29uc3Qg
TGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbihhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9u
KCkpOworICAgIGNvbnN0IExheW91dFNpemUgbG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRq
dXN0ZWRMb2NhdGlvbik7CiAKICAgICBpZiAoIWlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgIC8v
IENoZWNrIGlmIHdlIG5lZWQgdG8gZG8gYW55dGhpbmcgYXQgYWxsLgpAQCAtMjA1NCwxNyArMjA2
OSw4IEBAIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1CiAgICAgYm9vbCB1c2VPdmVyZmxvd0NsaXAg
PSBoYXNPdmVyZmxvd0NsaXAoKSAmJiAhaGFzU2VsZlBhaW50aW5nTGF5ZXIoKTsKICAgICBib29s
IHVzZUNsaXAgPSAoaGFzQ29udHJvbENsaXAoKSB8fCB1c2VPdmVyZmxvd0NsaXApOwogICAgIGJv
b2wgY2hlY2tDaGlsZHJlbiA9ICF1c2VDbGlwIHx8IChoYXNDb250cm9sQ2xpcCgpID8gbG9jYXRp
b25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKGNvbnRyb2xDbGlwUmVjdChhZGp1c3RlZExvY2F0aW9u
KSkgOiBsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMob3ZlcmZsb3dDbGlwUmVjdChhZGp1
c3RlZExvY2F0aW9uLCBudWxscHRyLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUpKSk7Ci0g
ICAgaWYgKGNoZWNrQ2hpbGRyZW4pIHsKLSAgICAgICAgLy8gSGl0IHRlc3QgZGVzY2VuZGFudHMg
Zmlyc3QuCi0gICAgICAgIExheW91dFNpemUgc2Nyb2xsZWRPZmZzZXQobG9jYWxPZmZzZXQgLSB0
b0xheW91dFNpemUoc2Nyb2xsUG9zaXRpb24oKSkpOwotCi0gICAgICAgIGlmIChoaXRUZXN0QWN0
aW9uID09IEhpdFRlc3RGbG9hdCAmJiBoaXRUZXN0RmxvYXRzKHJlcXVlc3QsIHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgdG9MYXlvdXRQb2ludChzY3JvbGxlZE9mZnNldCkpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwg
cmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCB0b0xheW91dFBvaW50KHNjcm9sbGVkT2Zmc2V0
KSwgaGl0VGVzdEFjdGlvbikpIHsKLSAgICAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCBmbGlwRm9yV3JpdGluZ01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gbG9j
YWxPZmZzZXQpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGlmIChjaGVja0NoaWxkcmVuICYmIGhpdFRlc3RDaGlsZHJlbihyZXF1ZXN0LCByZXN1bHQs
IGxvY2F0aW9uSW5Db250YWluZXIsIGFkanVzdGVkTG9jYXRpb24sIGhpdFRlc3RBY3Rpb24pKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghY2hlY2tDaGlsZHJlbiAmJiBoaXRUZXN0
RXhjbHVkZWRDaGlsZHJlbkluQm9yZGVyKHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRh
aW5lciwgYWRqdXN0ZWRMb2NhdGlvbiwgaGl0VGVzdEFjdGlvbikpCiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA0NTM2ZjY1Zjkz
ZGExMTdiNWJiZGIzODY2ZDdlNjU0Yjk4YThiYzM1Li41NjgyMGNkODhhYWFmYmUwNGVjYjIwODQy
OGIyMDI4NjZiNTdmMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtNDUyLDYgKzQ1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhpdFRlc3RDb250
ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiAgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1v
dmUgdmlydHVhbGl6YXRpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJs
b2NrRmxvdwogICAgIHZpcnR1YWwgYm9vbCBoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91
dFBvaW50JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdENoaWxk
cmVuKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVk
TG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBoaXRUZXN0SW5saW5l
Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIGJvb2wgaGl0VGVzdEV4Y2x1ZGVkQ2hpbGRyZW5JbkJvcmRlcihjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgSGl0VGVzdEFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCmluZGV4IDk4M2NiYTI3ODE5ZDg0YTlmMGE0YTlhMjJhZWNmMDNiZjJh
ZDlmNjcuLmFjYWZkZmQwODQ1ZTMyZDQ2Y2M1MjYzZmI4MmQ2MTQ2YmU5MzhiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCiAKICNpbmNsdWRlICJGbGV4
aWJsZUJveEFsZ29yaXRobS5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTI1NCw2ICsyNTUsMjYgQEAgdm9pZCBSZW5kZXJG
bGV4aWJsZUJveDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKgogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aGl0VGVzdENo
aWxkcmVuKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikK
K3sKKyAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgTGF5b3V0UG9pbnQgc2Nyb2xsZWRPZmZzZXQgPSBoYXNPdmVy
Zmxvd0NsaXAoKSA/IGFkanVzdGVkTG9jYXRpb24gLSB0b0xheW91dFNpemUoc2Nyb2xsUG9zaXRp
b24oKSkgOiBhZGp1c3RlZExvY2F0aW9uOworCisgICAgZm9yIChhdXRvKiBjaGlsZCA6IG1fcmV2
ZXJzZWRPcmRlckl0ZXJhdG9yRm9ySGl0VGVzdGluZykgeworICAgICAgICBpZiAoY2hpbGQtPmhh
c1NlbGZQYWludGluZ0xheWVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0
byBjaGlsZFBvaW50ID0gZmxpcEZvcldyaXRpbmdNb2RlRm9yQ2hpbGQoY2hpbGQsIHNjcm9sbGVk
T2Zmc2V0KTsKKyAgICAgICAgaWYgKGNoaWxkLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCkpIHsKKyAgICAgICAgICAgIHVwZGF0ZUhpdFRl
c3RSZXN1bHQocmVzdWx0LCBmbGlwRm9yV3JpdGluZ01vZGUodG9MYXlvdXRQb2ludChsb2NhdGlv
bkluQ29udGFpbmVyLnBvaW50KCkgLSBhZGp1c3RlZExvY2F0aW9uKSkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CkBAIC04NzIsNyAr
ODkzLDkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKICAgICAvLyBTZXQgdXAgb3VyIG1hc3RlciBsaXN0IG9mIGZsZXggaXRl
bXMuIEFsbCBvZiB0aGUgcmVzdCBvZiB0aGUgYWxnb3JpdGhtCiAgICAgLy8gc2hvdWxkIHdvcmsg
b2ZmIHRoaXMgbGlzdCBvZiBhIHN1YnNldC4KICAgICAvLyBUT0RPKGNiaWVzaW5nZXIpOiBUaGF0
IHNlY29uZCBwYXJ0IGlzIG5vdCB5ZXQgdHJ1ZS4KKyAgICAvLyBBbHNvIGluaXRpYWxpemUgdGhl
IHJldmVyc2VkIG9yZGVyIGl0ZXJhdG9yIHRoYXQgd291bGQgYmUgZXZlbnR1YWxseSB1c2VkIGZv
ciBoaXQgdGVzdGluZy4KICAgICBWZWN0b3I8RmxleEl0ZW0+IGFsbEl0ZW1zOworICAgIG1fcmV2
ZXJzZWRPcmRlckl0ZXJhdG9yRm9ySGl0VGVzdGluZy5jbGVhcigpOwogICAgIG1fb3JkZXJJdGVy
YXRvci5maXJzdCgpOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IG1fb3JkZXJJdGVyYXRv
ci5jdXJyZW50Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLm5leHQoKSkg
ewogICAgICAgICBpZiAobV9vcmRlckl0ZXJhdG9yLnNob3VsZFNraXBDaGlsZCgqY2hpbGQpKSB7
CkBAIC04ODEsOCArOTA0LDEwIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJ
dGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgcHJlcGFyZUNoaWxk
Rm9yUG9zaXRpb25lZExheW91dCgqY2hpbGQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KKyAgICAgICAgbV9yZXZlcnNlZE9yZGVySXRlcmF0b3JGb3JIaXRUZXN0aW5nLmFwcGVu
ZChjaGlsZCk7CiAgICAgICAgIGFsbEl0ZW1zLmFwcGVuZChjb25zdHJ1Y3RGbGV4SXRlbSgqY2hp
bGQsIHJlbGF5b3V0Q2hpbGRyZW4pKTsKICAgICB9CisgICAgbV9yZXZlcnNlZE9yZGVySXRlcmF0
b3JGb3JIaXRUZXN0aW5nLnJldmVyc2UoKTsKICAgICAKICAgICBjb25zdCBMYXlvdXRVbml0IGxp
bmVCcmVha0xlbmd0aCA9IG1haW5BeGlzQ29udGVudEV4dGVudChMYXlvdXRVbml0OjptYXgoKSk7
CiAgICAgRmxleExheW91dEFsZ29yaXRobSBmbGV4QWxnb3JpdGhtKHN0eWxlKCksIGxpbmVCcmVh
a0xlbmd0aCwgYWxsSXRlbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guaAppbmRleCBmNzBkZTllZWRkM2JmNDg3Y2MxNDA2NmYyYzdiZGUwZjA0ZTc0Yjkw
Li4xNWFmYmI3M2E4N2VmNjU3Njc4MDM0YTFjZDUyM2M5MWQ2Nzg3ZGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNTcsNiArNTcsNyBAQCBw
dWJsaWM6CiAgICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOworICAgIGJvb2wgaGl0VGVz
dENoaWxkcmVuKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBvaW50JiBhZGp1c3RlZExvY2F0aW9uLCBIaXRU
ZXN0QWN0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBm
b3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNl
UHJpbnRSZWN0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNIb3Jpem9udGFsRmxvdygpIGNvbnN0
OwpAQCAtMjA4LDYgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxjb25zdCBSZW5kZXJC
b3gqPiBtX3JlbGFpZE91dENoaWxkcmVuOwogICAgIAogICAgIG11dGFibGUgT3JkZXJJdGVyYXRv
ciBtX29yZGVySXRlcmF0b3IgeyAqdGhpcyB9OworICAgIFZlY3RvcjxSZW5kZXJCb3gqPiBtX3Jl
dmVyc2VkT3JkZXJJdGVyYXRvckZvckhpdFRlc3Rpbmc7CiAgICAgaW50IG1fbnVtYmVyT2ZJbkZs
b3dDaGlsZHJlbk9uRmlyc3RMaW5lIHsgLTEgfTsKICAgICAKICAgICAvLyBUaGlzIGlzIFNpemVJ
c1Vua25vd24gb3V0c2lkZSBvZiBsYXlvdXRCbG9jaygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCA5Y2RkYzlkZTVlOTI3ZDg4ZjFlNDZiMWJhNjMyODRkYzkyZWY0N2FlLi5iODNi
NTRlNWQxODNmNjQyYmY0YjUxNTA2YzIyNDJiYWM3ZDJmMThiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNi0wOSAgU2VyZ2lvIFZpbGxhciBT
ZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbY3NzLWZsZXhib3hdIFdlYktp
dCBtaXN0YWtlbmx5IGxldHMgcG9pbnRlciBldmVudHMgKGNsaWNrL2hvdmVyL2V0YykgcGFzcyB0
aHJvdWdoIGZsZXggaXRlbXMsIGlmIHRoZXkgaGF2ZSBuZWdhdGl2ZSBtYXJnaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTc3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW1hcmdpbi1leHBlY3RlZC50
eHQ6IFJlcGxhY2VkIEZBSUwgYnkgUEFTUyBleHBlY3RhdGlvbi4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2hpdHRlc3Qtb3ZlcmxhcHBpbmctb3JkZXItZXhw
ZWN0ZWQudHh0OiBEaXR0by4KKwogMjAyMC0wNi0wOCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFhNTEhUVFBSZXF1ZXN0LnNlbmQgc2hvdWxkIG5vdCBzZW5kIENvbnRl
bnQtVHlwZSBoZWFkZXJzIHdoZW4gQmxvYiBoYXMgbm8gdHlwZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvaGl0
dGVzdC1vdmVybGFwcGluZy1tYXJnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhib3gvaGl0dGVzdC1vdmVybGFw
cGluZy1tYXJnaW4tZXhwZWN0ZWQudHh0CmluZGV4IGY5YTU1NTc5ZjM2OGM5ZmU3MGNiYTk2ZGJh
YmU2NzBlNzI0ZDJmOGQuLjE5ODUyM2NkN2RjYTY2MWE3ZTk5NzM3NWMwMjQ3MGYyOWNmMmEwMDEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1mbGV4Ym94L2hpdHRlc3Qtb3ZlcmxhcHBpbmctbWFyZ2luLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
ZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW1hcmdpbi1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw0IEBACiBmb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29m
b29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb29mb28KIAotRkFJTCBGbGV4Ym94ZXMgc2hv
dWxkIHBlcmZvcm0gaGl0IHRlc3RpbmcgaW4gcmV2ZXJzZSBwYWludCBvcmRlciBmb3Igb3Zlcmxh
cHBpbmcgZWxlbWVudHM6IG5lZ2F0aXZlIG1hcmdpbiBjYXNlIChjcmJ1Zy5jb20vODQ0NTA1KSBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRElWIiBidXQgZ290ICJBIgorUEFTUyBGbGV4Ym94ZXMg
c2hvdWxkIHBlcmZvcm0gaGl0IHRlc3RpbmcgaW4gcmV2ZXJzZSBwYWludCBvcmRlciBmb3Igb3Zl
cmxhcHBpbmcgZWxlbWVudHM6IG5lZ2F0aXZlIG1hcmdpbiBjYXNlIChjcmJ1Zy5jb20vODQ0NTA1
KSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWZsZXhib3gvaGl0dGVzdC1vdmVybGFwcGluZy1vcmRlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
ZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW9yZGVyLWV4cGVjdGVkLnR4dAppbmRleCA3MDE3
YTIyNTc4ZThhZThiMDQzMzNkMWQ0MWM3ZmVjZjRhMWNjNDljLi4wNTJiMWNjM2JhNDA4Y2EzYjY1
NGZjMTBlZTI2YzFiYjcyNjE3ZThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5n
LW9yZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZmxleGJveC9oaXR0ZXN0LW92ZXJsYXBwaW5nLW9yZGVyLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIGZvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zv
b2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvb2Zvbwog
Ci1GQUlMIEZsZXhib3hlcyBzaG91bGQgcGVyZm9ybSBoaXQgdGVzdGluZyBpbiByZXZlcnNlIHBh
aW50IG9yZGVyIGZvciBvdmVybGFwcGluZyBlbGVtZW50czogZmxleCBvcmRlciBjYXNlIChjcmJ1
Zy5jb20vODQ0NTA1KSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiRElWIiBidXQgZ290ICJBIgor
UEFTUyBGbGV4Ym94ZXMgc2hvdWxkIHBlcmZvcm0gaGl0IHRlc3RpbmcgaW4gcmV2ZXJzZSBwYWlu
dCBvcmRlciBmb3Igb3ZlcmxhcHBpbmcgZWxlbWVudHM6IGZsZXggb3JkZXIgY2FzZSAoY3JidWcu
Y29tLzg0NDUwNSkgCiAK
</data>
<flag name="review"
          id="416925"
          type_id="1"
          status="+"
          setter="jfernandez"
    />
          </attachment>
      

    </bug>

</bugzilla>