<?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>188475</bug_id>
          
          <creation_ts>2018-08-10 11:03:20 -0700</creation_ts>
          <short_desc>[IntersectionObserver] Validate threshold values</short_desc>
          <delta_ts>2018-08-13 15:03:26 -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>WebKit Local 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>
          
          <blocked>159475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ali Juma">ajuma</reporter>
          <assigned_to name="Ali Juma">ajuma</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449321</commentid>
    <comment_count>0</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-08-10 11:03:20 -0700</bug_when>
    <thetext>Throw an exception if any of the thresholds are outside the range [0, 1].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449322</commentid>
    <comment_count>1</comment_count>
      <attachid>346912</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-08-10 11:05:55 -0700</bug_when>
    <thetext>Created attachment 346912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449682</commentid>
    <comment_count>2</comment_count>
      <attachid>346912</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-13 11:03:50 -0700</bug_when>
    <thetext>Comment on attachment 346912
Patch

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

&gt; Source/WebCore/page/IntersectionObserver.cpp:94
&gt; +    Vector&lt;double&gt; thresholds;
&gt; +    if (WTF::holds_alternative&lt;double&gt;(init.threshold))
&gt; +        thresholds.append(WTF::get&lt;double&gt;(init.threshold));
&gt; +    else
&gt; +        thresholds = WTF::get&lt;Vector&lt;double&gt;&gt;(WTFMove(init.threshold));

I realize this code is just being moved not newly written, but two thoughts:

1) This kind of thing typically reads better with the &quot;switchOn&quot; style that you can find elsewhere in WebKit code -- makes it clearer all cases are handled even when there are just two cases; it is a little more wordy, though.

2) It is probably slightly more efficient to make the Vector in a way that indicates it will have only one double in it, even though it will be deallocated soon after. One way is to use reserveInitialCapacity(1) and then uncheckedAppend rather than just append. Another way is to write something like &quot;thresholds = Vector&lt;double&gt; { 1, init.threshold }&quot;, a third way is &quot;thresholds = Vector&lt;Double&gt; { { threshold } };&quot;. All of these have the benefit that the vector capacity will be 1 rather than a larger size as part of optimizing growth.

&gt; Source/WebCore/page/IntersectionObserver.cpp:97
&gt; +        if (threshold &lt; 0 || threshold &gt; 1)

For floating point, it’s typically a good practice to take advantage of the property that &quot;NaN&quot; comparisons all return false, so we would instead write:

    if (!(threshold &gt;= 0 &amp;&amp; threshold &lt;=1))

This would give us an exception when one of the values is a NaN. Perhaps that’s already handled at the bindings layer, though. I think we should make sure we have a test that covers NaN (and infinity and other interesting floating point values like denormalized ones), and then still consider the above syntax since it’s better when NaN is involved and I don’t see a lot of downside to writing it this way.

Another consideration is that this approach looks good if we decide put the &quot;validity rule&quot; into a small inline function:

    if (!isValidThreshold(threshold))

So it’s kind of logical to do the one that has a &quot;not&quot; in it.

&gt; LayoutTests/imported/w3c/web-platform-tests/intersection-observer/observer-exceptions-expected.txt:4
&gt;  PASS IntersectionObserver constructor witth { rootMargin: &quot;1&quot; } 

Typo in the test here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449756</commentid>
    <comment_count>3</comment_count>
      <attachid>347034</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-08-13 13:47:00 -0700</bug_when>
    <thetext>Created attachment 347034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449758</commentid>
    <comment_count>4</comment_count>
      <attachid>346912</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-08-13 13:51:55 -0700</bug_when>
    <thetext>Comment on attachment 346912
Patch

Thanks for the review!

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

