<?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>172645</bug_id>
          
          <creation_ts>2017-05-26 07:45:28 -0700</creation_ts>
          <short_desc>Make webrtc replace track tests less flaky</short_desc>
          <delta_ts>2017-09-20 11:11:01 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=171895</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1313130</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-26 07:45:28 -0700</bug_when>
    <thetext>Make webrtc replace track tests less flaky</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313131</commentid>
    <comment_count>1</comment_count>
      <attachid>311353</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-26 07:56:50 -0700</bug_when>
    <thetext>Created attachment 311353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313328</commentid>
    <comment_count>2</comment_count>
      <attachid>311353</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-26 17:28:45 -0700</bug_when>
    <thetext>Comment on attachment 311353
Patch

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

&gt; LayoutTests/webrtc/video-replace-track-to-null.html:24
&gt; +                framesEncoded = statItem.framesEncoded;

Should this break? If not, what does it meant to have more than one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313730</commentid>
    <comment_count>3</comment_count>
      <attachid>311353</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-30 08:38:03 -0700</bug_when>
    <thetext>Comment on attachment 311353
Patch

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

&gt;&gt; LayoutTests/webrtc/video-replace-track-to-null.html:24
&gt;&gt; +                framesEncoded = statItem.framesEncoded;
&gt; 
&gt; Should this break? If not, what does it meant to have more than one?

We are in forEach, not in a for loop, I do not know whether there is a way to break here.
There should only be one outbound-rtp since we have only one track.
It might be good to ensure that in video-stats.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313731</commentid>
    <comment_count>4</comment_count>
      <attachid>311353</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-30 08:39:01 -0700</bug_when>
    <thetext>Comment on attachment 311353
Patch

Rejecting attachment 311353 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 311353, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
le LayoutTests/TestExpectations.rej
patching file LayoutTests/platform/mac-wk2/TestExpectations
patching file LayoutTests/webrtc/audio-replace-track.html
patching file LayoutTests/webrtc/video-replace-track-expected.txt
patching file LayoutTests/webrtc/video-replace-track-to-null.html
patching file LayoutTests/webrtc/video-replace-track.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Eric Carlson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/3842443</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342937</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-28 14:09:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/34118218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350066</commentid>
    <comment_count>6</comment_count>
      <attachid>321124</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 13:37:12 -0700</bug_when>
    <thetext>Created attachment 321124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350243</commentid>
    <comment_count>7</comment_count>
      <attachid>321124</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-18 21:10:46 -0700</bug_when>
    <thetext>Comment on attachment 321124
Patch

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

&gt; LayoutTests/TestExpectations:802
&gt; -webkit.org/b/170704 webrtc/video-mute.html [ Failure ]
&gt; +webkit.org/b/170704 webrtc/video-mute.html [ Pass Failure ]

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350250</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 22:11:52 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 321124 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321124&amp;action=review
&gt; 
&gt; &gt; LayoutTests/TestExpectations:802
&gt; &gt; -webkit.org/b/170704 webrtc/video-mute.html [ Failure ]
&gt; &gt; +webkit.org/b/170704 webrtc/video-mute.html [ Pass Failure ]
&gt; 
&gt; Why?

The line should be removed.
I am keeping Failure expectation until I am sure it is not flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350831</commentid>
    <comment_count>9</comment_count>
      <attachid>321124</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 10:36:17 -0700</bug_when>
    <thetext>Comment on attachment 321124
Patch

Rejecting attachment 321124 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 321124, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
hing file LayoutTests/webrtc/routines.js
patching file LayoutTests/webrtc/video-mute.html
patching file LayoutTests/webrtc/video-replace-muted-track.html
patching file LayoutTests/webrtc/video-replace-track-expected.txt
patching file LayoutTests/webrtc/video-replace-track-to-null.html
patching file LayoutTests/webrtc/video-replace-track.html

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Eric Carlson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4605147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350834</commentid>
    <comment_count>10</comment_count>
      <attachid>321331</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-20 10:39:46 -0700</bug_when>
    <thetext>Created attachment 321331
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350860</commentid>
    <comment_count>11</comment_count>
      <attachid>321331</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 11:10:59 -0700</bug_when>
    <thetext>Comment on attachment 321331
Patch for landing

Clearing flags on attachment: 321331

Committed r222273: &lt;http://trac.webkit.org/changeset/222273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350861</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 11:11:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311353</attachid>
            <date>2017-05-26 07:56:50 -0700</date>
            <delta_ts>2017-09-18 13:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172645-20170526075649.patch</filename>
            <type>text/plain</type>
            <size>13482</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NDcwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWEyOTcxYmQyMzhjYWE2NDMzNDg2