&gt;&gt; Source/WebCore/page/IntersectionObserver.cpp:94
&gt;&gt; +        thresholds = WTF::get&lt;Vector&lt;double&gt;&gt;(WTFMove(init.threshold));
&gt; 
&gt; I realize this code is just being moved not newly written, but two thoughts:
&gt; 
&gt; 1) This kind of thing typically reads better with the &quot;switchOn&quot; style that you can find elsewhere in WebKit code -- makes it clearer all cases are handled even when there are just two cases; it is a little more wordy, though.
&gt; 
&gt; 2) It is probably slightly more efficient to make the Vector in a way that indicates it will have only one double in it, even though it will be deallocated soon after. One way is to use reserveInitialCapacity(1) and then uncheckedAppend rather than just append. Another way is to write something like &quot;thresholds = Vector&lt;double&gt; { 1, init.threshold }&quot;, a third way is &quot;thresholds = Vector&lt;Double&gt; { { threshold } };&quot;. All of these have the benefit that the vector capacity will be 1 rather than a larger size as part of optimizing growth.

1) Changed to use the switchOn style.

2) Used the reserveInitialCapacity(1) approach.

&gt;&gt; Source/WebCore/page/IntersectionObserver.cpp:97
&gt;&gt; +        if (threshold &lt; 0 || threshold &gt; 1)
&gt; 
&gt; For floating point, it’s typically a good practice to take advantage of the property that &quot;NaN&quot; comparisons all return false, so we would instead write:
&gt; 
&gt;     if (!(threshold &gt;= 0 &amp;&amp; threshold &lt;=1))
&gt; 
&gt; This would give us an exception when one of the values is a NaN. Perhaps that’s already handled at the bindings layer, though. I think we should make sure we have a test that covers NaN (and infinity and other interesting floating point values like denormalized ones), and then still consider the above syntax since it’s better when NaN is involved and I don’t see a lot of downside to writing it this way.
&gt; 
&gt; Another consideration is that this approach looks good if we decide put the &quot;validity rule&quot; into a small inline function:
&gt; 
&gt;     if (!isValidThreshold(threshold))
&gt; 
&gt; So it’s kind of logical to do the one that has a &quot;not&quot; in it.

Done. It turns out that Nan and infinity are indeed handled already at the bindings layer, but added test coverage nevertheless.

&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/intersection-observer/observer-exceptions-expected.txt:4
&gt;&gt;  PASS IntersectionObserver constructor witth { rootMargin: &quot;1&quot; } 
&gt; 
&gt; Typo in the test here.

Fixed. Fixed it upstream as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449793</commentid>
    <comment_count>5</comment_count>
      <attachid>347034</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 15:02:52 -0700</bug_when>
    <thetext>Comment on attachment 347034
Patch

Clearing flags on attachment: 347034

Committed r234818: &lt;https://trac.webkit.org/changeset/234818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449794</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 15:02:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449795</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-13 15:03:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/43254352&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346912</attachid>
            <date>2018-08-10 11:05:55 -0700</date>
            <delta_ts>2018-08-13 13:46:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188475-20180810140554.patch</filename>
            <type>text/plain</type>
            <size>5437</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNmMmMzZWI2ODQ3ODZi
MGZhZGFhZmFmMmFiZjY3N2I3ZjM0NDYzOS4uMWI3MDFlYzRkNjEwNmIyYjc1MWQzZDM0ZWYxNDRk
ODI2MjBmZjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE4LTA4LTEwICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJdIFZhbGlkYXRlIHRocmVzaG9sZCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbnkgb2YgYW4gSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIncyB0aHJlc2hvbGRzIGFyZSBvdXRzaWRlCisgICAgICAgIHRoZSBy
YW5nZSBbMCwgMV0uCisKKyAgICAgICAgVGVzdGVkIGJ5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL29ic2VydmVyLWV4Y2VwdGlvbnMuaHRtbAor
CisgICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyc2VjdGlvbk9ic2VydmVyOjpJbnRlcnNlY3Rpb25PYnNlcnZlcik6CisgICAgICAgICogcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oOgorCiAyMDE4LTA4LTEwICBBbGkgSnVtYSAgPGFqdW1h
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2ZXJdIEltcGxlbWVu
dCByb290TWFyZ2luIHBhcnNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAKaW5kZXggZmE3YTJjYjQyMmQyMTNiY2RhNDZhZmVhMDM5NmRhOTMzODUwZDEx
YS4uMzg0NTgxM2VkMjAyZmY1N2YwNWJiNjk2OGI0ZTNjYTY2ODFjMDViZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKQEAgLTg3LDE4ICs4NywyNiBA
QCBFeGNlcHRpb25PcjxSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXI+PiBJbnRlcnNlY3Rpb25PYnNl
cnZlcjo6Y3JlYXRlKFJlZjxJbnRlcnNlYwogICAgIGlmIChyb290TWFyZ2luT3JFeGNlcHRpb24u
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByb290TWFyZ2luT3JFeGNlcHRpb24ucmVs
ZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIoV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoaW5pdCksIHJvb3RNYXJnaW5PckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworICAgIFZlY3Rvcjxkb3VibGU+IHRocmVz
aG9sZHM7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPihpbml0LnRocmVz
aG9sZCkpCisgICAgICAgIHRocmVzaG9sZHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4oaW5pdC50
aHJlc2hvbGQpKTsKKyAgICBlbHNlCisgICAgICAgIHRocmVzaG9sZHMgPSBXVEY6OmdldDxWZWN0
b3I8ZG91YmxlPj4oV1RGTW92ZShpbml0LnRocmVzaG9sZCkpOworCisgICAgZm9yIChhdXRvIHRo
cmVzaG9sZCA6IHRocmVzaG9sZHMpIHsKKyAgICAgICAgaWYgKHRocmVzaG9sZCA8IDAgfHwgdGhy
ZXNob2xkID4gMSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAi
RmFpbGVkIHRvIGNvbnN0cnVjdCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInOiBhbGwgdGhyZXNob2xk
cyBtdXN0IGxpZSBpbiB0aGUgcmFuZ2UgWzAuMCwgMS4wXS4iIH07CisgICAgfQorCisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoaW5pdC5yb290KSwgcm9vdE1hcmdpbk9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpLCBXVEZNb3ZlKHRocmVzaG9sZHMpKSk7CiB9CiAKLUludGVyc2VjdGlvbk9ic2VydmVy
OjpJbnRlcnNlY3Rpb25PYnNlcnZlcihSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4m
JiBjYWxsYmFjaywgSW5pdCYmIGluaXQsIExlbmd0aEJveCYmIHBhcnNlZFJvb3RNYXJnaW4pCi0g
ICAgOiBtX3Jvb3QoaW5pdC5yb290KQorSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OkludGVyc2VjdGlv
bk9ic2VydmVyKFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrPiYmIGNhbGxiYWNrLCBS
ZWZQdHI8RWxlbWVudD4mJiByb290LCBMZW5ndGhCb3gmJiBwYXJzZWRSb290TWFyZ2luLCBWZWN0
b3I8ZG91YmxlPiYmIHRocmVzaG9sZHMpCisgICAgOiBtX3Jvb3QoV1RGTW92ZShyb290KSkKICAg
ICAsIG1fcm9vdE1hcmdpbihXVEZNb3ZlKHBhcnNlZFJvb3RNYXJnaW4pKQorICAgICwgbV90aHJl
c2hvbGRzKFdURk1vdmUodGhyZXNob2xkcykpCiAgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2Fs
bGJhY2spKQogewotICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oaW5pdC50
aHJlc2hvbGQpKQotICAgICAgICBtX3RocmVzaG9sZHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4o
aW5pdC50aHJlc2hvbGQpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdGhyZXNob2xkcyA9IFdURjo6
Z2V0PFZlY3Rvcjxkb3VibGU+PihXVEZNb3ZlKGluaXQudGhyZXNob2xkKSk7CiB9CiAKIFN0cmlu
ZyBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdE1hcmdpbigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKaW5kZXggMWQzZjAxMjAxYWFkMDgxZTdjNTJk
ODE3ODZkYjM2YjgyZjY1Y2NhYS4uYjA0Y2ZiMjExNjI4NTViMjFiNjcwNDUwMTMwODk1MzQ5YTJl
MTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5Pj4gdGFrZVJlY29yZHMoKTsKIAogcHJpdmF0ZToKLSAgICBJbnRlcnNlY3Rpb25P
YnNlcnZlcihSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4mJiwgSW5pdCYmLCBMZW5n
dGhCb3gmJiBwYXJzZWRSb290TWFyZ2luKTsKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcihSZWY8
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4mJiwgUmVmUHRyPEVsZW1lbnQ+JiYgcm9vdCwg
TGVuZ3RoQm94JiYgcGFyc2VkUm9vdE1hcmdpbiwgVmVjdG9yPGRvdWJsZT4mJiB0aHJlc2hvbGRz
KTsKICAgICAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9yb290OwogICAgIExlbmd0aEJveCBtX3Jv
b3RNYXJnaW47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBjYjNjYWZjOTdlMjYw
OTgyNmM0NmZkOTdiMTI2M2Y1Njg3ZWI3YWU3Li42YmUxYmFiYTYxOGM2MDU4MjE2OWRmYmJkZGY3
OGU2ZDkzNTEzMjNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxOC0wOC0xMCAgQWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW0ludGVyc2VjdGlvbk9ic2VydmVyXSBWYWxpZGF0ZSB0aHJlc2hvbGQgdmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg0NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwZWN0
YXRpb24gZm9yIG5ld2x5IHBhc3NpbmcgdGVzdCBjYXNlLgorCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9vYnNlcnZlci1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dDoKKwogMjAxOC0wOC0xMCAgQWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0ludGVyc2VjdGlvbk9ic2VydmVyXSBJbXBsZW1lbnQgcm9vdE1hcmdpbiBwYXJz
aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9vYnNlcnZlci1leGNlcHRpb25zLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW50ZXJzZWN0
aW9uLW9ic2VydmVyL29ic2VydmVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDY5ODgw
Y2M3NDcxYTZiZTAyOTllZWU1NGUzZGRhMWIyZWYyZDc4NGIuLmY1MDBiMDJkM2YzYWYwN2RmMjU0
NWM5YWYzYzk0MDA2NzNmYTI3MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL29ic2VydmVyLWV4Y2Vw
dGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL29ic2VydmVyLWV4Y2VwdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogCi1GQUlMIEludGVyc2VjdGlvbk9ic2VydmVyIGNv
bnN0cnVjdG9yIHdpdGggeyB0aHJlc2hvbGQ6IFsxLjFdIH0gYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsKLSAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZSA9PiB7fSwg
e3RocmVzaG9sZDogWzEuMV19KQotICB9IiBkaWQgbm90IHRocm93CitQQVNTIEludGVyc2VjdGlv
bk9ic2VydmVyIGNvbnN0cnVjdG9yIHdpdGggeyB0aHJlc2hvbGQ6IFsxLjFdIH0gCiBQQVNTIElu
dGVyc2VjdGlvbk9ic2VydmVyIGNvbnN0cnVjdG9yIHdpdGggeyB0aHJlc2hvbGQ6IFsiZm9vIl0g
fSAKIFBBU1MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3Igd2l0dGggeyByb290TWFy
Z2luOiAiMSIgfSAKIFBBU1MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3Igd2l0aCB7
IHJvb3RNYXJnaW46ICIyZW0iIH0gCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347034</attachid>
            <date>2018-08-13 13:47:00 -0700</date>
            <delta_ts>2018-08-13 15:02:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188475-20180813164659.patch</filename>
            <type>text/plain</type>
            <size>10452</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNmMmMzZWI2ODQ3ODZi