NjI3YzAwNjJkZjNlNjI5NGNlYy4uZDQyYmRkYzdlYmEyZDdjZjI1NmQxNGFmMDQ0MGMxMzNkOGNh
ODQxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTA1LTI2ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHdlYnJ0YyByZXBsYWNlIHRyYWNrIHRl
c3RzIGxlc3MgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjY0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogUmVtb3ZpbmcgZmxha3kgZXhwZWN0YXRpb25zLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8uCisgICAg
ICAgICogd2VicnRjL2F1ZGlvLXJlcGxhY2UtdHJhY2suaHRtbDogTWFraW5nIHRlc3QgbGVzcyBy
ZWx5aW5nIG9uIHdhaXRpbmcgZm9yIGZpeCBkZWxheXMuCisgICAgICAgICogd2VicnRjL3ZpZGVv
LXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYnJ0Yy92aWRlby1yZXBs
YWNlLXRyYWNrLXRvLW51bGwuaHRtbDogRGl0dG8uCisgICAgICAgICogd2VicnRjL3ZpZGVvLXJl
cGxhY2UtdHJhY2suaHRtbDogRGl0dG8uCisKIDIwMTctMDUtMjUgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhY2VmdWxseSBoYW5kbGUgbWlzc2luZyBs
b2NhbFN0b3JhZ2Ugc3VwcG9ydCBpbiByZXN1bHRzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGUyZGVkODRiOThmNTY0YTU3OGJlYTQ3ZmZkMGNmMTAzOWYxOWIxNjAuLjU5NjRhZjNkOGRiNGUx
OGFmNWZiNmM5ZmYyYWNjYmMxODU4Yzk0MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMyLDEy
ICs3MzIsMTAgQEAgd2Via2l0Lm9yZy9iLzE0NjE4MiBlZGl0aW5nL3NlbGVjdGlvbi9sZWFrLWRv
Y3VtZW50LXdpdGgtc2VsZWN0aW9uLWluc2lkZS5odG1sIFsKIG1lZGlhL3Nlc3Npb24gWyBTa2lw
IF0KIAogd2VicnRjL25lZ290aWF0ZWRuZWVkZWQtZXZlbnQtYWRkU3RyZWFtLmh0bWwgWyBQYXNz
IENyYXNoIF0KLXdlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogd2VicnRjL3ZpZGVvLXN0YXRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2VicnRjL3ZpZGVv
LWdldFBhcmFtZXRlcnMuaHRtbCBbIEZhaWx1cmUgXQogd2VicnRjL3BlZXItY29ubmVjdGlvbi1h
dWRpby1tdXRlMi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24t
cmVtb3RlLWF1ZGlvLW11dGUyLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE3
MDE3OCB3ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay10by1udWxsLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jbG9zZWQtc3RhdGUuaHRt
bCBbIFNraXAgXQogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1pY2Vjb25uZWN0
aW9uc3RhdGVjaGFuZ2UtZXZlbnQuaHRtbCBbIFNraXAgXQogZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1tb3JlLW1lZGlhLXRvLW5lZ290aWF0ZS5odG1sIFsgU2tpcCBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmNjNWIy
OWNkYWIwYjdkNGIwMTdjNzM4ODM2ZGEwZmYzODU5NzA4Zi4uZDgzM2UyNDNjN2VjMzVlZGNjM2Y0
ZGFlOTc0ZTdlMWY0NTc0MjkxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtNjcyLDggKzY3Miw2IEBAIHdlYmtpdC5vcmcvYi8xNzE4NjIg
WyBTaWVycmEgRGVidWcgXSBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24t
b2JqCiAKIHdlYmtpdC5vcmcvYi8xNzA4NzAgd2VicnRjL2NhcHR1cmVDYW52YXMtd2VicnRjLmh0
bWwgWyBQYXNzIFRpbWVvdXQgXQogCi13ZWJraXQub3JnL2IvMTcxODk1IHdlYnJ0Yy9hdWRpby1y
ZXBsYWNlLXRyYWNrLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCi0KIHdlYmtpdC5vcmcv
Yi8xNzE5MzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUGVlckNv
bm5lY3Rpb24taWRsLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTcxOTM1
IFsgU2llcnJhIF0gdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtc2VsZWN0LWxh
dGNoZWQtbWFpbmZyYW1lLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2VicnRjL2F1ZGlvLXJlcGxhY2UtdHJhY2suaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0
Yy9hdWRpby1yZXBsYWNlLXRyYWNrLmh0bWwKaW5kZXggNzY0MDEwNjgxNTIxNmU0ZTU5N2Y2OGFm
NmE4ZWRiZGY4ZTgzNjE2Ni4uMWU4NDRmOTA2ZTM2NmY0ODFkNjdjYmQ4Mzk4ZWVhOTNlMjVhYmVi
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXJlcGxhY2UtdHJhY2suaHRt
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tcmVwbGFjZS10cmFjay5odG1sCkBAIC00
OCwyMCArNDgsMjkgQEAKICAgICAgICAgfSk7CiAgICAgfSwgIkVuc3VyaW5nIG1vY2sgYXVkaW8g
c291cmNlIGlzIHJlY2VpdmVkIG9uIHRoZSByZW1vdGUgc2lkZSIpOwogCisKK2Z1bmN0aW9uIGVu
c3VyZUhlYXJkSHVtMihyZW1vdGVTdHJlYW0sIGNvdW50KQoreworICAgIHJldHVybiBkb0h1bUFu
YWx5c2lzKHJlbW90ZVN0cmVhbSwgdHJ1ZSkudGhlbigocmVzdWx0cykgPT4geworICAgICAgICBp
ZiAocmVzdWx0cykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCsrY291bnQgPT09
IDIwKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJkaWQgbm90IGhlYXJkIGh1
bSAyIik7CisgICAgICAgIHJldHVybiBlbnN1cmVIZWFyZEh1bTIocmVtb3RlU3RyZWFtLCBjb3Vu
dCk7CisgICAgfSk7Cit9CisKICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzogeyBzYW1wbGVS
YXRlOiB7IGV4YWN0OiA0ODAwMCB9IH0gfSkudGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAgICAg
ICBzZWNvbmRTdHJlYW0gPSBzdHJlYW07CiAgICAgICAgICAgICByZXR1cm4gc2VuZGVyLnJlcGxh
Y2VUcmFjayhzZWNvbmRTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc2Vjb25kU3RyZWFtKTsK
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShzZW5kZXIu
dHJhY2sgPT09IHNlY29uZFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdKTsKLSAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9yKDUwMCk7CiAgICAgICAgIH0pOwogICAgIH0sICJVc2luZyByZXBsYWNl
VHJhY2sgZm9yIGF1ZGlvIik7CiAKICAgICBwcm9taXNlX3Rlc3QoKCkgPT4gewotICAgICAgICBy
ZXR1cm4gZG9IdW1BbmFseXNpcyhyZW1vdGVTdHJlYW0sIHRydWUpLnRoZW4oKHJlc3VsdHMpID0+
IHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKHJlc3VsdHMsICJoZWFyZCBodW0gMiIpOwotICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGVuc3VyZUhlYXJkSHVtMihyZW1vdGVTdHJlYW0sIDAp
OwogICAgIH0sICJFbnN1cmluZyByZW1vdGUgYXVkaW8gZ2V0cyB0aGUgcmVwbGFjaW5nIHRyYWNr
IGRhdGEiKTsKICAgICA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLWV4cGVjdGVkLnR4dAppbmRleCBiYmVhNzYzNGIxMjU0
YjFiZGZhMzNmZmJhMmJiMDMwMjZkZDZlYTM1Li5jOTA0MzBhYjg3NWZmZTlmMzM3NzFkZWZlY2Y5
NTQ4NzM4YmMyMmRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFj
ZS10cmFjay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxh
Y2UtdHJhY2stZXhwZWN0ZWQudHh0CkBAIC0zLDggKzMsNiBAQCBQQVNTIFN3aXRjaGluZyBmcm9t
IGZyb250IHRvIGJhY2sgY2FtZXJhCiBQQVNTIFN3aXRjaGluZyBmcm9tIGZyb250IHRvIGJhY2sg
Y2FtZXJhLCB3aXRoIGxvd2VyIHJlc29sdXRpb24gCiBQQVNTIFN3aXRjaGluZyBmcm9tIGZyb250
IHRvIGJhY2sgY2FtZXJhLCB3aXRoIGhpZ2hlciByZXNvbHV0aW9uIAogUEFTUyB0ZXN0RnJvbnRD
YW1lcmFJbWFnZSB0ZXN0MSAKLVBBU1MgdGVzdEJhY2tDYW1lcmFJbWFnZSB0ZXN0MSAKIFBBU1Mg
dGVzdEZyb250Q2FtZXJhSW1hZ2UgdGVzdDIgCi1QQVNTIHRlc3RCYWNrQ2FtZXJhSW1hZ2UgdGVz
dDIgCiBQQVNTIHRlc3RGcm9udENhbWVyYUltYWdlIHRlc3QzIAogIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2stdG8tbnVsbC5odG1sIGIvTGF5b3V0
VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2stdG8tbnVsbC5odG1sCmluZGV4IDZjOTc4
YjAzNTg3MTkxNTYwZDExYzg3NDE3OTg5MTk5NzY5NWQzNmQuLmJkYzQwODgzMzc2NWEwOWU1MzY4
OGU5MGIzMjdjMmFkYWUxNjc3MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRl
by1yZXBsYWNlLXRyYWNrLXRvLW51bGwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlk
ZW8tcmVwbGFjZS10cmFjay10by1udWxsLmh0bWwKQEAgLTE1LDQ0ICsxNSw0NyBAQAogdmlkZW8g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKIGNhbnZhcyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKIAotZnVuY3Rpb24gZ3JhYkltYWdlUGl4ZWxzKCkKK2Z1
bmN0aW9uIGdldE91dGJvdW5kUlRQU3RhdHNOdW1iZXJPZkVuY29kZWRGcmFtZXMoY29ubmVjdGlv
bikKIHsKLSAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOwotICAgIGNhbnZhcy5o
ZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsKLSAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5k
cmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAg
ICBpbWFnZURhdGEgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMjAsIDIw
LCAxMDAsIDEwMCk7Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5kYXRhOwotIH0KLQotdmFyIGZpcnN0
RnJhbWVEYXRhOwotCi1mdW5jdGlvbiBzdG9yZUZyYW1lKCkKLXsKLSAgICBmaXJzdEZyYW1lRGF0
YSA9IGdyYWJJbWFnZVBpeGVscygpOworICAgIHJldHVybiBjb25uZWN0aW9uLmdldFN0YXRzKCku
dGhlbigocmVwb3J0KSA9PiB7CisgICAgICAgIHZhciBmcmFtZXNFbmNvZGVkOworICAgICAgICBy
ZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgICAgIGlmIChzdGF0SXRlbS50
eXBlID09PSAib3V0Ym91bmQtcnRwIikgeworICAgICAgICAgICAgICAgIGZyYW1lc0VuY29kZWQg
PSBzdGF0SXRlbS5mcmFtZXNFbmNvZGVkOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIGZyYW1lc0VuY29kZWQ7CisgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIHRlc3RD
YW1lcmFJbWFnZSgpCitmdW5jdGlvbiB0ZXN0RnJhbWVFbmNvZGVkU3RhcnRlZChjb25uZWN0aW9u
LCBjb3VudCwgcHJldmlvdXNGcmFtZXNOdW1iZXIpCiB7Ci0gICAgZGF0YSA9IGdyYWJJbWFnZVBp
eGVscygpOwotCi0gICAgYXNzZXJ0X3RydWUoZGF0YVswXSA8IDIwKTsKLSAgICBhc3NlcnRfdHJ1
ZShkYXRhWzFdIDwgMjApOwotICAgIGFzc2VydF90cnVlKGRhdGFbMl0gPCAyMCk7Ci0KLSAgICB2
YXIgc2FtZSA9IHRydWU7Ci0gICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCBkYXRhLmxlbmd0
aDsgKytjcHRyKSB7Ci0gICAgICAgIGlmIChkYXRhW2NwdHJdICE9IGZpcnN0RnJhbWVEYXRhW2Nw
dHJdKSB7Ci0gICAgICAgICAgICBzYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBhc3NlcnRfZmFsc2Uoc2FtZSk7CisgICAgaWYgKGNvdW50ID09
PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKyAgICByZXR1cm4gZ2V0T3V0Ym91bmRS
VFBTdGF0c051bWJlck9mRW5jb2RlZEZyYW1lcyhjb25uZWN0aW9uKS50aGVuKChmcmFtZXNFbmNv
ZGVkTnVtYmVyKSA9PiB7CisgICAgICAgIGlmIChwcmV2aW91c0ZyYW1lc051bWJlciAmJiBmcmFt
ZXNFbmNvZGVkTnVtYmVyID4gcHJldmlvdXNGcmFtZXNOdW1iZXIpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChjb3VudCA9PT0gMjApCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoInRlc3QgaW5jcmVhc2luZyBmcmFtZSBlbmNvZGVkIHRpbWVkIG91dCIpOworICAg
ICAgICByZXR1cm4gd2FpdEZvcig1MCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4g
dGVzdEZyYW1lRW5jb2RlZFN0YXJ0ZWQoY29ubmVjdGlvbiwgKytjb3VudCwgZnJhbWVzRW5jb2Rl
ZE51bWJlcik7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCi1mdW5jdGlvbiB0ZXN0U3RvcHBl
ZEltYWdlKCkKK2Z1bmN0aW9uIHRlc3RGcmFtZUVuY29kZWRTdG9wcGVkKGNvbm5lY3Rpb24sIGNv
dW50LCBwcmV2aW91c0ZyYW1lc051bWJlcikKIHsKLSAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGdy
YWJJbWFnZVBpeGVscygpLCBmaXJzdEZyYW1lRGF0YSk7CisgICAgaWYgKGNvdW50ID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKyAgICByZXR1cm4gZ2V0T3V0Ym91bmRSVFBTdGF0
c051bWJlck9mRW5jb2RlZEZyYW1lcyhjb25uZWN0aW9uKS50aGVuKChmcmFtZXNFbmNvZGVkTnVt
YmVyKSA9PiB7CisgICAgICAgIGlmIChwcmV2aW91c0ZyYW1lc051bWJlciAmJiBmcmFtZXNFbmNv
ZGVkTnVtYmVyID09PSBwcmV2aW91c0ZyYW1lc051bWJlcikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKGNvdW50ID09PSAyMCkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdCgidGVzdCB0aGF0IG51bWJlciBvZiBlbmNvZGVkIGZyYW1lcyBzdG9wcGVkIGluY3JlYXNp
bmcgdGltZWQgb3V0Iik7CisgICAgICAgIHJldHVybiB3YWl0Rm9yKDUwKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIHJldHVybiB0ZXN0RnJhbWVFbmNvZGVkU3RvcHBlZChjb25uZWN0aW9uLCAr
K2NvdW50LCBmcmFtZXNFbmNvZGVkTnVtYmVyKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IHByb21pc2VfdGVzdCgodGVzdCkgPT4gewpAQCAtNjEsMTEgKzY0LDEzIEBAIHByb21pc2VfdGVz
dCgodGVzdCkgPT4gewogCiAgICAgdmFyIHNlbmRlcjsKICAgICB2YXIgZnJvbnRTdHJlYW07Cisg
ICAgdmFyIGZpcnN0Q29ubmVjdGlvbjsKICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZSB9KS50aGVuKChzdHJlYW0pID0+IHsKICAgICAg
ICAgZnJvbnRTdHJlYW0gPSBzdHJlYW07CiAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgICAgICBjcmVh
dGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICAgICAgY29u
bmVjdGlvbiA9IGZpcnN0Q29ubmVjdGlvbjsKICAgICAgICAgICAgICAgICBzZW5kZXIgPSBmaXJz
dENvbm5lY3Rpb24uYWRkVHJhY2soZnJvbnRTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgZnJv
bnRTdHJlYW0pOwogICAgICAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKICAgICAg
ICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewpA
QCAtNzgsMjMgKzgzLDEzIEBAIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewogICAgICAgICB2aWRl
by5zcmNPYmplY3QgPSByZW1vdGVTdHJlYW07CiAgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7
CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiB3YWl0Rm9yKDEwMCk7Ci0gICAg
fSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHN0b3JlRnJhbWUoKTsKLSAgICAgICAgcmV0dXJuIHdh
aXRGb3IoMTAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgdGVzdENhbWVyYUltYWdl
KCk7CisgICAgICAgIHJldHVybiB0ZXN0RnJhbWVFbmNvZGVkU3RhcnRlZChjb25uZWN0aW9uKTsK
ICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgcHJvbWlzZSA9IHNlbmRlci5yZXBsYWNlVHJh
Y2sobnVsbCk7CiAgICAgICAgIGFzc2VydF90cnVlKCEhc2VuZGVyLnRyYWNrKTsKICAgICAgICAg
cmV0dXJuIHByb21pc2U7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiB3YWl0
Rm9yKDEwMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHN0b3JlRnJhbWUoKTsKLSAg
ICAgICAgcmV0dXJuIHdhaXRGb3IoMTAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
dGVzdFN0b3BwZWRJbWFnZSgpOworICAgICAgICByZXR1cm4gdGVzdEZyYW1lRW5jb2RlZFN0b3Bw
ZWQoY29ubmVjdGlvbik7CiAgICAgfSk7CiB9LCAiU3RvcHBpbmcgc2VuZGluZyB2aWRlbyB1c2lu
ZyByZXBsYWNlVHJhY2siKTsKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRj
L3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbAppbmRleCAxMjcyNDcxZmY5ZjgwN2ZkMDUzY2MwYjEw
NTAzYmExMzFhYzg3NjEyLi42OTU1OWM4YTc3MzlmNzE5Njc1N2Y2ZjBjOGQ0NmE0MzMwMmU1OThm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1s
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTUs
NiArNSw3IEBACiAgICAgICAgIDx0aXRsZT5UZXN0aW5nIGJhc2ljIHZpZGVvIGV4Y2hhbmdlIGZy
b20gb2ZmZXJlciB0byByZWNlaXZlcjwvdGl0bGU+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+
CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgpAQCAtMzYsMTkgKzM3LDM5IEBAIGZ1bmN0aW9uIHRlc3RG
cm9udENhbWVyYUltYWdlKHRlc3ROYW1lKQogICAgIH0sICJ0ZXN0RnJvbnRDYW1lcmFJbWFnZSAi
ICsgdGVzdE5hbWUpOwogfQogCi1mdW5jdGlvbiB0ZXN0QmFja0NhbWVyYUltYWdlKHRlc3ROYW1l
KQorZnVuY3Rpb24gY2hlY2tCYWNrQ2FtZXJhKCkKIHsKLSAgICB0ZXN0KCgpID0+IHsKLSAgICAg
ICAgZGF0YSA9IGdyYWJJbWFnZVBpeGVscygpOworICAgIGRhdGEgPSBncmFiSW1hZ2VQaXhlbHMo
KTsKIAotICAgICAgICBhc3NlcnRfdHJ1ZShkYXRhWzBdID4gMTAwLCAiMSIpOwotICAgICAgICBh
c3NlcnRfdHJ1ZShkYXRhWzFdID4gMTAwLCAiMiIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkYXRh
WzJdID4gMTAwLCAiMyIpOworICAgIGlmIChkYXRhWzBdIDwgMTAwKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKGRhdGFbMV0gPCAxMDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoZGF0YVsyXSA8IDEwMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGFz
c2VydF90cnVlKGRhdGFbMF0gPCAyMDAsICI0Iik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRhdGFb
MV0gPCAyMDAsICI1Iik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRhdGFbMl0gPCAyMDAsICI2Iik7
Ci0gICAgfSwgInRlc3RCYWNrQ2FtZXJhSW1hZ2UgIiArIHRlc3ROYW1lKTsKKyAgICBpZiAoZGF0
YVswXSA+IDIwMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkYXRhWzFdID4gMjAw
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGRhdGFbMl0gPiAyMDApCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gdGVzdEJhY2tD
YW1lcmFJbWFnZShjb3VudCkKK3sKKyAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgY291bnQgPSAwOworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsK
KyAgICAgICAgaWYgKGNoZWNrQmFja0NhbWVyYSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoY291bnQgPT09IDIwKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KCJ0ZXN0IGJhY2sgY2FtZXJhIHRpbWVkIG91dCIpOworICAgICAgICByZXR1cm4gd2FpdEZvcig1
MCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gdGVzdEJhY2tDYW1lcmFJbWFnZSgr
K2NvdW50KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHByb21pc2VfdGVzdCgodGVzdCkg
PT4gewpAQCAtODQsOSArMTA1LDcgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAg
IHJldHVybiBwcm9taXNlOwogICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICBhc3NlcnRfdHJ1
ZShzZW5kZXIudHJhY2sgPT09IGJhY2tTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7Ci0gICAg
ICAgIHJldHVybiB3YWl0Rm9yKDUwMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHRl
c3RCYWNrQ2FtZXJhSW1hZ2UoInRlc3QxIik7CisgICAgICAgIHJldHVybiB0ZXN0QmFja0NhbWVy
YUltYWdlKCk7CiAgICAgfSk7CiB9LCAiU3dpdGNoaW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1l
cmEiKTsKIApAQCAtOTgsOSArMTE3LDkgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAg
dmFyIGZyb250U3RyZWFtOwogICAgIHZhciBiYWNrU3RyZWFtOwogCi0gICAgcmV0dXJuIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHsgd2lkdGg6IDY0MCwgaGVp
Z2h0OiA0ODAsIGZhY2luZ01vZGU6IHsgZXhhY3Q6IFsidXNlciJdIH0gfSB9KS50aGVuKChzdHJl
YW0pID0+IHsKKyAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
eyB2aWRlbzogeyB3aWR0aDogMTA4MCwgaGVpZ2h0OiA3MjAsIGZhY2luZ01vZGU6IHsgZXhhY3Q6
IFsidXNlciJdIH0gfSB9KS50aGVuKChzdHJlYW0pID0+IHsKICAgICAgICAgZnJvbnRTdHJlYW0g
PSBzdHJlYW07Ci0gICAgICAgIGFzc2VydF90cnVlKGZyb250U3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQgPT09IDQ4MCwgImZyb250U3RyZWFtIHNob3VsZCBi
ZSBiaWciKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZnJvbnRTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCA9PT0gNzIwLCAiZnJvbnRTdHJlYW0gc2hvdWxkIGJl
IGJpZyIpOwogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
ewogICAgICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewog
ICAgICAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhmcm9udFN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBmcm9udFN0cmVhbSk7CkBAIC0xMTYsMTUgKzEzNSwx
MyBAQCBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgcmV0dXJuIHZpZGVvLnBsYXko
KTsKICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgdGVzdEZyb250Q2FtZXJhSW1hZ2UoInRl
c3QyIik7Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7IHZpZGVvOiB7IHdpZHRoOiAzMjAsIGhlaWdodDogMjQwLCBmYWNpbmdNb2RlOiB7IGV4YWN0
OiBbImVudmlyb25tZW50Il0gfSB9IH0pOworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBmYWNpbmdNb2RlOiB7IGV4YWN0OiBbImVu
dmlyb25tZW50Il0gfSB9IH0pOwogICAgIH0pLnRoZW4oKHN0cmVhbSkgPT4gewogICAgICAgICBi
YWNrU3RyZWFtID0gc3RyZWFtOwotICAgICAgICBhc3NlcnRfdHJ1ZShiYWNrU3RyZWFtLmdldFZp
ZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKS5oZWlnaHQgPT09IDI0MCwgImJhY2tTdHJlYW0g
c2hvdWxkIGJlIHNtYWxsIik7CisgICAgICAgIGFzc2VydF90cnVlKGJhY2tTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpLmhlaWdodCA9PT0gNDgwLCAiYmFja1N0cmVhbSBz
aG91bGQgYmUgc21hbGwiKTsKICAgICAgICAgcmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2soYmFj
a1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAg
ICAgcmV0dXJuIHdhaXRGb3IoNTAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgdGVz
dEJhY2tDYW1lcmFJbWFnZSgidGVzdDIiKTsKKyAgICAgICAgcmV0dXJuIHRlc3RCYWNrQ2FtZXJh
SW1hZ2UoKTsKICAgICB9KTsKIH0sICJTd2l0Y2hpbmcgZnJvbSBmcm9udCB0byBiYWNrIGNhbWVy
YSwgd2l0aCBsb3dlciByZXNvbHV0aW9uIik7CiAKQEAgLTE2Miw2ICsxNzksNyBAQCBwcm9taXNl
X3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAi
SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yIiwgc2VuZGVyLnJlcGxhY2VUcmFjayhiYWNrU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0pKTsKICAgICB9KTsKIH0sICJTd2l0Y2hpbmcgZnJvbSBmcm9u
dCB0byBiYWNrIGNhbWVyYSwgd2l0aCBoaWdoZXIgcmVzb2x1dGlvbiIpOworCiAgICAgICAgIDwv
c2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321124</attachid>
            <date>2017-09-18 13:37:12 -0700</date>
            <delta_ts>2017-09-20 10:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172645-20170918133712.patch</filename>
            <type>text/plain</type>
            <size>19384</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmI3YjY2NzM0ZmJkOTAyOTJhYzMy
NjNjNGFkYjE0NmUzYWE1NjVkNC4uMDcwMWQ4NmJkZjAwMjg0ZDU3MTc2YmNhMDJmNWM4ODhhNmJk
OGNiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHdlYnJ0YyByZXBsYWNlIHRyYWNrIHRl
c3RzIGxlc3MgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjY0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxMTgyMTg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92aW5nIHN0YWJp
bGl0eSBvZiB0ZXN0cyBieSByZXRyeWluZyB0ZXN0cyBldmVyeSA1MCBtcyBpbnN0ZWFkIG9mIG9u
Y2UuCisgICAgICAgIERvaW5nIHNvbWUgcmVmYWN0b3JpbmcgdG8gcHV0IG1vcmUgaGVscGVyIHJv
dXRpbmVzIGluIHJvdXRpbmUuanMKKyAgICAgICAgUmVsYXhpbmcgYmxhY2sgcGl4ZWwgY2hlY2sg
YXMgY29tcHJlc3Npb24gbWF5IGludHJvZHVjZSBzb21lIHVuY2VydGFpbnR5LgorICAgICAgICBJ
dCBpcyBub3cgY29uc2lkZXJlZCBibGFjayBpZiBSR0IgPCAoMzAsIDMwLCAzMCkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOiBNYXJraW5nIHZpZGVvLW11dGUuaHRtbCBhcyBQYXNzL0Zh
aWwgaW5zdGVhZCBvZiBGYWlsLgorICAgICAgICAqIHdlYnJ0Yy9yb3V0aW5lcy5qczoKKyAgICAg
ICAgKiB3ZWJydGMvdmlkZW8tbXV0ZS5odG1sOgorICAgICAgICAqIHdlYnJ0Yy92aWRlby1yZXBs
YWNlLW11dGVkLXRyYWNrLmh0bWw6CisgICAgICAgICogd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJh
Y2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLXRv
LW51bGwuaHRtbDoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sOgor
CiAyMDE3LTA5LTE3ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0eWxlcyBSZWRlc2lnbjogc3VwcG9ydCB0b2dnbGluZyBw
cm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MjUzZDBhNjc2MTVlYzdmOGQwNzIzODZk
ZDE3ZWIzMzFkMzExNjZlLi5iYzNmODRhNDg2MTNjYTk0MzMwMjRjMjQzMWMzN2Y0NTU2MjA0YmFh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc5OSw3ICs3OTksNyBAQCB3ZWJydGMvdmlkZW8tcmVw
bGFjZS10cmFjay5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYnJ0Yy92aWRlby1nZXRQYXJhbWV0
ZXJzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNzAxNzggd2VicnRjL3ZpZGVvLXJl
cGxhY2UtdHJhY2stdG8tbnVsbC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
NzUzMDUgd2VicnRjL3ZpZGVvLXJvdGF0aW9uLmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgXQotd2Vi
a2l0Lm9yZy9iLzE3MDcwNCB3ZWJydGMvdmlkZW8tbXV0ZS5odG1sIFsgRmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMTcwNzA0IHdlYnJ0Yy92aWRlby1tdXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzE3MDcwMSB3ZWJydGMvZGF0YWNoYW5uZWwvYnVmZmVyZWRBbW91bnRMb3dU
aHJlc2hvbGQtZGVmYXVsdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNzM0
ODYgd2VicnRjL3ZpZGVvLXJlcGxhY2UtbXV0ZWQtdHJhY2suaHRtbCBbIFBhc3MgRmFpbHVyZSBU
aW1lb3V0IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzIGIv
TGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCmluZGV4IDQxMzVhYmE5YzU1NGVjMjcwM2Y4
ZTgyMTc5MTgxNTlkZWI1M2ViZjIuLjhkOGNjNjM2NWJlN2EyMmI3YzcxMWQ3ZjBhYjQyNWUyZWRh
MjA1MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcworKysgYi9M
YXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMKQEAgLTE2MSwzICsxNjEsNDEgQEAgYXN5bmMg
ZnVuY3Rpb24gZG9IdW1BbmFseXNpcyhzdHJlYW0sIGV4cGVjdGVkKQogICAgIGF3YWl0IGNvbnRl
eHQuY2xvc2UoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK2Z1bmN0aW9uIGlzVmlkZW9CbGFj
ayhjYW52YXMsIHZpZGVvLCBzdGFydFgsIHN0YXJ0WSwgZ3JhYmJlZFdpZHRoLCBncmFiYmVkSGVp
Z2h0KQoreworICAgIGNhbnZhcy53aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGg7CisgICAgY2FudmFz
LmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0OworICAgIGlmICghZ3JhYmJlZEhlaWdodCkgewor
ICAgICAgICBzdGFydFggPSAwOworICAgICAgICBzdGFydFkgPSAwOworICAgICAgICBncmFiYmVk
V2lkdGggPSBjYW52YXMud2lkdGg7CisgICAgICAgIGdyYWJiZWRIZWlnaHQgPSBjYW52YXMuaGVp
Z2h0OworICAgIH0KKworICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRl
bywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgIGltYWdlRGF0YSA9
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YShzdGFydFgsIHN0YXJ0WSwgZ3Jh
YmJlZFdpZHRoLCBncmFiYmVkSGVpZ2h0KTsKKyAgICBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7Cisg
ICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCBncmFiYmVkV2lkdGggKiBncmFiYmVkSGVpZ2h0
OyArK2NwdHIpIHsKKyAgICAgICAgLy8gQXBwcm94aW1hdGl2ZWx5IGJsYWNrIHBpeGVscy4KKyAg
ICAgICAgaWYgKGRhdGFbNCAqIGNwdHJdID4gMzAgfHwgZGF0YVs0ICogY3B0ciArIDFdID4gMzAg
fHwgZGF0YVs0ICogY3B0ciArIDJdID4gMzApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCithc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvQmxh
Y2soZXhwZWN0ZWQsIGNhbnZhcywgdmlkZW8sIGVycm9yTWVzc2FnZSwgY291bnRlcikKK3sKKyAg
ICBpZiAoaXNWaWRlb0JsYWNrKGNhbnZhcywgdmlkZW8pID09PSBleHBlY3RlZCkKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworCisgICAgaWYgKGNvdW50ZXIgPiA1MCkgeworICAg
ICAgICBpZiAoIWVycm9yTWVzc2FnZSkKKyAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJjaGVj
a1ZpZGVvQmxhY2sgdGltZWQgb3V0IGV4cGVjdGluZyAiICsgZXhwZWN0ZWQ7CisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChlcnJvck1lc3NhZ2UpOworICAgIH0KKworICAgIGF3YWl0IHdh
aXRGb3IoNTApOworICAgIHJldHVybiBjaGVja1ZpZGVvQmxhY2soZXhwZWN0ZWQsIGNhbnZhcywg
dmlkZW8sIGVycm9yTWVzc2FnZSwgKytjb3VudGVyKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tbXV0
ZS5odG1sCmluZGV4IGEwM2IyMTllMGRiMmM2ZTY2NjdkYTI2MDNhMjViNTM3NzdkNjA0NWEuLjUz
Y2RlYjQyY2FlM2U5YjVlZmFmNzExNjY4MzFiMjUyNzBhNmViOGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1tdXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3Zp
ZGVvLW11dGUuaHRtbApAQCAtMTUsNDEgKzE1LDYgQEAKICAgICAgICAgPGNhbnZhcyBpZD0iY2Fu
dmFzMyIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPjwvY2FudmFzPgogICAgICAgICA8c2NyaXB0
IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KLWZ1bmN0aW9u
IGlzVmlkZW9CbGFjayhpZCkKLXsKLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpOwotICAgIGNhbnZhcy53aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGg7Ci0gICAgY2Fu
dmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0OwotICAgIGNhbnZhcy5nZXRDb250ZXh0KCcy
ZCcpLmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsK
LQotICAgIGltYWdlRGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgw
LCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotICAgIGRhdGEgPSBpbWFnZURhdGEu
ZGF0YTsKLSAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IGNhbnZhcy53aWR0aCAqIGNhbnZh
cy5oZWlnaHQ7ICsrY3B0cikgewotICAgICAgICAvLyBBcHByb3hpbWF0aXZlbHkgYmxhY2sgcGl4
ZWxzLgotICAgICAgICBpZiAoZGF0YVs0ICogY3B0cl0gPiAxMCB8fCBkYXRhWzQgKiBjcHRyICsg
MV0gPiAxMCB8fCBkYXRhWzQgKiBjcHRyICsgMl0gPiAxMCkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHBvbGxWaWRlb0Js
YWNrQ2hlY2soZXhwZWN0ZWQsIGlkLCByZXNvbHZlKQotewotICAgIGlmIChpc1ZpZGVvQmxhY2so
aWQpID09PSBleHBlY3RlZCkgewotICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBzZXRUaW1lb3V0KCgpID0+IHBvbGxWaWRlb0JsYWNrQ2hlY2soZXhwZWN0
ZWQsIGlkLCByZXNvbHZlKSwgNTApOwotfQotCi1mdW5jdGlvbiBjaGVja1ZpZGVvQmxhY2soZXhw
ZWN0ZWQsIGlkKQotewotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7Ci0gICAgICAgcG9sbFZpZGVvQmxhY2tDaGVjayhleHBlY3RlZCwgaWQsIHJlc29sdmUpOwot
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiY2hlY2tWaWRlb0JsYWNrIHRpbWVkIG91
dCBmb3IgIiArIGlkICsgIiBleHBlY3RlZCAiICsgZXhwZWN0ZWQpLCA1MDAwKTsKLSAgICB9KTsK
LX0KLQogdmFyIHRyYWNrOwogdmFyIHJlbW90ZVRyYWNrOwogdmFyIHJlY2VpdmluZ0Nvbm5lY3Rp
b247CkBAIC05MSwxMiArNTYsMTIgQEAgcHJvbWlzZV90ZXN0KCgpID0+IHsKIH0sICJFbnN1cmlu
ZyBjb25uZWN0aW9uIHN0YXRlIGlzIGNvbm5lY3RlZCIpOwogCiBwcm9taXNlX3Rlc3QoKHRlc3Qp
ID0+IHsKLSAgICByZXR1cm4gY2hlY2tWaWRlb0JsYWNrKGZhbHNlLCAiY2FudmFzMSIpOworICAg
IHJldHVybiBjaGVja1ZpZGVvQmxhY2soZmFsc2UsIGNhbnZhczEsIHZpZGVvKTsKIH0sICJUcmFj
ayBpcyBlbmFibGVkLCB2aWRlbyBzaG91bGQgbm90IGJlIGJsYWNrIik7CiAKIHByb21pc2VfdGVz
dCgodGVzdCkgPT4gewogICAgIHRyYWNrLmVuYWJsZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gY2hl
Y2tWaWRlb0JsYWNrKHRydWUsICJjYW52YXMyIik7CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFj
ayh0cnVlLCBjYW52YXMyLCB2aWRlbyk7CiB9LCAiVHJhY2sgaXMgZGlzYWJsZWQsIHZpZGVvIHNo
b3VsZCBiZSBibGFjayIpOwogCiBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKQEAgLTExNiw3ICs4
MSw3IEBAIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewogCiBwcm9taXNlX3Rlc3QoKHRlc3QpID0+
IHsKICAgICB0cmFjay5lbmFibGVkID0gdHJ1ZTsKLSAgICByZXR1cm4gY2hlY2tWaWRlb0JsYWNr
KHRydWUsICJjYW52YXMyIik7CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhmYWxzZSwgY2Fu
dmFzMiwgdmlkZW8pOwogfSwgIlRyYWNrIGlzIGVuYWJsZWQsIHZpZGVvIHNob3VsZCBub3QgYmUg
YmxhY2siKTsKIAogICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnJ0Yy92aWRlby1yZXBsYWNlLW11dGVkLXRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcmVwbGFjZS1tdXRlZC10cmFjay5odG1sCmluZGV4IDM5MGQ5NzQ3YTdmZmFmYTQ4MWU1
M2EwOTA5MTBhN2YxYmY4YzZmNTAuLmUzNTdiZmVjYTcwZTRhYTNhMDcwYmE3ZjgwYjJmN2I4NDMy
MWM5NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLW11dGVk
LXRyYWNrLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtbXV0ZWQt
dHJhY2suaHRtbApAQCAtMTIsNjQgKzEyLDYgQEAKICAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52YXM+CiAgICAgICAgIDxzY3JpcHQgc3Jj
ID0icm91dGluZXMuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgotZnVuY3Rpb24gaXNW
aWRlb0JsYWNrKCkKLXsKLSAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOwotICAg
IGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsKLSAgICBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKS5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCk7Ci0KLSAgICBpbWFnZURhdGEgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURh
dGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKLSAgICBkYXRhID0gaW1hZ2VE
YXRhLmRhdGE7Ci0gICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCBjYW52YXMud2lkdGggKiBj
YW52YXMuaGVpZ2h0OyArK2NwdHIpIHsKLSAgICAgICAgLy8gQXBwcm94aW1hdGl2ZWx5IGJsYWNr
IHBpeGVscy4KLSAgICAgICAgaWYgKGRhdGFbNCAqIGNwdHJdID4gMTAgfHwgZGF0YVs0ICogY3B0
ciArIDFdID4gMTAgfHwgZGF0YVs0ICogY3B0ciArIDJdID4gMTApCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi12YXIgc3RvcFBvbGxpbmcg
PSBmYWxzZTsKLWZ1bmN0aW9uIHBvbGxWaWRlb0JsYWNrQ2hlY2soZXhwZWN0ZWQsIHJlc29sdmUs
IGRlbGF5KQotewotICAgIGlmIChpc1ZpZGVvQmxhY2soKSA9PT0gZXhwZWN0ZWQgfHwgc3RvcFBv
bGxpbmcpIHsKLSAgICAgICAgcmVzb2x2ZSh0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHNldFRpbWVvdXQoKCkgPT4gcG9sbFZpZGVvQmxhY2tDaGVjayhleHBlY3RlZCwgcmVz
b2x2ZSksIGRlbGF5KTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gY2hlY2tWaWRlb0JsYWNrKGV4cGVj
dGVkLCBkdXJhdGlvbiwgaWQsIGRlbGF5KQotewotICAgIHN0b3BQb2xsaW5nID0gZmFsc2U7Ci0g
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgcG9s
bFZpZGVvQmxhY2tDaGVjayhleHBlY3RlZCwgcmVzb2x2ZSwgZGVsYXkpOwotICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpOwotICAgICAgICAgICAg
c3RvcFBvbGxpbmcgPSB0cnVlOwotICAgICAgICB9LCBkdXJhdGlvbik7Ci0gICAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIGdyYWJJbWFnZVBpeGVscygpCi17Ci0gICAgY2FudmFzLndpZHRoID0gdmlkZW8u
dmlkZW9XaWR0aDsKLSAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7Ci0gICAg
Y2FudmFzLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQpOwotCi0gICAgaW1hZ2VEYXRhID0gY2FudmFzLmdldENvbnRleHQo
JzJkJykuZ2V0SW1hZ2VEYXRhKDIwLCAyMCwgMiwgMik7Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5k
YXRhOwotfQotCi1hc3luYyBmdW5jdGlvbiBjaGVja0Zvck5vQmxhY2tGcmFtZXMoKQotewotICAg
IGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgMTA7IGNwdHIrKykgewotICAgICAgICBpZiAoIShh
d2FpdCBjaGVja1ZpZGVvQmxhY2sodHJ1ZSwgMTUwMCwgInRlc3QzIiwgNTApKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHByb21pc2Vf
dGVzdCgodGVzdCkgPT4gewogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVz
dFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOwpAQCAtOTQsMjIgKzM2LDE1IEBA
IHByb21pc2VfdGVzdCgodGVzdCkgPT4gewogICAgICAgICByZXR1cm4gdmlkZW8ucGxheSgpOwog
ICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICBmaXJzdFRyYWNrLmVuYWJsZWQgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIHdhaXRGb3IoMjAwKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrVmlkZW9C
bGFjayh0cnVlLCBjYW52YXMsIHZpZGVvLCAiQ2hlY2sgd2UgcmVjZWl2ZSBibGFjayBmcmFtZXMg
YWZ0ZXIgZGlzYWJsaW5nIHRoZSB0cmFjayIpOwogICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyBm
YWNpbmdNb2RlOiB7IGV4YWN0OiBbImVudmlyb25tZW50Il0gfSB9IH0pOwogICAgIH0pLnRoZW4o
KHN0cmVhbSkgPT4gewogICAgICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayhzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXSk7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVy
biB3YWl0Rm9yKDIwMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiBjaGVj
a1ZpZGVvQmxhY2soZmFsc2UsIDUwMDAsICJ0ZXN0MiIsIDIwMCk7Ci0gICAgfSkudGhlbigocmVz
dWx0KSA9PiB7Ci0gICAgICAgIGFzc2VydF90cnVlKHJlc3VsdCwgImV4cGVjdCB0byByZWNlaXZl
IHNvbWUgbm9uIGJsYWNrIGZyYW1lcyIpOworICAgICAgICByZXR1cm4gY2hlY2tWaWRlb0JsYWNr
KGZhbHNlLCBjYW52YXMsIHZpZGVvLCAiQ2hlY2sgd2UgcmVjZWl2ZSBzb21lIG5vbiBibGFjayBm
cmFtZXMiKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgLy8gTGV0J3MgZW5zdXJlIHRo
ZXJlIGFyZSBubyBibGFjayBmcmFtZXMgYmVpbmcgcmVjZWl2ZWQuCi0gICAgICAgIHJldHVybiBj
aGVja0Zvck5vQmxhY2tGcmFtZXMoKTsKLSAgICB9KS50aGVuKChyZXN1bHQpID0+IHsKLSAgICAg
ICAgYXNzZXJ0X3RydWUocmVzdWx0LCAiY2hlY2sgbm8gYmxhY2sgZnJhbWUiKTsKKyAgICAgICAg
cmV0dXJuIGNoZWNrVmlkZW9CbGFjayh0cnVlLCBjYW52YXMsIHZpZGVvLCAiQ2hlY2sgd2UgZG8g
bm90IHJlY2VpdmUgYW55IGJsYWNrIGZyYW1lIiwgNDApLnRoZW4oYXNzZXJ0X3VucmVhY2hlZCwg
KCkgPT4geyB9KTsKICAgICB9KTsKIH0sICJTd2l0Y2hpbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFi
bGVkIHRyYWNrIik7CiAgICAgICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
cnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0CmluZGV4IDRlMWVmZGEzYWZjMWRm
ZDMzYWRhOWNmNTU3NTliMzhkZmViY2QyNjcuLjY3NTgyMjE2NmE0MzE0MWUxZjkyOTY1MzE5Mjlk
ZmVhMWQyNTAxOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNl
LXRyYWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFj
ZS10cmFjay1leHBlY3RlZC50eHQKQEAgLTIsMTAgKzIsNCBAQAogUEFTUyBTd2l0Y2hpbmcgZnJv
bSBmcm9udCB0byBiYWNrIGNhbWVyYSAKIFBBU1MgU3dpdGNoaW5nIGZyb20gZnJvbnQgdG8gYmFj
ayBjYW1lcmEsIHdpdGggbG93ZXIgcmVzb2x1dGlvbiAKIFBBU1MgU3dpdGNoaW5nIGZyb20gZnJv
bnQgdG8gYmFjayBjYW1lcmEsIHdpdGggaGlnaGVyIHJlc29sdXRpb24gCi1QQVNTIHRlc3RGcm9u
dENhbWVyYUltYWdlIHRlc3QxIAotUEFTUyB0ZXN0QmFja0NhbWVyYUltYWdlIHRlc3QxIAotUEFT
UyB0ZXN0RnJvbnRDYW1lcmFJbWFnZSB0ZXN0MiAKLVBBU1MgdGVzdEJhY2tDYW1lcmFJbWFnZSB0
ZXN0MiAKLVBBU1MgdGVzdEZyb250Q2FtZXJhSW1hZ2UgdGVzdDMgCi1QQVNTIHRlc3RCYWNrQ2Ft
ZXJhSW1hZ2UgdGVzdDQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1y
ZXBsYWNlLXRyYWNrLXRvLW51bGwuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBs
YWNlLXRyYWNrLXRvLW51bGwuaHRtbAppbmRleCA3ODc4N2JmZjg4NDZmZmY1MzkxNjJhZGJmY2U0
YmQxZDYwZmJkYzM1Li5kMGE3YmQ1ZGFkNDg0YWQ0MGE0NDRiMjc3NzdhYTg4NjExMmQ5OWFhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay10by1udWxs
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2stdG8tbnVs
bC5odG1sCkBAIC0xNSw2MCArMTUsNDggQEAKIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvIik7CiBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
CiAKLWZ1bmN0aW9uIGdyYWJJbWFnZVBpeGVscygpCithc3luYyBmdW5jdGlvbiBnZXRPdXRib3Vu
ZFJUUFN0YXRzTnVtYmVyT2ZFbmNvZGVkRnJhbWVzKGNvbm5lY3Rpb24pCiB7Ci0gICAgY2FudmFz
LndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKLSAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlk
ZW9IZWlnaHQ7Ci0gICAgY2FudmFzLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHZpZGVvLCAw
LCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotCi0gICAgaW1hZ2VEYXRhID0gY2Fu
dmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRhKDIwLCAyMCwgMTAwLCAxMDApOwotICAg
IHJldHVybiBpbWFnZURhdGEuZGF0YTsKLSB9Ci0KLXZhciBmaXJzdEZyYW1lRGF0YTsKLQotZnVu
Y3Rpb24gc3RvcmVGcmFtZSgpCi17Ci0gICAgZmlyc3RGcmFtZURhdGEgPSBncmFiSW1hZ2VQaXhl
bHMoKTsKKyAgICB2YXIgcmVwb3J0ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRTdGF0cygpOworICAg
IHZhciBmcmFtZXNFbmNvZGVkOworICAgIHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4gewor
ICAgICAgICBpZiAoc3RhdEl0ZW0udHlwZSA9PT0gIm91dGJvdW5kLXJ0cCIpIHsKKyAgICAgICAg
ICAgIGZyYW1lc0VuY29kZWQgPSBzdGF0SXRlbS5mcmFtZXNFbmNvZGVkOworICAgICAgICB9Cisg
ICAgfSk7CisgICAgcmV0dXJuIGZyYW1lc0VuY29kZWQ7CiB9CiAKLWZ1bmN0aW9uIGNoZWNrQ2Ft
ZXJhSW1hZ2VJc0RpZmZlcmVudCgpCithc3luYyBmdW5jdGlvbiB0ZXN0RnJhbWVFbmNvZGVkU3Rh
cnRlZChjb25uZWN0aW9uLCBjb3VudCwgcHJldmlvdXNGcmFtZXNOdW1iZXIpCiB7Ci0gICAgZGF0
YSA9IGdyYWJJbWFnZVBpeGVscygpOworICAgIHZhciBmcmFtZXNFbmNvZGVkTnVtYmVyID0gYXdh
aXQgZ2V0T3V0Ym91bmRSVFBTdGF0c051bWJlck9mRW5jb2RlZEZyYW1lcyhjb25uZWN0aW9uKTsK
KyAgICBpZiAocHJldmlvdXNGcmFtZXNOdW1iZXIgJiYgZnJhbWVzRW5jb2RlZE51bWJlciA+IHBy
ZXZpb3VzRnJhbWVzTnVtYmVyKQorICAgICAgICByZXR1cm47CiAKLSAgICBhc3NlcnRfdHJ1ZShk
YXRhWzBdIDwgMjApOwotICAgIGFzc2VydF90cnVlKGRhdGFbMV0gPCAyMCk7Ci0gICAgYXNzZXJ0
X3RydWUoZGF0YVsyXSA8IDIwKTsKKyAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgY291bnQgPSAwOwogCi0gICAgdmFyIHNhbWUgPSB0cnVlOwotICAgIGZvciAodmFyIGNwdHIg
PSAwOyBjcHRyIDwgZGF0YS5sZW5ndGg7ICsrY3B0cikgewotICAgICAgICBpZiAoZGF0YVtjcHRy
XSAhPSBmaXJzdEZyYW1lRGF0YVtjcHRyXSkgewotICAgICAgICAgICAgc2FtZSA9IGZhbHNlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuICFzYW1lOwor
ICAgIGlmIChjb3VudCA+PSAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJ0ZXN0
IGluY3JlYXNpbmcgZnJhbWUgZW5jb2RlZCB0aW1lZCBvdXQiKTsKKworICAgIGF3YWl0IHdhaXRG
b3IoMTAwKTsKKyAgICByZXR1cm4gdGVzdEZyYW1lRW5jb2RlZFN0YXJ0ZWQoY29ubmVjdGlvbiwg
Kytjb3VudCwgZnJhbWVzRW5jb2RlZE51bWJlcik7CiB9CiAKLWZ1bmN0aW9uIHRlc3RDYW1lcmFJ
bWFnZShyZXNvbHZlLCByZWplY3QsIGNvdW50ZXIpCithc3luYyBmdW5jdGlvbiB0ZXN0RnJhbWVF
bmNvZGVkU3RvcHBlZChjb25uZWN0aW9uLCBjb3VudCwgcHJldmlvdXNGcmFtZXNOdW1iZXIpCiB7
Ci0gICAgaWYgKCFjb3VudGVyKQotICAgICAgICBjb3VudGVyID0gMDsKLQotICAgIGlmIChjaGVj
a0NhbWVyYUltYWdlSXNEaWZmZXJlbnQoKSkgewotICAgICAgICByZXNvbHZlKCk7CisgICAgdmFy
IGZyYW1lc0VuY29kZWROdW1iZXIgPSBhd2FpdCBnZXRPdXRib3VuZFJUUFN0YXRzTnVtYmVyT2ZF
bmNvZGVkRnJhbWVzKGNvbm5lY3Rpb24pOworICAgIGlmIChwcmV2aW91c0ZyYW1lc051bWJlciAm
JiBmcmFtZXNFbmNvZGVkTnVtYmVyID09PSBwcmV2aW91c0ZyYW1lc051bWJlcikKICAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoKytjb3VudGVyID09PSA0MCkgewotICAgICAgICByZWpl
Y3QoInRlc3RDYW1lcmFJbWFnZSB0aW1lZCBvdXQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBzZXRUaW1lb3V0KCgpID0+IHRlc3RDYW1lcmFJbWFnZShyZXNvbHZlLCByZWplY3QsIGNv
dW50ZXIpLCAxMDApOwotfQogCi1mdW5jdGlvbiB0ZXN0U3RvcHBlZEltYWdlKCkKLXsKLSAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKGdyYWJJbWFnZVBpeGVscygpLCBmaXJzdEZyYW1lRGF0YSk7Cisg
ICAgaWYgKGNvdW50ID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKworICAgIGlm
IChjb3VudCA9PT0gMjApCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgidGVzdCB0aGF0
IG51bWJlciBvZiBlbmNvZGVkIGZyYW1lcyBzdG9wcGVkIGluY3JlYXNpbmcgdGltZWQgb3V0Iik7
CisKKyAgICBhd2FpdCB3YWl0Rm9yKDEwMCk7CisgICAgcmV0dXJuIHRlc3RGcmFtZUVuY29kZWRT
dG9wcGVkKGNvbm5lY3Rpb24sICsrY291bnQsIGZyYW1lc0VuY29kZWROdW1iZXIpOwogfQogCiBw
cm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKQEAgLTc3LDExICs2NSwxMyBAQCBwcm9taXNlX3Rlc3Qo
KHRlc3QpID0+IHsKIAogICAgIHZhciBzZW5kZXI7CiAgICAgdmFyIGZyb250U3RyZWFtOworICAg
IHZhciBjb25uZWN0aW9uOwogICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7IHZpZGVvOiB0cnVlIH0pLnRoZW4oKHN0cmVhbSkgPT4gewogICAgICAgICBmcm9u
dFN0cmVhbSA9IHN0cmVhbTsKICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgIGNyZWF0ZUNvbm5l
Y3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9u
ID0gZmlyc3RDb25uZWN0aW9uOwogICAgICAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVj
dGlvbi5hZGRUcmFjayhmcm9udFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBmcm9udFN0cmVh
bSk7CiAgICAgICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewogICAgICAgICAgICAg
ICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CkBAIC05NCwy
NSArODQsMTQgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgIHZpZGVvLnNyY09i
amVjdCA9IHJlbW90ZVN0cmVhbTsKICAgICAgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTsKICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIHdhaXRGb3IoMTAwKTsKKyAgICAgICAgcmV0
dXJuIHRlc3RGcmFtZUVuY29kZWRTdGFydGVkKGNvbm5lY3Rpb24pOwogICAgIH0pLnRoZW4oKCkg
PT4gewotICAgICAgICBzdG9yZUZyYW1lKCk7Ci0gICAgICAgIHJldHVybiB3YWl0Rm9yKDEwMCk7
Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgICAgICB0ZXN0Q2FtZXJhSW1hZ2UocmVzb2x2ZSwgcmVq
ZWN0KTsKLSAgICAgICAgfSk7CiAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgIHByb21pc2Ug
PSBzZW5kZXIucmVwbGFjZVRyYWNrKG51bGwpOwogICAgICAgICBhc3NlcnRfdHJ1ZSghIXNlbmRl
ci50cmFjayk7CiAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgIH0pLnRoZW4oKCkgPT4gewot
ICAgICAgICByZXR1cm4gd2FpdEZvcigxMDApOwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICBzdG9yZUZyYW1lKCk7Ci0gICAgICAgIHJldHVybiB3YWl0Rm9yKDEwMCk7Ci0gICAgfSkudGhl
bigoKSA9PiB7Ci0gICAgICAgIHRlc3RTdG9wcGVkSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJuIHRl
c3RGcmFtZUVuY29kZWRTdG9wcGVkKGNvbm5lY3Rpb24pOwogICAgIH0pOwogfSwgIlN0b3BwaW5n
IHNlbmRpbmcgdmlkZW8gdXNpbmcgcmVwbGFjZVRyYWNrIik7CiAgICAgICAgIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKaW5kZXggNGYzNzk1
OGE0ODRkZTA1N2FkZTU3Yzk4MjZmNWQ5ODZiZDcxMDE2Ny4uNzE3MzlhYWEwZGI3ZDhlM2E3ODdi
MDY2ZTE5ZDA2NWViZWUxNWY0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVv
LXJlcGxhY2UtdHJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFj
ZS10cmFjay5odG1sCkBAIC01LDYgKzUsNyBAQAogICAgICAgICA8dGl0bGU+VGVzdGluZyBiYXNp
YyB2aWRlbyBleGNoYW5nZSBmcm9tIG9mZmVyZXIgdG8gcmVjZWl2ZXI8L3RpdGxlPgogICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KICAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CiAgICAg
PC9oZWFkPgogICAgIDxib2R5PgogPGRpdiBpZD0ibG9nIj48L2Rpdj4KQEAgLTI1LDMwICsyNiw0
MSBAQCBmdW5jdGlvbiBncmFiSW1hZ2VQaXhlbHMoKQogICAgIHJldHVybiBpbWFnZURhdGEuZGF0
YTsKICB9CiAKLWZ1bmN0aW9uIHRlc3RGcm9udENhbWVyYUltYWdlKHRlc3ROYW1lKQorYXN5bmMg
ZnVuY3Rpb24gdGVzdEZyb250Q2FtZXJhSW1hZ2UoY291bnRlcikKIHsKLSAgICB0ZXN0KCgpID0+
IHsKLSAgICAgICAgZGF0YSA9IGdyYWJJbWFnZVBpeGVscygpOworICAgIGlmICghY291bnRlcikK
KyAgICAgICAgY291bnRlciA9IDA7CiAKLSAgICAgICAgYXNzZXJ0X3RydWUoZGF0YVswXSA8IDIw
LCAiMSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkYXRhWzFdIDwgMjAsICIyIik7Ci0gICAgICAg
IGFzc2VydF90cnVlKGRhdGFbMl0gPCAyMCwgIjMiKTsKLSAgICB9LCAidGVzdEZyb250Q2FtZXJh
SW1hZ2UgIiArIHRlc3ROYW1lKTsKKyAgICBpZiAoaXNWaWRlb0JsYWNrKGNhbnZhcywgdmlkZW8s
IDIwLCAyMCwgMiAsMikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjb3VudGVyID49IDIw
KQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInRlc3RGcm9udENhbWVyYUltYWdlIHRp
bWVkIG91dCIpOworCisgICAgYXdhaXQgd2FpdEZvcig1MCk7CisgICAgcmV0dXJuIHRlc3RGcm9u
dENhbWVyYUltYWdlKCsrY291bnRlcik7CiB9CiAKLWZ1bmN0aW9uIHRlc3RCYWNrQ2FtZXJhSW1h
Z2UodGVzdE5hbWUpCitmdW5jdGlvbiBpc0JldHdlZW4xMDBBbmQyMDAodmFsdWUpCiB7Ci0gICAg
dGVzdCgoKSA9PiB7Ci0gICAgICAgIGRhdGEgPSBncmFiSW1hZ2VQaXhlbHMoKTsKKyAgICAgcmV0
dXJuIGRhdGFbMF0gPiAxMDAgJiYgZGF0YVswXSA8IDIwMDsKK30KKworYXN5bmMgZnVuY3Rpb24g
dGVzdEJhY2tDYW1lcmFJbWFnZShjb3VudGVyKQoreworICAgIGlmICghY291bnRlcikKKyAgICAg
ICAgY291bnRlciA9IDA7CisKKyAgICBkYXRhID0gZ3JhYkltYWdlUGl4ZWxzKCk7CisKKyAgICBp
Zihpc0JldHdlZW4xMDBBbmQyMDAoZGF0YVswXSkgJiYgaXNCZXR3ZWVuMTAwQW5kMjAwKGRhdGFb
MV0pICYmIGlzQmV0d2VlbjEwMEFuZDIwMChkYXRhWzJdKSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGFzc2VydF90cnVlKGRhdGFbMF0gPiAxMDAsICIxIik7Ci0gICAgICAgIGFzc2VydF90
cnVlKGRhdGFbMV0gPiAxMDAsICIyIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRhdGFbMl0gPiAx
MDAsICIzIik7CisgICAgaWYgKGNvdW50ZXIgPj0gMjApCisgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdCgidGVzdEZyb250Q2FtZXJhSW1hZ2UgdGltZWQgb3V0Iik7CiAKLSAgICAgICAgYXNz
ZXJ0X3RydWUoZGF0YVswXSA8IDIwMCwgIjQiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGF0YVsx
XSA8IDIwMCwgIjUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGF0YVsyXSA8IDIwMCwgIjYiKTsK
LSAgICB9LCAidGVzdEJhY2tDYW1lcmFJbWFnZSAiICsgdGVzdE5hbWUpOworICAgIGF3YWl0IHdh
aXRGb3IoNTApOworICAgIHJldHVybiB0ZXN0QmFja0NhbWVyYUltYWdlKCsrY291bnRlcik7CiB9
CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewpAQCAtNzQsNyArODYsOCBAQCBwcm9taXNlX3Rl
c3QoKHRlc3QpID0+IHsKICAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gcmVtb3RlU3RyZWFtOwog
ICAgICAgICByZXR1cm4gdmlkZW8ucGxheSgpOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICB0ZXN0RnJvbnRDYW1lcmFJbWFnZSgidGVzdDEiKTsKKyAgICAgICAgcmV0dXJuIHRlc3RGcm9u
dENhbWVyYUltYWdlKCk7CisgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB7IGZhY2luZ01vZGU6IHsg
ZXhhY3Q6IFsiZW52aXJvbm1lbnQiXSB9IH0gfSk7CiAgICAgfSkudGhlbigoc3RyZWFtKSA9PiB7
CiAgICAgICAgIGJhY2tTdHJlYW0gPSBzdHJlYW07CkBAIC04NCw5ICs5Nyw3IEBAIHByb21pc2Vf
dGVzdCgodGVzdCkgPT4gewogICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9KS50aGVuKCgp
ID0+IHsKICAgICAgICAgYXNzZXJ0X3RydWUoc2VuZGVyLnRyYWNrID09PSBiYWNrU3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0pOwotICAgICAgICByZXR1cm4gd2FpdEZvcig1MDApOwotICAgIH0p
LnRoZW4oKCkgPT4gewotICAgICAgICB0ZXN0QmFja0NhbWVyYUltYWdlKCJ0ZXN0MSIpOworICAg
ICAgICByZXR1cm4gdGVzdEJhY2tDYW1lcmFJbWFnZSgpOwogICAgIH0pOwogfSwgIlN3aXRjaGlu
ZyBmcm9tIGZyb250IHRvIGJhY2sgY2FtZXJhIik7CiAKQEAgLTExNSwxNiArMTI2LDE1IEBAIHBy
b21pc2VfdGVzdCgodGVzdCkgPT4gewogICAgICAgICB2aWRlby5zcmNPYmplY3QgPSByZW1vdGVT
dHJlYW07CiAgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7CiAgICAgfSkudGhlbigoKSA9PiB7
Ci0gICAgICAgIHRlc3RGcm9udENhbWVyYUltYWdlKCJ0ZXN0MiIpOworICAgICAgICByZXR1cm4g
dGVzdEZyb250Q2FtZXJhSW1hZ2UoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHsgd2lkdGg6
IDMyMCwgaGVpZ2h0OiAyNDAsIGZhY2luZ01vZGU6IHsgZXhhY3Q6IFsiZW52aXJvbm1lbnQiXSB9
IH0gfSk7CiAgICAgfSkudGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAgIGJhY2tTdHJlYW0gPSBz
dHJlYW07CiAgICAgICAgIGFzc2VydF90cnVlKGJhY2tTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVsw
XS5nZXRTZXR0aW5ncygpLmhlaWdodCA9PT0gMjQwLCAiYmFja1N0cmVhbSBzaG91bGQgYmUgc21h
bGwiKTsKICAgICAgICAgcmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2soYmFja1N0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIHdh
aXRGb3IoNTAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgdGVzdEJhY2tDYW1lcmFJ
bWFnZSgidGVzdDIiKTsKKyAgICAgICAgcmV0dXJuIHRlc3RCYWNrQ2FtZXJhSW1hZ2UoKTsKICAg
ICB9KTsKIH0sICJTd2l0Y2hpbmcgZnJvbSBmcm9udCB0byBiYWNrIGNhbWVyYSwgd2l0aCBsb3dl
ciByZXNvbHV0aW9uIik7CiAKQEAgLTE1NCwxNiArMTY0LDE1IEBAIHByb21pc2VfdGVzdCgodGVz
dCkgPT4gewogICAgICAgICB2aWRlby5zcmNPYmplY3QgPSByZW1vdGVTdHJlYW07CiAgICAgICAg
IHJldHVybiB2aWRlby5wbGF5KCk7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHRlc3RG
cm9udENhbWVyYUltYWdlKCJ0ZXN0MyIpOworICAgICAgICByZXR1cm4gdGVzdEZyb250Q2FtZXJh
SW1hZ2UoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHsgd2lkdGg6IDY0MCwgaGVpZ2h0OiA0
ODAgLCBmYWNpbmdNb2RlOiB7IGV4YWN0OiBbImVudmlyb25tZW50Il0gfSB9IH0pOwogICAgIH0p
LnRoZW4oKHN0cmVhbSkgPT4gewogICAgICAgICBiYWNrU3RyZWFtID0gc3RyZWFtOwogICAgICAg
ICBhc3NlcnRfdHJ1ZShiYWNrU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3Mo
KS5oZWlnaHQgPT09IDQ4MCwgImJhY2sgc3RyZWFtIHNob3VsZCBiZSBiaWciKTsKICAgICAgICAg
cmV0dXJuIHNlbmRlci5yZXBsYWNlVHJhY2soYmFja1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
KTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIHdhaXRGb3IoNTAwKTsKLSAg
ICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgdGVzdEJhY2tDYW1lcmFJbWFnZSgidGVzdDQiKTsK
KyAgICAgICAgcmV0dXJuIHRlc3RCYWNrQ2FtZXJhSW1hZ2UoKTsKICAgICB9KTsKIAogfSwgIlN3
aXRjaGluZyBmcm9tIGZyb250IHRvIGJhY2sgY2FtZXJhLCB3aXRoIGhpZ2hlciByZXNvbHV0aW9u
Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321331</attachid>
            <date>2017-09-20 10:39:46 -0700</date>
            <delta_ts>2017-09-20 11:10:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172645-20170920103945.patch</filename>
            <type>text/plain</type>
            <size>19332</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjY5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGVkZDE1NTMxYTE0NjIzM2ZjYmM3