MGZhZGFhZmFmMmFiZjY3N2I3ZjM0NDYzOS4uZGY3NzQ1ZTAxMjZhZDBlNGI3MmU3NTM4MzkyNjYx
YmU3ZjI4ODQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTA4LTEzICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJdIFZhbGlkYXRlIHRocmVzaG9sZCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbnkgb2YgYW4gSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIncyB0aHJlc2hvbGRzIGFyZSBvdXRzaWRlCisgICAgICAgIHRoZSBy
YW5nZSBbMCwgMV0uCisKKyAgICAgICAgVGVzdGVkIGJ5OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9vYnNlcnZlci1leGNlcHRpb25zLmh0bWwK
KyAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9i
c2VydmVyLWludGVyZmFjZS5odG1sCisKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OkludGVyc2VjdGlvbk9i
c2VydmVyKToKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmg6CisKIDIwMTgt
MDgtMTAgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtJbnRlcnNl
Y3Rpb25PYnNlcnZlcl0gSW1wbGVtZW50IHJvb3RNYXJnaW4gcGFyc2luZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCBmYTdhMmNiNDIyZDIxM2Jj
ZGE0NmFmZWEwMzk2ZGE5MzM4NTBkMTFhLi42MDRkYmNjMDU0NjNiMWMyZjFjMGUzNzg0Mzg3NzAy
YzZmYWI4Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9i
c2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVy
LmNwcApAQCAtODcsMTggKzg3LDI4IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbnRlcnNlY3Rpb25PYnNl
cnZlcj4+IEludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoUmVmPEludGVyc2VjCiAgICAgaWYg
KHJvb3RNYXJnaW5PckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJv
b3RNYXJnaW5PckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShpbml0KSwgcm9vdE1hcmdpbk9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7Cisg
ICAgVmVjdG9yPGRvdWJsZT4gdGhyZXNob2xkczsKKyAgICBXVEY6OnN3aXRjaE9uKGluaXQudGhy
ZXNob2xkLCBbJnRocmVzaG9sZHNdIChkb3VibGUgaW5pdFRocmVzaG9sZCkgeworICAgICAgICB0
aHJlc2hvbGRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgICAgIHRocmVzaG9sZHMu
dW5jaGVja2VkQXBwZW5kKGluaXRUaHJlc2hvbGQpOworICAgIH0sIFsmdGhyZXNob2xkc10gKFZl
Y3Rvcjxkb3VibGU+JiBpbml0VGhyZXNob2xkcykgeworICAgICAgICB0aHJlc2hvbGRzID0gV1RG
TW92ZShpbml0VGhyZXNob2xkcyk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gdGhyZXNob2xk
IDogdGhyZXNob2xkcykgeworICAgICAgICBpZiAoISh0aHJlc2hvbGQgPj0gMCAmJiB0aHJlc2hv
bGQgPD0gMSkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkZh
aWxlZCB0byBjb25zdHJ1Y3QgJ0ludGVyc2VjdGlvbk9ic2VydmVyJzogYWxsIHRocmVzaG9sZHMg
bXVzdCBsaWUgaW4gdGhlIHJhbmdlIFswLjAsIDEuMF0uIiB9OworICAgIH0KKworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKGluaXQucm9vdCksIHJvb3RNYXJnaW5PckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgV1RGTW92ZSh0aHJlc2hvbGRzKSkpOwogfQogCi1JbnRlcnNlY3Rpb25PYnNlcnZlcjo6
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIoUmVmPEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s+JiYg
Y2FsbGJhY2ssIEluaXQmJiBpbml0LCBMZW5ndGhCb3gmJiBwYXJzZWRSb290TWFyZ2luKQotICAg
IDogbV9yb290KGluaXQucm9vdCkKK0ludGVyc2VjdGlvbk9ic2VydmVyOjpJbnRlcnNlY3Rpb25P
YnNlcnZlcihSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVm
UHRyPEVsZW1lbnQ+JiYgcm9vdCwgTGVuZ3RoQm94JiYgcGFyc2VkUm9vdE1hcmdpbiwgVmVjdG9y
PGRvdWJsZT4mJiB0aHJlc2hvbGRzKQorICAgIDogbV9yb290KFdURk1vdmUocm9vdCkpCiAgICAg
LCBtX3Jvb3RNYXJnaW4oV1RGTW92ZShwYXJzZWRSb290TWFyZ2luKSkKKyAgICAsIG1fdGhyZXNo
b2xkcyhXVEZNb3ZlKHRocmVzaG9sZHMpKQogICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxi
YWNrKSkKIHsKLSAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KGluaXQudGhy
ZXNob2xkKSkKLSAgICAgICAgbV90aHJlc2hvbGRzLmFwcGVuZChXVEY6OmdldDxkb3VibGU+KGlu
aXQudGhyZXNob2xkKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3RocmVzaG9sZHMgPSBXVEY6Omdl
dDxWZWN0b3I8ZG91YmxlPj4oV1RGTW92ZShpbml0LnRocmVzaG9sZCkpOwogfQogCiBTdHJpbmcg
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnJvb3RNYXJnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCmluZGV4IDFkM2YwMTIwMWFhZDA4MWU3YzUyZDgx
Nzg2ZGIzNmI4MmY2NWNjYWEuLmIwNGNmYjIxMTYyODU1YjIxYjY3MDQ1MDEzMDg5NTM0OWEyZTE0
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8SW50ZXJzZWN0aW9uT2JzZXJ2
ZXJFbnRyeT4+IHRha2VSZWNvcmRzKCk7CiAKIHByaXZhdGU6Ci0gICAgSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIoUmVmPEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s+JiYsIEluaXQmJiwgTGVuZ3Ro
Qm94JiYgcGFyc2VkUm9vdE1hcmdpbik7CisgICAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoUmVmPElu
dGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxFbGVtZW50PiYmIHJvb3QsIExl
bmd0aEJveCYmIHBhcnNlZFJvb3RNYXJnaW4sIFZlY3Rvcjxkb3VibGU+JiYgdGhyZXNob2xkcyk7
CiAgICAgCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fcm9vdDsKICAgICBMZW5ndGhCb3ggbV9yb290
TWFyZ2luOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDBmNDFhMGYzNjllMTY5M2M0NjI4ZTJlMDZjOWY0ZjljZDA5ZWRiMzEu
LjlmMzA4Yzk4NGQ5YzlkZDA5YzE3YmMzOTkwMGUzNWExYTk0M2FkNzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOC0wOC0xMyAgQWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0ludGVyc2VjdGlvbk9ic2VydmVyXSBWYWxpZGF0ZSB0aHJlc2hvbGQgdmFsdWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg0NzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBj
b3ZlcmFnZSBmb3IgaW50ZXJlc3RpbmcgZmxvYXRpbmcgcG9pbnQgdGhyZXNob2xkIHZhbHVlcy4K
KworICAgICAgICAqIGludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIt
aW50ZXJmYWNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIv
aW50ZXJzZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS5odG1sOgorCiAyMDE4LTA4LTEwICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJdIEltcGxlbWVudCByb290TWFyZ2luIHBhcnNpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IGNiM2NhZmM5N2UyNjA5ODI2YzQ2ZmQ5N2IxMjYzZjU2ODdlYjdhZTcuLjU1Y2Mz
ZjY4MjgxZWMxOTFmMzI2OGE5NTg4NjE4OGM1MGQ4ODU4MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA4LTEzICBBbGkgSnVtYSAgPGFqdW1h
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2ZXJdIFZhbGlkYXRl
IHRocmVzaG9sZCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZSBleHBlY3RhdGlvbiBmb3IgbmV3bHkgcGFzc2luZyB0ZXN0IGNhc2Uu
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL29i
c2VydmVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvb2JzZXJ2ZXItZXhjZXB0aW9ucy5odG1sOiBGaXgg
dHlwbyBhbHJlYWR5IGZpeGVkIHVwc3RyZWFtLgorCiAyMDE4LTA4LTEwICBBbGkgSnVtYSAgPGFq
dW1hQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbSW50ZXJzZWN0aW9uT2JzZXJ2ZXJdIEltcGxl
bWVudCByb290TWFyZ2luIHBhcnNpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL29ic2VydmVyLWV4
Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvb2JzZXJ2ZXItZXhjZXB0aW9ucy1leHBl
Y3RlZC50eHQKaW5kZXggNjk4ODBjYzc0NzFhNmJlMDI5OWVlZTU0ZTNkZGExYjJlZjJkNzg0Yi4u
NGEwNTgxODE4OTIxYWM4ZTAyMzcyODc2MzA2OThiNjZhNzY2YjRkMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbnRlcnNlY3Rpb24tb2Jz
ZXJ2ZXIvb2JzZXJ2ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvb2Jz
ZXJ2ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw3IEBACiAKLUZBSUwgSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3Igd2l0aCB7IHRocmVzaG9sZDogWzEuMV0gfSBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgIG5ldyBJbnRlcnNlY3Rp
b25PYnNlcnZlcihlID0+IHt9LCB7dGhyZXNob2xkOiBbMS4xXX0pCi0gIH0iIGRpZCBub3QgdGhy
b3cKK1BBU1MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3Igd2l0aCB7IHRocmVzaG9s
ZDogWzEuMV0gfSAKIFBBU1MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3Igd2l0aCB7
IHRocmVzaG9sZDogWyJmb28iXSB9IAotUEFTUyBJbnRlcnNlY3Rpb25PYnNlcnZlciBjb25zdHJ1
Y3RvciB3aXR0aCB7IHJvb3RNYXJnaW46ICIxIiB9IAorUEFTUyBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBjb25zdHJ1Y3RvciB3aXRoIHsgcm9vdE1hcmdpbjogIjEiIH0gCiBQQVNTIEludGVyc2VjdGlv
bk9ic2VydmVyIGNvbnN0cnVjdG9yIHdpdGggeyByb290TWFyZ2luOiAiMmVtIiB9IAogUEFTUyBJ
bnRlcnNlY3Rpb25PYnNlcnZlciBjb25zdHJ1Y3RvciB3aXRoIHsgcm9vdE1hcmdpbjogImF1dG8i
IH0gCiBQQVNTIEludGVyc2VjdGlvbk9ic2VydmVyIGNvbnN0cnVjdG9yIHdpdGggeyByb290TWFy
Z2luOiAiY2FsYygxcHggKyAycHgpIiB9IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvb2JzZXJ2ZXIt
ZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvb2JzZXJ2ZXItZXhjZXB0aW9ucy5odG1sCmluZGV4
IGQ0ZjE3OGJlNTFjMzk0YmE5ODIyNWYzNTllYjAyY2Q3OGY0NTI1OWUuLjVkMjkyMzRiYmYzMjUw
NWE5OGFkMTMyNTcxYzZkNTQ2N2NlNDRkNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL29ic2VydmVy
LWV4Y2VwdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9vYnNlcnZlci1leGNlcHRpb25zLmh0bWwK
QEAgLTE5LDcgKzE5LDcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgIGFzc2VydF90aHJvd3MoIlNZ
TlRBWF9FUlIiLCBmdW5jdGlvbigpIHsKICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZSA9
PiB7fSwge3Jvb3RNYXJnaW46ICIxIn0pCiAgIH0pCi19LCAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXIg
Y29uc3RydWN0b3Igd2l0dGggeyByb290TWFyZ2luOiAiMSIgfScpOworfSwgJ0ludGVyc2VjdGlv
bk9ic2VydmVyIGNvbnN0cnVjdG9yIHdpdGggeyByb290TWFyZ2luOiAiMSIgfScpOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgYXNzZXJ0X3Rocm93cygiU1lOVEFYX0VSUiIsIGZ1bmN0aW9uKCkg
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2Vj
dGlvbi1vYnNlcnZlci1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW50ZXJz
ZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDE2YjYxNTA5Mjk1NGRkNDlkM2I1ODcwOWY2MmE1ZDZlZWU4MWJjNzguLjYwNjkw
ZGQ5ZGE0OGUwZWM5ZDM0ZGRhN2RkYWIyZmYzZWE2ZDE2YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJmYWNl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50
ZXJzZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS1leHBlY3RlZC50eHQKQEAgLTEwLDQgKzEwLDEx
IEBAIFBBU1MgRXhwbGljaXRGb3VyQXJndW1lbnRSb290TWFyZ2luCiBQQVNTIEV4cGxpY2l0Um9v
dCAKIFBBU1MgRXhwbGljaXRUaHJlc2hvbGQgCiBQQVNTIEV4cGxpY2l0VGhyZXNob2xkcyAKK1BB
U1MgU21hbGxQb3NpdGl2ZVRocmVzaG9sZCAKK1BBU1MgU21hbGxOZWdhdGl2ZVRocmVzaG9sZCAK
K1BBU1MgTGFyZ2VQb3NpdGl2ZVRocmVzaG9sZCAKK1BBU1MgTGFyZ2VOZWdhdGl2ZVRocmVzaG9s
ZCAKK1BBU1MgUG9zaXRpdmVJbmZpbml0eVRocmVzaG9sZCAKK1BBU1MgTmVnYXRpdmVJbmZpbml0
eVRocmVzaG9sZCAKK1BBU1MgTmFOVGhyZXNob2xkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNl
cnZlci1pbnRlcmZhY2UuaHRtbAppbmRleCAzOWZhNTllNjllMGQwMGE2MDJjMDcyN2UzMjNjOGVm
NTZkNjc5NzQwLi45MGQyNGZmYTE3YzY4NGVjOWExOTc2ZDc1ZTRlZjE0MjgxODZhOWQ1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9i
c2VydmVyLWludGVyZmFjZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNl
cnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJmYWNlLmh0bWwKQEAgLTUzLDYgKzUzLDQw
IEBACiAgICAgICAgIHZhciBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5j
dGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6IFswLCAwLjMzMzMzNjc4LCAwLjUsIDAuNzY2NDVdIH0p
OwogICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG9ic2VydmVyLnRocmVzaG9sZHMsIFswLCAw
LjMzMzMzNjc4LCAwLjUsIDAuNzY2NDVdKTsKICAgICB9LCdFeHBsaWNpdFRocmVzaG9sZHMnKTsK
KyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuTUlOX1ZB
TFVFIH0pOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG9ic2VydmVyLnRocmVzaG9sZHMs
IFtOdW1iZXIuTUlOX1ZBTFVFXSk7CisgICAgfSwnU21hbGxQb3NpdGl2ZVRocmVzaG9sZCcpOwor
ICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3MoUmFuZ2VFcnJvcigp
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5j
dGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6IC1OdW1iZXIuTUlOX1ZBTFVFIH0pOworICAgICAgICB9
KQorICAgIH0sJ1NtYWxsTmVnYXRpdmVUaHJlc2hvbGQnKTsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkg
eworICAgICAgICBhc3NlcnRfdGhyb3dzKFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNo
b2xkOiBOdW1iZXIuTUFYX1ZBTFVFIH0pOworICAgICAgICB9KQorICAgIH0sJ0xhcmdlUG9zaXRp
dmVUaHJlc2hvbGQnKTsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhy
b3dzKFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBuZXcgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiAtTnVtYmVyLk1BWF9WQUxV
RSB9KTsKKyAgICAgICAgfSkKKyAgICB9LCdMYXJnZU5lZ2F0aXZlVGhyZXNob2xkJyk7CisgICAg
dGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
KSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfSk7CisgICAgICAg
IH0pCisgICAgfSwnUG9zaXRpdmVJbmZpbml0eVRocmVzaG9sZCcpOworICAgIHRlc3QoZnVuY3Rp
b24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRo
cmVzaG9sZDogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZIH0pOworICAgICAgICB9KQorICAgIH0s
J05lZ2F0aXZlSW5maW5pdHlUaHJlc2hvbGQnKTsKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAg
ICAgICBhc3NlcnRfdGhyb3dzKFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6IE51
bWJlci5OYU4gfSk7CisgICAgICAgIH0pCisgICAgfSwnTmFOVGhyZXNob2xkJyk7CiA8L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>