MDIzNmQ2NWI5ZTE4M2QxZmZkYy4uNTJmYzc1MWVjYjdhODVlY2U2NTYxZGUyZmE3OTU5N2I1YzIz
NDQ0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA5LTIwICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHdlYnJ0YyByZXBsYWNlIHRyYWNrIHRl
c3RzIGxlc3MgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjY0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQxMTgyMTg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEltcHJvdmluZyBzdGFiaWxp
dHkgb2YgdGVzdHMgYnkgcmV0cnlpbmcgdGVzdHMgZXZlcnkgNTAgbXMgaW5zdGVhZCBvZiBvbmNl
LgorICAgICAgICBEb2luZyBzb21lIHJlZmFjdG9yaW5nIHRvIHB1dCBtb3JlIGhlbHBlciByb3V0
aW5lcyBpbiByb3V0aW5lLmpzCisgICAgICAgIFJlbGF4aW5nIGJsYWNrIHBpeGVsIGNoZWNrIGFz
IGNvbXByZXNzaW9uIG1heSBpbnRyb2R1Y2Ugc29tZSB1bmNlcnRhaW50eS4KKyAgICAgICAgSXQg
aXMgbm93IGNvbnNpZGVyZWQgYmxhY2sgaWYgUkdCIDwgKDMwLCAzMCwgMzApLgorCisgICAgICAg
ICogVGVzdEV4cGVjdGF0aW9uczogTWFya2luZyB2aWRlby1tdXRlLmh0bWwgYXMgUGFzcy9GYWls
IGluc3RlYWQgb2YgRmFpbC4KKyAgICAgICAgKiB3ZWJydGMvcm91dGluZXMuanM6CisgICAgICAg
ICogd2VicnRjL3ZpZGVvLW11dGUuaHRtbDoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tcmVwbGFj
ZS1tdXRlZC10cmFjay5odG1sOgorICAgICAgICAqIHdlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNr
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay10by1u
dWxsLmh0bWw6CisgICAgICAgICogd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbDoKKwog
MjAxNy0wOS0yMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTa2lwIGluc3BlY3RvciB0ZXN0cyB0aGF0IGNyYXNoIGFmdGVyIHIyMjIyNTkuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBlN2RkNmViMmU1NDkzNzIyNGE1MjMyODFmYTA3MWMzMGUyOGVlNmFjLi5i
OWY2YTVmODhhZDA3MTFjMDhhYWVlNDdmOTJmMDRhYWUzZWZiOTVkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTc5OCw3ICs3OTgsNyBAQCBtZWRpYS9zZXNzaW9uIFsgU2tpcCBdCiB3ZWJydGMvZGF0
YWNoYW5uZWwvbXVsdGlwbGUtY29ubmVjdGlvbnMuaHRtbCBbIFNsb3cgXQogd2VicnRjL3ZpZGVv
LXJlcGxhY2UtdHJhY2suaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTcwMTc4
IHdlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLXRvLW51bGwuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMTcwNzA0IHdlYnJ0Yy92aWRlby1tdXRlLmh0bWwgWyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xNzA3MDQgd2VicnRjL3ZpZGVvLW11dGUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTcwNzAxIHdlYnJ0Yy9kYXRhY2hhbm5lbC9idWZmZXJlZEFtb3Vu
dExvd1RocmVzaG9sZC1kZWZhdWx0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzE3MzQ4NiB3ZWJydGMvdmlkZW8tcmVwbGFjZS1tdXRlZC10cmFjay5odG1sIFsgUGFzcyBGYWls
dXJlIFRpbWVvdXQgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMu
anMgYi9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggNDEzNWFiYTljNTU0ZWMy
NzAzZjhlODIxNzkxODE1OWRlYjUzZWJmMi4uOGQ4Y2M2MzY1YmU3YTIyYjdjNzExZDdmMGFiNDI1
ZTJlZGEyMDUxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisr
KyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMTYxLDMgKzE2MSw0MSBAQCBh
c3luYyBmdW5jdGlvbiBkb0h1bUFuYWx5c2lzKHN0cmVhbSwgZXhwZWN0ZWQpCiAgICAgYXdhaXQg
Y29udGV4dC5jbG9zZSgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KKworZnVuY3Rpb24gaXNWaWRl
b0JsYWNrKGNhbnZhcywgdmlkZW8sIHN0YXJ0WCwgc3RhcnRZLCBncmFiYmVkV2lkdGgsIGdyYWJi
ZWRIZWlnaHQpCit7CisgICAgY2FudmFzLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKKyAgICBj
YW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7CisgICAgaWYgKCFncmFiYmVkSGVpZ2h0
KSB7CisgICAgICAgIHN0YXJ0WCA9IDA7CisgICAgICAgIHN0YXJ0WSA9IDA7CisgICAgICAgIGdy
YWJiZWRXaWR0aCA9IGNhbnZhcy53aWR0aDsKKyAgICAgICAgZ3JhYmJlZEhlaWdodCA9IGNhbnZh
cy5oZWlnaHQ7CisgICAgfQorCisgICAgY2FudmFzLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdl
KHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgaW1hZ2VE
YXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRhKHN0YXJ0WCwgc3RhcnRZ
LCBncmFiYmVkV2lkdGgsIGdyYWJiZWRIZWlnaHQpOworICAgIGRhdGEgPSBpbWFnZURhdGEuZGF0
YTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IGdyYWJiZWRXaWR0aCAqIGdyYWJiZWRI
ZWlnaHQ7ICsrY3B0cikgeworICAgICAgICAvLyBBcHByb3hpbWF0aXZlbHkgYmxhY2sgcGl4ZWxz
LgorICAgICAgICBpZiAoZGF0YVs0ICogY3B0cl0gPiAzMCB8fCBkYXRhWzQgKiBjcHRyICsgMV0g
PiAzMCB8fCBkYXRhWzQgKiBjcHRyICsgMl0gPiAzMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGNoZWNrVmlk
ZW9CbGFjayhleHBlY3RlZCwgY2FudmFzLCB2aWRlbywgZXJyb3JNZXNzYWdlLCBjb3VudGVyKQor
eworICAgIGlmIChpc1ZpZGVvQmxhY2soY2FudmFzLCB2aWRlbykgPT09IGV4cGVjdGVkKQorICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICBpZiAoY291bnRlciA+IDUwKSB7
CisgICAgICAgIGlmICghZXJyb3JNZXNzYWdlKQorICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0g
ImNoZWNrVmlkZW9CbGFjayB0aW1lZCBvdXQgZXhwZWN0aW5nICIgKyBleHBlY3RlZDsKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgYXdh
aXQgd2FpdEZvcig1MCk7CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhleHBlY3RlZCwgY2Fu
dmFzLCB2aWRlbywgZXJyb3JNZXNzYWdlLCArK2NvdW50ZXIpOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRl
by1tdXRlLmh0bWwKaW5kZXggYTAzYjIxOWUwZGIyYzZlNjY2N2RhMjYwM2EyNWI1Mzc3N2Q2MDQ1
YS4uNTNjZGViNDJjYWUzZTliNWVmYWY3MTE2NjgzMWIyNTI3MGE2ZWI4YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLW11dGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvdmlkZW8tbXV0ZS5odG1sCkBAIC0xNSw0MSArMTUsNiBAQAogICAgICAgICA8Y2FudmFzIGlk
PSJjYW52YXMzIiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCI+PC9jYW52YXM+CiAgICAgICAgIDxz
Y3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgotZnVu
Y3Rpb24gaXNWaWRlb0JsYWNrKGlkKQotewotICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChpZCk7Ci0gICAgY2FudmFzLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKLSAg
ICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7Ci0gICAgY2FudmFzLmdldENvbnRl
eHQoJzJkJykuZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWln
aHQpOwotCi0gICAgaW1hZ2VEYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VE
YXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0gICAgZGF0YSA9IGltYWdl
RGF0YS5kYXRhOwotICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgY2FudmFzLndpZHRoICog
Y2FudmFzLmhlaWdodDsgKytjcHRyKSB7Ci0gICAgICAgIC8vIEFwcHJveGltYXRpdmVseSBibGFj
ayBwaXhlbHMuCi0gICAgICAgIGlmIChkYXRhWzQgKiBjcHRyXSA+IDEwIHx8IGRhdGFbNCAqIGNw
dHIgKyAxXSA+IDEwIHx8IGRhdGFbNCAqIGNwdHIgKyAyXSA+IDEwKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gcG9sbFZp
ZGVvQmxhY2tDaGVjayhleHBlY3RlZCwgaWQsIHJlc29sdmUpCi17Ci0gICAgaWYgKGlzVmlkZW9C
bGFjayhpZCkgPT09IGV4cGVjdGVkKSB7Ci0gICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHNldFRpbWVvdXQoKCkgPT4gcG9sbFZpZGVvQmxhY2tDaGVjayhl
eHBlY3RlZCwgaWQsIHJlc29sdmUpLCA1MCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrVmlkZW9CbGFj
ayhleHBlY3RlZCwgaWQpCi17Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKLSAgICAgICBwb2xsVmlkZW9CbGFja0NoZWNrKGV4cGVjdGVkLCBpZCwgcmVzb2x2
ZSk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJjaGVja1ZpZGVvQmxhY2sgdGlt
ZWQgb3V0IGZvciAiICsgaWQgKyAiIGV4cGVjdGVkICIgKyBleHBlY3RlZCksIDUwMDApOwotICAg
IH0pOwotfQotCiB2YXIgdHJhY2s7CiB2YXIgcmVtb3RlVHJhY2s7CiB2YXIgcmVjZWl2aW5nQ29u
bmVjdGlvbjsKQEAgLTkxLDEyICs1NiwxMiBAQCBwcm9taXNlX3Rlc3QoKCkgPT4gewogfSwgIkVu
c3VyaW5nIGNvbm5lY3Rpb24gc3RhdGUgaXMgY29ubmVjdGVkIik7CiAKIHByb21pc2VfdGVzdCgo
dGVzdCkgPT4gewotICAgIHJldHVybiBjaGVja1ZpZGVvQmxhY2soZmFsc2UsICJjYW52YXMxIik7
CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhmYWxzZSwgY2FudmFzMSwgdmlkZW8pOwogfSwg
IlRyYWNrIGlzIGVuYWJsZWQsIHZpZGVvIHNob3VsZCBub3QgYmUgYmxhY2siKTsKIAogcHJvbWlz
ZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgdHJhY2suZW5hYmxlZCA9IGZhbHNlOwotICAgIHJldHVy
biBjaGVja1ZpZGVvQmxhY2sodHJ1ZSwgImNhbnZhczIiKTsKKyAgICByZXR1cm4gY2hlY2tWaWRl
b0JsYWNrKHRydWUsIGNhbnZhczIsIHZpZGVvKTsKIH0sICJUcmFjayBpcyBkaXNhYmxlZCwgdmlk
ZW8gc2hvdWxkIGJlIGJsYWNrIik7CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewpAQCAtMTE2
LDcgKzgxLDcgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAKIHByb21pc2VfdGVzdCgodGVz
dCkgPT4gewogICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVlOwotICAgIHJldHVybiBjaGVja1ZpZGVv
QmxhY2sodHJ1ZSwgImNhbnZhczIiKTsKKyAgICByZXR1cm4gY2hlY2tWaWRlb0JsYWNrKGZhbHNl
LCBjYW52YXMyLCB2aWRlbyk7CiB9LCAiVHJhY2sgaXMgZW5hYmxlZCwgdmlkZW8gc2hvdWxkIG5v
dCBiZSBibGFjayIpOwogCiAgICAgICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtbXV0ZWQtdHJhY2suaHRtbCBiL0xheW91dFRlc3RzL3dl
YnJ0Yy92aWRlby1yZXBsYWNlLW11dGVkLXRyYWNrLmh0bWwKaW5kZXggMzkwZDk3NDdhN2ZmYWZh
NDgxZTUzYTA5MDkxMGE3ZjFiZjhjNmY1MC4uZTM1N2JmZWNhNzBlNGFhM2EwNzBiYTdmODBiMmY3
Yjg0MzIxYzk2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2Ut
bXV0ZWQtdHJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS1t
dXRlZC10cmFjay5odG1sCkBAIC0xMiw2NCArMTIsNiBAQAogICAgICAgICA8Y2FudmFzIGlkPSJj
YW52YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2NhbnZhcz4KICAgICAgICAgPHNjcmlw
dCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+Ci1mdW5jdGlv
biBpc1ZpZGVvQmxhY2soKQotewotICAgIGNhbnZhcy53aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGg7
Ci0gICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0OwotICAgIGNhbnZhcy5nZXRD
b250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMu
aGVpZ2h0KTsKLQotICAgIGltYWdlRGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldElt
YWdlRGF0YSgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwotICAgIGRhdGEgPSBp
bWFnZURhdGEuZGF0YTsKLSAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IGNhbnZhcy53aWR0
aCAqIGNhbnZhcy5oZWlnaHQ7ICsrY3B0cikgewotICAgICAgICAvLyBBcHByb3hpbWF0aXZlbHkg
YmxhY2sgcGl4ZWxzLgotICAgICAgICBpZiAoZGF0YVs0ICogY3B0cl0gPiAxMCB8fCBkYXRhWzQg
KiBjcHRyICsgMV0gPiAxMCB8fCBkYXRhWzQgKiBjcHRyICsgMl0gPiAxMCkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZhciBzdG9wUG9s
bGluZyA9IGZhbHNlOwotZnVuY3Rpb24gcG9sbFZpZGVvQmxhY2tDaGVjayhleHBlY3RlZCwgcmVz
b2x2ZSwgZGVsYXkpCi17Ci0gICAgaWYgKGlzVmlkZW9CbGFjaygpID09PSBleHBlY3RlZCB8fCBz
dG9wUG9sbGluZykgewotICAgICAgICByZXNvbHZlKHRydWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgc2V0VGltZW91dCgoKSA9PiBwb2xsVmlkZW9CbGFja0NoZWNrKGV4cGVjdGVk
LCByZXNvbHZlKSwgZGVsYXkpOwotfQotCi1hc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvQmxhY2so
ZXhwZWN0ZWQsIGR1cmF0aW9uLCBpZCwgZGVsYXkpCi17Ci0gICAgc3RvcFBvbGxpbmcgPSBmYWxz
ZTsKLSAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAg
ICBwb2xsVmlkZW9CbGFja0NoZWNrKGV4cGVjdGVkLCByZXNvbHZlLCBkZWxheSk7Ci0gICAgICAg
IHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7Ci0gICAgICAg
ICAgICBzdG9wUG9sbGluZyA9IHRydWU7Ci0gICAgICAgIH0sIGR1cmF0aW9uKTsKLSAgICB9KTsK
LX0KLQotZnVuY3Rpb24gZ3JhYkltYWdlUGl4ZWxzKCkKLXsKLSAgICBjYW52YXMud2lkdGggPSB2
aWRlby52aWRlb1dpZHRoOwotICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsK
LSAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZh
cy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAgICBpbWFnZURhdGEgPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMjAsIDIwLCAyLCAyKTsKLSAgICByZXR1cm4gaW1hZ2VE
YXRhLmRhdGE7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGNoZWNrRm9yTm9CbGFja0ZyYW1lcygpCi17
Ci0gICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCAxMDsgY3B0cisrKSB7Ci0gICAgICAgIGlm
ICghKGF3YWl0IGNoZWNrVmlkZW9CbGFjayh0cnVlLCAxNTAwLCAidGVzdDMiLCA1MCkpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogcHJv
bWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAg
ICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CkBAIC05NCwyMiArMzYs
MTUgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgIHJldHVybiB2aWRlby5wbGF5
KCk7CiAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgIGZpcnN0VHJhY2suZW5hYmxlZCA9IGZh
bHNlOwotICAgICAgICByZXR1cm4gd2FpdEZvcigyMDApOworICAgICAgICByZXR1cm4gY2hlY2tW
aWRlb0JsYWNrKHRydWUsIGNhbnZhcywgdmlkZW8sICJDaGVjayB3ZSByZWNlaXZlIGJsYWNrIGZy
YW1lcyBhZnRlciBkaXNhYmxpbmcgdGhlIHRyYWNrIik7CiAgICAgfSkudGhlbigoKSA9PiB7CiAg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVv
OiB7IGZhY2luZ01vZGU6IHsgZXhhY3Q6IFsiZW52aXJvbm1lbnQiXSB9IH0gfSk7CiAgICAgfSku
dGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAgIHJldHVybiBzZW5kZXIucmVwbGFjZVRyYWNrKHN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
cmV0dXJuIHdhaXRGb3IoMjAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJu
IGNoZWNrVmlkZW9CbGFjayhmYWxzZSwgNTAwMCwgInRlc3QyIiwgMjAwKTsKLSAgICB9KS50aGVu
KChyZXN1bHQpID0+IHsKLSAgICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LCAiZXhwZWN0IHRvIHJl
Y2VpdmUgc29tZSBub24gYmxhY2sgZnJhbWVzIik7CisgICAgICAgIHJldHVybiBjaGVja1ZpZGVv
QmxhY2soZmFsc2UsIGNhbnZhcywgdmlkZW8sICJDaGVjayB3ZSByZWNlaXZlIHNvbWUgbm9uIGJs
YWNrIGZyYW1lcyIpOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAvLyBMZXQncyBlbnN1
cmUgdGhlcmUgYXJlIG5vIGJsYWNrIGZyYW1lcyBiZWluZyByZWNlaXZlZC4KLSAgICAgICAgcmV0
dXJuIGNoZWNrRm9yTm9CbGFja0ZyYW1lcygpOwotICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewot
ICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1bHQsICJjaGVjayBubyBibGFjayBmcmFtZSIpOworICAg
ICAgICByZXR1cm4gY2hlY2tWaWRlb0JsYWNrKHRydWUsIGNhbnZhcywgdmlkZW8sICJDaGVjayB3
ZSBkbyBub3QgcmVjZWl2ZSBhbnkgYmxhY2sgZnJhbWUiLCA0MCkudGhlbihhc3NlcnRfdW5yZWFj
aGVkLCAoKSA9PiB7IH0pOwogICAgIH0pOwogfSwgIlN3aXRjaGluZyBmcm9tIGRpc2FibGVkIHRv
IGVuYWJsZWQgdHJhY2siKTsKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay1leHBlY3RlZC50eHQKaW5kZXggNGUxZWZkYTNh
ZmMxZGZkMzNhZGE5Y2Y1NTc1OWIzOGRmZWJjZDI2Ny4uNjc1ODIyMTY2YTQzMTQxZTFmOTI5NjUz
MTkyOWRmZWExZDI1MDE5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJl
cGxhY2UtdHJhY2stZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1y
ZXBsYWNlLXRyYWNrLWV4cGVjdGVkLnR4dApAQCAtMiwxMCArMiw0IEBACiBQQVNTIFN3aXRjaGlu
ZyBmcm9tIGZyb250IHRvIGJhY2sgY2FtZXJhIAogUEFTUyBTd2l0Y2hpbmcgZnJvbSBmcm9udCB0
byBiYWNrIGNhbWVyYSwgd2l0aCBsb3dlciByZXNvbHV0aW9uIAogUEFTUyBTd2l0Y2hpbmcgZnJv
bSBmcm9udCB0byBiYWNrIGNhbWVyYSwgd2l0aCBoaWdoZXIgcmVzb2x1dGlvbiAKLVBBU1MgdGVz
dEZyb250Q2FtZXJhSW1hZ2UgdGVzdDEgCi1QQVNTIHRlc3RCYWNrQ2FtZXJhSW1hZ2UgdGVzdDEg
Ci1QQVNTIHRlc3RGcm9udENhbWVyYUltYWdlIHRlc3QyIAotUEFTUyB0ZXN0QmFja0NhbWVyYUlt
YWdlIHRlc3QyIAotUEFTUyB0ZXN0RnJvbnRDYW1lcmFJbWFnZSB0ZXN0MyAKLVBBU1MgdGVzdEJh
Y2tDYW1lcmFJbWFnZSB0ZXN0NCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3Zp
ZGVvLXJlcGxhY2UtdHJhY2stdG8tbnVsbC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVv
LXJlcGxhY2UtdHJhY2stdG8tbnVsbC5odG1sCmluZGV4IDc4Nzg3YmZmODg0NmZmZjUzOTE2MmFk
YmZjZTRiZDFkNjBmYmRjMzUuLmQwYTdiZDVkYWQ0ODRhZDQwYTQ0NGIyNzc3N2FhODg2MTEyZDk5
YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLXRv
LW51bGwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay10
by1udWxsLmh0bWwKQEAgLTE1LDYwICsxNSw0OCBAQAogdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidmlkZW8iKTsKIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMiKTsKIAotZnVuY3Rpb24gZ3JhYkltYWdlUGl4ZWxzKCkKK2FzeW5jIGZ1bmN0aW9uIGdldE91
dGJvdW5kUlRQU3RhdHNOdW1iZXJPZkVuY29kZWRGcmFtZXMoY29ubmVjdGlvbikKIHsKLSAgICBj
YW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOwotICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRl
by52aWRlb0hlaWdodDsKLSAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2Uodmlk
ZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7Ci0KLSAgICBpbWFnZURhdGEg
PSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoMjAsIDIwLCAxMDAsIDEwMCk7
Ci0gICAgcmV0dXJuIGltYWdlRGF0YS5kYXRhOwotIH0KLQotdmFyIGZpcnN0RnJhbWVEYXRhOwot
Ci1mdW5jdGlvbiBzdG9yZUZyYW1lKCkKLXsKLSAgICBmaXJzdEZyYW1lRGF0YSA9IGdyYWJJbWFn
ZVBpeGVscygpOworICAgIHZhciByZXBvcnQgPSBhd2FpdCBjb25uZWN0aW9uLmdldFN0YXRzKCk7
CisgICAgdmFyIGZyYW1lc0VuY29kZWQ7CisgICAgcmVwb3J0LmZvckVhY2goKHN0YXRJdGVtKSA9
PiB7CisgICAgICAgIGlmIChzdGF0SXRlbS50eXBlID09PSAib3V0Ym91bmQtcnRwIikgeworICAg
ICAgICAgICAgZnJhbWVzRW5jb2RlZCA9IHN0YXRJdGVtLmZyYW1lc0VuY29kZWQ7CisgICAgICAg
IH0KKyAgICB9KTsKKyAgICByZXR1cm4gZnJhbWVzRW5jb2RlZDsKIH0KIAotZnVuY3Rpb24gY2hl
Y2tDYW1lcmFJbWFnZUlzRGlmZmVyZW50KCkKK2FzeW5jIGZ1bmN0aW9uIHRlc3RGcmFtZUVuY29k
ZWRTdGFydGVkKGNvbm5lY3Rpb24sIGNvdW50LCBwcmV2aW91c0ZyYW1lc051bWJlcikKIHsKLSAg
ICBkYXRhID0gZ3JhYkltYWdlUGl4ZWxzKCk7CisgICAgdmFyIGZyYW1lc0VuY29kZWROdW1iZXIg
PSBhd2FpdCBnZXRPdXRib3VuZFJUUFN0YXRzTnVtYmVyT2ZFbmNvZGVkRnJhbWVzKGNvbm5lY3Rp
b24pOworICAgIGlmIChwcmV2aW91c0ZyYW1lc051bWJlciAmJiBmcmFtZXNFbmNvZGVkTnVtYmVy
ID4gcHJldmlvdXNGcmFtZXNOdW1iZXIpCisgICAgICAgIHJldHVybjsKIAotICAgIGFzc2VydF90
cnVlKGRhdGFbMF0gPCAyMCk7Ci0gICAgYXNzZXJ0X3RydWUoZGF0YVsxXSA8IDIwKTsKLSAgICBh
c3NlcnRfdHJ1ZShkYXRhWzJdIDwgMjApOworICAgIGlmIChjb3VudCA9PT0gdW5kZWZpbmVkKQor
ICAgICAgICBjb3VudCA9IDA7CiAKLSAgICB2YXIgc2FtZSA9IHRydWU7Ci0gICAgZm9yICh2YXIg
Y3B0ciA9IDA7IGNwdHIgPCBkYXRhLmxlbmd0aDsgKytjcHRyKSB7Ci0gICAgICAgIGlmIChkYXRh
W2NwdHJdICE9IGZpcnN0RnJhbWVEYXRhW2NwdHJdKSB7Ci0gICAgICAgICAgICBzYW1lID0gZmFs
c2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gIXNh
bWU7CisgICAgaWYgKGNvdW50ID49IDIwKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
InRlc3QgaW5jcmVhc2luZyBmcmFtZSBlbmNvZGVkIHRpbWVkIG91dCIpOworCisgICAgYXdhaXQg
d2FpdEZvcigxMDApOworICAgIHJldHVybiB0ZXN0RnJhbWVFbmNvZGVkU3RhcnRlZChjb25uZWN0
aW9uLCArK2NvdW50LCBmcmFtZXNFbmNvZGVkTnVtYmVyKTsKIH0KIAotZnVuY3Rpb24gdGVzdENh
bWVyYUltYWdlKHJlc29sdmUsIHJlamVjdCwgY291bnRlcikKK2FzeW5jIGZ1bmN0aW9uIHRlc3RG
cmFtZUVuY29kZWRTdG9wcGVkKGNvbm5lY3Rpb24sIGNvdW50LCBwcmV2aW91c0ZyYW1lc051bWJl
cikKIHsKLSAgICBpZiAoIWNvdW50ZXIpCi0gICAgICAgIGNvdW50ZXIgPSAwOwotCi0gICAgaWYg
KGNoZWNrQ2FtZXJhSW1hZ2VJc0RpZmZlcmVudCgpKSB7Ci0gICAgICAgIHJlc29sdmUoKTsKKyAg
ICB2YXIgZnJhbWVzRW5jb2RlZE51bWJlciA9IGF3YWl0IGdldE91dGJvdW5kUlRQU3RhdHNOdW1i
ZXJPZkVuY29kZWRGcmFtZXMoY29ubmVjdGlvbik7CisgICAgaWYgKHByZXZpb3VzRnJhbWVzTnVt
YmVyICYmIGZyYW1lc0VuY29kZWROdW1iZXIgPT09IHByZXZpb3VzRnJhbWVzTnVtYmVyKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICgrK2NvdW50ZXIgPT09IDQwKSB7Ci0gICAgICAg
IHJlamVjdCgidGVzdENhbWVyYUltYWdlIHRpbWVkIG91dCIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIHNldFRpbWVvdXQoKCkgPT4gdGVzdENhbWVyYUltYWdlKHJlc29sdmUsIHJlamVj
dCwgY291bnRlciksIDEwMCk7Ci19CiAKLWZ1bmN0aW9uIHRlc3RTdG9wcGVkSW1hZ2UoKQotewot
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMoZ3JhYkltYWdlUGl4ZWxzKCksIGZpcnN0RnJhbWVEYXRh
KTsKKyAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgY291bnQgPSAwOworCisg
ICAgaWYgKGNvdW50ID09PSAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJ0ZXN0
IHRoYXQgbnVtYmVyIG9mIGVuY29kZWQgZnJhbWVzIHN0b3BwZWQgaW5jcmVhc2luZyB0aW1lZCBv
dXQiKTsKKworICAgIGF3YWl0IHdhaXRGb3IoMTAwKTsKKyAgICByZXR1cm4gdGVzdEZyYW1lRW5j
b2RlZFN0b3BwZWQoY29ubmVjdGlvbiwgKytjb3VudCwgZnJhbWVzRW5jb2RlZE51bWJlcik7CiB9
CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewpAQCAtNzcsMTEgKzY1LDEzIEBAIHByb21pc2Vf
dGVzdCgodGVzdCkgPT4gewogCiAgICAgdmFyIHNlbmRlcjsKICAgICB2YXIgZnJvbnRTdHJlYW07
CisgICAgdmFyIGNvbm5lY3Rpb247CiAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHsgdmlkZW86IHRydWUgfSkudGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAg
IGZyb250U3RyZWFtID0gc3RyZWFtOwogICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgY3JlYXRl
Q29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24gPSBmaXJzdENvbm5lY3Rpb247CiAgICAgICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RD
b25uZWN0aW9uLmFkZFRyYWNrKGZyb250U3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGZyb250
U3RyZWFtKTsKICAgICAgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CiAgICAgICAg
ICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKQEAg
LTk0LDI1ICs4NCwxNCBAQCBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgdmlkZW8u
c3JjT2JqZWN0ID0gcmVtb3RlU3RyZWFtOwogICAgICAgICByZXR1cm4gdmlkZW8ucGxheSgpOwog
ICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4gd2FpdEZvcigxMDApOworICAgICAg
ICByZXR1cm4gdGVzdEZyYW1lRW5jb2RlZFN0YXJ0ZWQoY29ubmVjdGlvbik7CiAgICAgfSkudGhl
bigoKSA9PiB7Ci0gICAgICAgIHN0b3JlRnJhbWUoKTsKLSAgICAgICAgcmV0dXJuIHdhaXRGb3Io
MTAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAgIHRlc3RDYW1lcmFJbWFnZShyZXNvbHZl
LCByZWplY3QpOwotICAgICAgICB9KTsKICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgcHJv
bWlzZSA9IHNlbmRlci5yZXBsYWNlVHJhY2sobnVsbCk7CiAgICAgICAgIGFzc2VydF90cnVlKCEh
c2VuZGVyLnRyYWNrKTsKICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfSkudGhlbigoKSA9
PiB7Ci0gICAgICAgIHJldHVybiB3YWl0Rm9yKDEwMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgICAgIHN0b3JlRnJhbWUoKTsKLSAgICAgICAgcmV0dXJuIHdhaXRGb3IoMTAwKTsKLSAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgdGVzdFN0b3BwZWRJbWFnZSgpOworICAgICAgICByZXR1
cm4gdGVzdEZyYW1lRW5jb2RlZFN0b3BwZWQoY29ubmVjdGlvbik7CiAgICAgfSk7CiB9LCAiU3Rv
cHBpbmcgc2VuZGluZyB2aWRlbyB1c2luZyByZXBsYWNlVHJhY2siKTsKICAgICAgICAgPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5o
dG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbAppbmRleCA0
ZjM3OTU4YTQ4NGRlMDU3YWRlNTdjOTgyNmY1ZDk4NmJkNzEwMTY3Li43MTczOWFhYTBkYjdkOGUz
YTc4N2IwNjZlMTlkMDY1ZWJlZTE1ZjQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcmVwbGFjZS10cmFjay5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1y
ZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTUsNiArNSw3IEBACiAgICAgICAgIDx0aXRsZT5UZXN0aW5n
IGJhc2ljIHZpZGVvIGV4Y2hhbmdlIGZyb20gb2ZmZXJlciB0byByZWNlaXZlcjwvdGl0bGU+CiAg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4K
ICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgpAQCAtMjUsMzAg
KzI2LDQxIEBAIGZ1bmN0aW9uIGdyYWJJbWFnZVBpeGVscygpCiAgICAgcmV0dXJuIGltYWdlRGF0
YS5kYXRhOwogIH0KIAotZnVuY3Rpb24gdGVzdEZyb250Q2FtZXJhSW1hZ2UodGVzdE5hbWUpCith
c3luYyBmdW5jdGlvbiB0ZXN0RnJvbnRDYW1lcmFJbWFnZShjb3VudGVyKQogewotICAgIHRlc3Qo
KCkgPT4gewotICAgICAgICBkYXRhID0gZ3JhYkltYWdlUGl4ZWxzKCk7CisgICAgaWYgKCFjb3Vu
dGVyKQorICAgICAgICBjb3VudGVyID0gMDsKIAotICAgICAgICBhc3NlcnRfdHJ1ZShkYXRhWzBd
IDwgMjAsICIxIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRhdGFbMV0gPCAyMCwgIjIiKTsKLSAg
ICAgICAgYXNzZXJ0X3RydWUoZGF0YVsyXSA8IDIwLCAiMyIpOwotICAgIH0sICJ0ZXN0RnJvbnRD
YW1lcmFJbWFnZSAiICsgdGVzdE5hbWUpOworICAgIGlmIChpc1ZpZGVvQmxhY2soY2FudmFzLCB2
aWRlbywgMjAsIDIwLCAyICwyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNvdW50ZXIg
Pj0gMjApCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgidGVzdEZyb250Q2FtZXJhSW1h
Z2UgdGltZWQgb3V0Iik7CisKKyAgICBhd2FpdCB3YWl0Rm9yKDUwKTsKKyAgICByZXR1cm4gdGVz
dEZyb250Q2FtZXJhSW1hZ2UoKytjb3VudGVyKTsKIH0KIAotZnVuY3Rpb24gdGVzdEJhY2tDYW1l
cmFJbWFnZSh0ZXN0TmFtZSkKK2Z1bmN0aW9uIGlzQmV0d2VlbjEwMEFuZDIwMCh2YWx1ZSkKIHsK
LSAgICB0ZXN0KCgpID0+IHsKLSAgICAgICAgZGF0YSA9IGdyYWJJbWFnZVBpeGVscygpOworICAg
ICByZXR1cm4gZGF0YVswXSA+IDEwMCAmJiBkYXRhWzBdIDwgMjAwOworfQorCithc3luYyBmdW5j
dGlvbiB0ZXN0QmFja0NhbWVyYUltYWdlKGNvdW50ZXIpCit7CisgICAgaWYgKCFjb3VudGVyKQor
ICAgICAgICBjb3VudGVyID0gMDsKKworICAgIGRhdGEgPSBncmFiSW1hZ2VQaXhlbHMoKTsKKwor
ICAgIGlmKGlzQmV0d2VlbjEwMEFuZDIwMChkYXRhWzBdKSAmJiBpc0JldHdlZW4xMDBBbmQyMDAo
ZGF0YVsxXSkgJiYgaXNCZXR3ZWVuMTAwQW5kMjAwKGRhdGFbMl0pKQorICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgYXNzZXJ0X3RydWUoZGF0YVswXSA+IDEwMCwgIjEiKTsKLSAgICAgICAgYXNz
ZXJ0X3RydWUoZGF0YVsxXSA+IDEwMCwgIjIiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGF0YVsy
XSA+IDEwMCwgIjMiKTsKKyAgICBpZiAoY291bnRlciA+PSAyMCkKKyAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KCJ0ZXN0RnJvbnRDYW1lcmFJbWFnZSB0aW1lZCBvdXQiKTsKIAotICAgICAg
ICBhc3NlcnRfdHJ1ZShkYXRhWzBdIDwgMjAwLCAiNCIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShk
YXRhWzFdIDwgMjAwLCAiNSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkYXRhWzJdIDwgMjAwLCAi
NiIpOwotICAgIH0sICJ0ZXN0QmFja0NhbWVyYUltYWdlICIgKyB0ZXN0TmFtZSk7CisgICAgYXdh
aXQgd2FpdEZvcig1MCk7CisgICAgcmV0dXJuIHRlc3RCYWNrQ2FtZXJhSW1hZ2UoKytjb3VudGVy
KTsKIH0KIAogcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CkBAIC03NCw3ICs4Niw4IEBAIHByb21p
c2VfdGVzdCgodGVzdCkgPT4gewogICAgICAgICB2aWRlby5zcmNPYmplY3QgPSByZW1vdGVTdHJl
YW07CiAgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgICAgIHRlc3RGcm9udENhbWVyYUltYWdlKCJ0ZXN0MSIpOworICAgICAgICByZXR1cm4gdGVz
dEZyb250Q2FtZXJhSW1hZ2UoKTsKKyAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHsgZmFjaW5nTW9k
ZTogeyBleGFjdDogWyJlbnZpcm9ubWVudCJdIH0gfSB9KTsKICAgICB9KS50aGVuKChzdHJlYW0p
ID0+IHsKICAgICAgICAgYmFja1N0cmVhbSA9IHN0cmVhbTsKQEAgLTg0LDkgKzk3LDcgQEAgcHJv
bWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgIH0pLnRo
ZW4oKCkgPT4gewogICAgICAgICBhc3NlcnRfdHJ1ZShzZW5kZXIudHJhY2sgPT09IGJhY2tTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7Ci0gICAgICAgIHJldHVybiB3YWl0Rm9yKDUwMCk7Ci0g
ICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHRlc3RCYWNrQ2FtZXJhSW1hZ2UoInRlc3QxIik7
CisgICAgICAgIHJldHVybiB0ZXN0QmFja0NhbWVyYUltYWdlKCk7CiAgICAgfSk7CiB9LCAiU3dp
dGNoaW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEiKTsKIApAQCAtMTE1LDE2ICsxMjYsMTUg
QEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IHJl
bW90ZVN0cmVhbTsKICAgICAgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTsKICAgICB9KS50aGVuKCgp
ID0+IHsKLSAgICAgICAgdGVzdEZyb250Q2FtZXJhSW1hZ2UoInRlc3QyIik7CisgICAgICAgIHJl
dHVybiB0ZXN0RnJvbnRDYW1lcmFJbWFnZSgpOworICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyB3
aWR0aDogMzIwLCBoZWlnaHQ6IDI0MCwgZmFjaW5nTW9kZTogeyBleGFjdDogWyJlbnZpcm9ubWVu
dCJdIH0gfSB9KTsKICAgICB9KS50aGVuKChzdHJlYW0pID0+IHsKICAgICAgICAgYmFja1N0cmVh
bSA9IHN0cmVhbTsKICAgICAgICAgYXNzZXJ0X3RydWUoYmFja1N0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdLmdldFNldHRpbmdzKCkuaGVpZ2h0ID09PSAyNDAsICJiYWNrU3RyZWFtIHNob3VsZCBi
ZSBzbWFsbCIpOwogICAgICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayhiYWNrU3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0pOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1
cm4gd2FpdEZvcig1MDApOwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICB0ZXN0QmFja0Nh
bWVyYUltYWdlKCJ0ZXN0MiIpOworICAgICAgICByZXR1cm4gdGVzdEJhY2tDYW1lcmFJbWFnZSgp
OwogICAgIH0pOwogfSwgIlN3aXRjaGluZyBmcm9tIGZyb250IHRvIGJhY2sgY2FtZXJhLCB3aXRo
IGxvd2VyIHJlc29sdXRpb24iKTsKIApAQCAtMTU0LDE2ICsxNjQsMTUgQEAgcHJvbWlzZV90ZXN0
KCh0ZXN0KSA9PiB7CiAgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IHJlbW90ZVN0cmVhbTsKICAg
ICAgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
dGVzdEZyb250Q2FtZXJhSW1hZ2UoInRlc3QzIik7CisgICAgICAgIHJldHVybiB0ZXN0RnJvbnRD
YW1lcmFJbWFnZSgpOworICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogeyB3aWR0aDogNjQwLCBoZWln
aHQ6IDQ4MCAsIGZhY2luZ01vZGU6IHsgZXhhY3Q6IFsiZW52aXJvbm1lbnQiXSB9IH0gfSk7CiAg
ICAgfSkudGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAgIGJhY2tTdHJlYW0gPSBzdHJlYW07CiAg
ICAgICAgIGFzc2VydF90cnVlKGJhY2tTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0
aW5ncygpLmhlaWdodCA9PT0gNDgwLCAiYmFjayBzdHJlYW0gc2hvdWxkIGJlIGJpZyIpOwogICAg
ICAgICByZXR1cm4gc2VuZGVyLnJlcGxhY2VUcmFjayhiYWNrU3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0pOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4gd2FpdEZvcig1MDAp
OwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICB0ZXN0QmFja0NhbWVyYUltYWdlKCJ0ZXN0
NCIpOworICAgICAgICByZXR1cm4gdGVzdEJhY2tDYW1lcmFJbWFnZSgpOwogICAgIH0pOwogCiB9
LCAiU3dpdGNoaW5nIGZyb20gZnJvbnQgdG8gYmFjayBjYW1lcmEsIHdpdGggaGlnaGVyIHJlc29s
dXRpb24iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>