<?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>226843</bug_id>
          
          <creation_ts>2021-06-09 13:02:37 -0700</creation_ts>
          <short_desc>[LayoutTests] Delete unused LayoutTests/webaudio resources</short_desc>
          <delta_ts>2021-06-11 16:40:00 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Jenner">jenner</reporter>
          <assigned_to name="Robert Jenner">jenner</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768303</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-09 13:02:37 -0700</bug_when>
    <thetext>There are a number of unused resources in LayoutTests/webaudio, we should delete them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768304</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-09 13:03:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/79093818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768305</commentid>
    <comment_count>2</comment_count>
      <attachid>430999</attachid>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-09 13:04:38 -0700</bug_when>
    <thetext>Created attachment 430999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768307</commentid>
    <comment_count>3</comment_count>
      <attachid>430999</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-09 13:12:32 -0700</bug_when>
    <thetext>Comment on attachment 430999
Patch

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Delete unused php resources after tests were converted to python. 

These don&apos;t look like PHP resources, just look like normal resources, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768597</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-10 10:23:18 -0700</bug_when>
    <thetext>To clarify, this applies to all un-used resources, not just php. Also, with the patch above, it say&apos;s the test &quot;media/modern-media-controls/overflow-support/chapters.html&quot; is a &quot;new failure.&quot; However, when looking at the history for it, it&apos;s a clear indication that this test has been having timeout issues before this patch has even been committed to the project seen here: https://results.webkit.org/?suite=layout-tests&amp;test=media%2Fmodern-media-controls%2Foverflow-support%2Fchapters.html

So, with all of that in mind, I think this is safe to flip to r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768603</commentid>
    <comment_count>5</comment_count>
      <attachid>430999</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-10 10:35:29 -0700</bug_when>
    <thetext>Comment on attachment 430999
Patch

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

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        Delete unused php resources after tests were converted to python. 
&gt; 
&gt; These don&apos;t look like PHP resources, just look like normal resources, no?

Let&apos;s update the comment to be accurate

&gt; LayoutTests/webaudio/resources/hrtf/README:-4
&gt; -

We should put this file back, it&apos;s not used, but it is a README referencing files that are used</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768683</commentid>
    <comment_count>6</comment_count>
      <attachid>431115</attachid>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-06-10 12:58:59 -0700</bug_when>
    <thetext>Created attachment 431115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769124</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-11 16:39:58 -0700</bug_when>
    <thetext>Committed r278796 (238753@main): &lt;https://commits.webkit.org/238753@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431115.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430999</attachid>
            <date>2021-06-09 13:04:38 -0700</date>
            <delta_ts>2021-06-10 12:58:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226843-20210609130437.patch</filename>
            <type>text/plain</type>
            <size>20340</size>
            <attacher name="Robert Jenner">jenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjY4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTg3NjZmODFjMDVmMzkxZjdkOTQ2
ODZjOWMzYmE4NTlkYmVmNzE3MS4uZjdmNWU4OGY4MWE5NWI1MTM5MzA0ZDRmNmM0OTliOTAwZWE0
MzVmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA2LTA5ICBSb2JlcnQgSmVubmVyICA8
amVubmVyQGFwcGxlLmNvbT4KKworICAgICAgICBbTGF5b3V0VGVzdHNdIERlbGV0ZSB1bnVzZWQg
TGF5b3V0VGVzdHMvd2ViYXVkaW8gcmVzb3VyY2VzICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZSB1bnVzZWQgcGhwIHJlc291cmNl
cyBhZnRlciB0ZXN0cyB3ZXJlIGNvbnZlcnRlZCB0byBweXRob24uIAorCisgICAgICAgICogd2Vi
YXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanM6IFJlbW92ZWQuCisgICAgICAg
ICogd2ViYXVkaW8vcmVzb3VyY2VzL2hydGYvUkVBRE1FOiBSZW1vdmVkLgorICAgICAgICAqIHdl
YmF1ZGlvL3Jlc291cmNlcy9qYXZhc2NyaXB0YXVkaW9ub2RlLXRlc3RpbmcuanM6IFJlbW92ZWQu
CisgICAgICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL25vdGUtZ3JhaW4tb24tdGVzdGluZy5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvc2NyaXB0cHJvY2Vzc29ybm9k
ZS10ZXN0aW5nLmpzOiBSZW1vdmVkLgorCiAyMDIxLTA2LTA5ICBUcnVpdHQgU2F2ZWxsICA8dHNh
dmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL3BsdWdpbi1kb2VzbnQtY3Jhc2guaHRtbCBvbiBhcm02NApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgYi9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjA2MTczZmJhMTE2OGNhODlkNGNiNDNjNDFiYTlkOWU5ZmY4
OTlhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDE4MiArMCwwIEBACi12YXIgc2FtcGxlUmF0ZSA9IDQ0MTAwLjA7Ci0KLXZh
ciByZW5kZXJMZW5ndGhTZWNvbmRzID0gODsKLXZhciBwdWxzZUxlbmd0aFNlY29uZHMgPSAxOwot
dmFyIHB1bHNlTGVuZ3RoRnJhbWVzID0gcHVsc2VMZW5ndGhTZWNvbmRzICogc2FtcGxlUmF0ZTsK
LQotZnVuY3Rpb24gY3JlYXRlU3F1YXJlUHVsc2VCdWZmZXIoY29udGV4dCwgc2FtcGxlRnJhbWVM
ZW5ndGgpIHsKLSAgICB2YXIgYXVkaW9CdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigxLCBz
YW1wbGVGcmFtZUxlbmd0aCwgY29udGV4dC5zYW1wbGVSYXRlKTsKLQotICAgIHZhciBuID0gYXVk
aW9CdWZmZXIubGVuZ3RoOwotICAgIHZhciBkYXRhID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERh
dGEoMCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKLSAgICAgICAgZGF0YVtp
XSA9IDE7Ci0KLSAgICByZXR1cm4gYXVkaW9CdWZmZXI7Ci19Ci0KLS8vIFRoZSB0cmlhbmdsZSBi
dWZmZXIgaG9sZHMgdGhlIGV4cGVjdGVkIHJlc3VsdCBvZiB0aGUgY29udm9sdXRpb24uCi0vLyBJ
dCBsaW5lYXJseSByYW1wcyB1cCBmcm9tIDAgdG8gaXRzIG1heGltdW0gdmFsdWUgKGF0IHRoZSBj
ZW50ZXIpCi0vLyB0aGVuIGxpbmVhcmx5IHJhbXBzIGRvd24gdG8gMC4gIFRoZSBjZW50ZXIgdmFs
dWUgY29ycmVzcG9uZHMgdG8gdGhlCi0vLyBwb2ludCB3aGVyZSB0aGUgdHdvIHNxdWFyZSBwdWxz
ZXMgb3ZlcmxhcCB0aGUgbW9zdC4KLWZ1bmN0aW9uIGNyZWF0ZVRyaWFuZ2xlUHVsc2VCdWZmZXIo
Y29udGV4dCwgc2FtcGxlRnJhbWVMZW5ndGgpIHsKLSAgICB2YXIgYXVkaW9CdWZmZXIgPSBjb250
ZXh0LmNyZWF0ZUJ1ZmZlcigxLCBzYW1wbGVGcmFtZUxlbmd0aCwgY29udGV4dC5zYW1wbGVSYXRl
KTsKLQotICAgIHZhciBuID0gYXVkaW9CdWZmZXIubGVuZ3RoOwotICAgIHZhciBoYWxmTGVuZ3Ro
ID0gbiAvIDI7Ci0gICAgdmFyIGRhdGEgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsK
LSAgICAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbGZMZW5ndGg7ICsraSkKLSAgICAgICAg
ZGF0YVtpXSA9IGkgKyAxOwotCi0gICAgZm9yICh2YXIgaSA9IGhhbGZMZW5ndGg7IGkgPCBuOyAr
K2kpCi0gICAgICAgIGRhdGFbaV0gPSBuIC0gaSAtIDE7Ci0KLSAgICByZXR1cm4gYXVkaW9CdWZm
ZXI7Ci19Ci0KLWZ1bmN0aW9uIGxvZzEwKHgpIHsKLSAgcmV0dXJuIE1hdGgubG9nKHgpL01hdGgu
TE4xMDsKLX0KLQotZnVuY3Rpb24gbGluZWFyVG9EZWNpYmVsKHgpIHsKLSAgcmV0dXJuIDIwKmxv
ZzEwKHgpOwotfQotCi0vLyBWZXJpZnkgdGhhdCB0aGUgcmVuZGVyZWQgcmVzdWx0IGlzIHZlcnkg
Y2xvc2UgdG8gdGhlIHJlZmVyZW5jZQotLy8gdHJpYW5ndWxhciBwdWxzZS4KLWZ1bmN0aW9uIGNo
ZWNrVHJpYW5ndWxhclB1bHNlKHJlbmRlcmVkLCByZWZlcmVuY2UpIHsKLSAgICB2YXIgbWF0Y2gg
PSB0cnVlOwotICAgIHZhciBtYXhEZWx0YSA9IDA7Ci0gICAgdmFyIHZhbHVlQXRNYXhEZWx0YSA9
IDA7Ci0gICAgdmFyIG1heERlbHRhSW5kZXggPSAwOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCByZWZlcmVuY2UubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGRpZmYgPSByZW5kZXJlZFtp
XSAtIHJlZmVyZW5jZVtpXTsKLSAgICAgICAgdmFyIHggPSBNYXRoLmFicyhkaWZmKTsKLSAgICAg
ICAgaWYgKHggPiBtYXhEZWx0YSkgewotICAgICAgICAgICAgbWF4RGVsdGEgPSB4OwotICAgICAg
ICAgICAgdmFsdWVBdE1heERlbHRhID0gcmVmZXJlbmNlW2ldOwotICAgICAgICAgICAgbWF4RGVs
dGFJbmRleCA9IGk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBhbGxvd2VkRGV2aWF0aW9u
RnJhY3Rpb24gd2FzIGRldGVybWluZWQgZXhwZXJpbWVudGFsbHkuICBJdAotICAgIC8vIGlzIHRo
ZSB0aHJlc2hvbGQgb2YgdGhlIHJlbGF0aXZlIGVycm9yIGF0IHRoZSBtYXhpbXVtCi0gICAgLy8g
ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0cnVlIHRyaWFuZ3VsYXIgcHVsc2UgYW5kIHRoZQotICAg
IC8vIHJlbmRlcmVkIHB1bHNlLgotICAgIHZhciBhbGxvd2VkRGV2aWF0aW9uRGVjaWJlbHMgPSAt
MTMzLjI7Ci0gICAgdmFyIG1heERldmlhdGlvbkRlY2liZWxzID0gbGluZWFyVG9EZWNpYmVsKG1h
eERlbHRhIC8gdmFsdWVBdE1heERlbHRhKTsKLQotICAgIGlmIChtYXhEZXZpYXRpb25EZWNpYmVs
cyA8PSBhbGxvd2VkRGV2aWF0aW9uRGVjaWJlbHMpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiVHJp
YW5ndWxhciBwb3J0aW9uIG9mIGNvbnZvbHV0aW9uIGlzIGNvcnJlY3QuIik7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgdGVzdEZhaWxlZCgiVHJpYW5ndWxhciBwb3J0aW9uIG9mIGNvbnZvbHV0aW9u
IGlzIG5vdCBjb3JyZWN0LiAgTWF4IGRldmlhdGlvbiA9ICIgKyBtYXhEZXZpYXRpb25EZWNpYmVs
cyArICIgZEIgYXQgIiArIG1heERlbHRhSW5kZXgpOwotICAgICAgICBtYXRjaCA9IGZhbHNlOwot
ICAgIH0KLQotICAgIHJldHVybiBtYXRjaDsKLX0gICAgICAgIAotCi0vLyBWZXJpZnkgdGhhdCB0
aGUgcmVuZGVyZWQgZGF0YSBpcyBjbG9zZSB0byB6ZXJvIGZvciB0aGUgZmlyc3QgcGFydAotLy8g
b2YgdGhlIHRhaWwuCi1mdW5jdGlvbiBjaGVja1RhaWwxKGRhdGEsIHJlZmVyZW5jZSwgYnJlYWtw
b2ludCkgewotICAgIHZhciBpc1plcm8gPSB0cnVlOwotICAgIHZhciB0YWlsMU1heCA9IDA7Ci0K
LSAgICBmb3IgKHZhciBpID0gcmVmZXJlbmNlLmxlbmd0aDsgaSA8IHJlZmVyZW5jZS5sZW5ndGgg
KyBicmVha3BvaW50OyArK2kpIHsKLSAgICAgICAgdmFyIG1hZyA9IE1hdGguYWJzKGRhdGFbaV0p
OwotICAgICAgICBpZiAobWFnID4gdGFpbDFNYXgpIHsKLSAgICAgICAgICAgIHRhaWwxTWF4ID0g
bWFnOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTGV0J3MgZmluZCB0aGUgcGVhayBvZiB0
aGUgcmVmZXJlbmNlIChldmVuIHRob3VnaCB3ZSBrbm93IGEKLSAgICAvLyBwcmlvcmkgd2hhdCBp
dCBpcykuCi0gICAgdmFyIHJlZk1heCA9IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWZl
cmVuY2UubGVuZ3RoOyArK2kpIHsKLSAgICAgIHJlZk1heCA9IE1hdGgubWF4KHJlZk1heCwgTWF0
aC5hYnMocmVmZXJlbmNlW2ldKSk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyB0aHJlc2hvbGQgaXMg
ZXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgdGhlCi0gICAgLy8gdmFsdWUg
b2YgdGFpbDFNYXhEZWNpYmVscy4KLSAgICB2YXIgdGhyZXNob2xkMSA9IC0xMjkuNzsKLQotICAg
IHZhciB0YWlsMU1heERlY2liZWxzID0gbGluZWFyVG9EZWNpYmVsKHRhaWwxTWF4L3JlZk1heCk7
Ci0gICAgaWYgKHRhaWwxTWF4RGVjaWJlbHMgPD0gdGhyZXNob2xkMSkgewotICAgICAgICB0ZXN0
UGFzc2VkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgc3VmZmljaWVudGx5
IHNtYWxsLiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkZpcnN0IHBhcnQg
b2YgdGFpbCBvZiBjb252b2x1dGlvbiBpcyBub3Qgc3VmZmljaWVudGx5IHNtYWxsOiAiICsgdGFp
bDFNYXhEZWNpYmVscyArICIgZEIiKTsKLSAgICAgICAgaXNaZXJvID0gZmFsc2U7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGlzWmVybzsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgdGhlIHNlY29uZCBwYXJ0
IG9mIHRoZSB0YWlsIG9mIHRoZSBjb252b2x1dGlvbiBpcwotLy8gZXhhY3RseSB6ZXJvLgotZnVu
Y3Rpb24gY2hlY2tUYWlsMihkYXRhLCByZWZlcmVuY2UsIGJyZWFrcG9pbnQpIHsKLSAgICB2YXIg
aXNaZXJvID0gdHJ1ZTsKLSAgICB2YXIgdGFpbDJNYXggPSAwOwotICAgIC8vIEZvciB0aGUgc2Vj
b25kIHBhcnQgb2YgdGhlIHRhaWwsIHRoZSBtYXhpbXVtIHZhbHVlIHNob3VsZCBiZQotICAgIC8v
IGV4YWN0bHkgemVyby4KLSAgICB2YXIgdGhyZXNob2xkMiA9IDA7Ci0gICAgZm9yICh2YXIgaSA9
IHJlZmVyZW5jZS5sZW5ndGggKyBicmVha3BvaW50OyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgewot
ICAgICAgICBpZiAoTWF0aC5hYnMoZGF0YVtpXSkgPiAwKSB7Ci0gICAgICAgICAgICBpc1plcm8g
PSBmYWxzZTsgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChpc1plcm8pIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiUmVuZGVyZWQgc2lnbmFsIGFmdGVyIHRh
aWwgb2YgY29udm9sdXRpb24gaXMgc2lsZW50LiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRl
c3RGYWlsZWQoIlJlbmRlcmVkIHNpZ25hbCBhZnRlciB0YWlsIG9mIGNvbnZvbHV0aW9uIHNob3Vs
ZCBiZSBzaWxlbnQuIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlzWmVybzsKLX0KLQotZnVuY3Rp
b24gY2hlY2tDb252b2x2ZWRSZXN1bHQodHJpYW5nbGVQdWxzZSkgewotICAgIHJldHVybiBmdW5j
dGlvbihldmVudCkgewotICAgICAgICB2YXIgcmVuZGVyZWRCdWZmZXIgPSBldmVudC5yZW5kZXJl
ZEJ1ZmZlcjsKLQotICAgICAgICB2YXIgcmVmZXJlbmNlRGF0YSA9IHRyaWFuZ2xlUHVsc2UuZ2V0
Q2hhbm5lbERhdGEoMCk7Ci0gICAgICAgIHZhciByZW5kZXJlZERhdGEgPSByZW5kZXJlZEJ1ZmZl
ci5nZXRDaGFubmVsRGF0YSgwKTsKLSAgICAKLSAgICAgICAgdmFyIHN1Y2Nlc3MgPSB0cnVlOwot
ICAgIAotICAgICAgICAvLyBWZXJpZnkgdGhlIHRyaWFuZ3VsYXIgcHVsc2UgaXMgYWN0dWFsbHkg
dHJpYW5ndWxhci4KLQotICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBjaGVja1RyaWFuZ3Vs
YXJQdWxzZShyZW5kZXJlZERhdGEsIHJlZmVyZW5jZURhdGEpOwotICAgICAgICAKLSAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgcG9ydGlvbiBhZnRlciBjb252b2x2ZWQgcG9ydGlvbiBpcyB0b3Rh
bGx5Ci0gICAgICAgIC8vIHNpbGVudC4gIEJ1dCByb3VuZC1vZmYgcHJldmVudHMgdGhpcyBmcm9t
IGJlaW5nIGNvbXBsZXRlbHkKLSAgICAgICAgLy8gdHJ1ZS4gIEF0IHRoZSBlbmQgb2YgdGhlIHRy
aWFuZ2xlLCBpdCBzaG91bGQgYmUgY2xvc2UgdG8KLSAgICAgICAgLy8gemVyby4gIElmIHdlIGdv
IGZhcnRoZXIgb3V0LCBpdCBzaG91bGQgYmUgZXZlbiBjbG9zZXIgYW5kCi0gICAgICAgIC8vIGV2
ZW50dWFsbHkgemVyby4KLQotICAgICAgICAvLyBGb3IgdGhlIHRhaWwgb2YgdGhlIGNvbnZvbHV0
aW9uICh3aGVyZSB0aGUgcmVzdWx0IHdvdWxkIGJlCi0gICAgICAgIC8vIHRoZW9yZXRpY2FsbHkg
emVybyksIHdlIHBhcnRpdGlvbiB0aGUgdGFpbCBpbnRvIHR3bwotICAgICAgICAvLyBwYXJ0cy4g
IFRoZSBmaXJzdCBpcyB0aGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGFpbCwKLSAgICAgICAg
Ly8gd2hlcmUgd2UgdG9sZXJhdGUgYSBzbWFsbCBidXQgbm9uLXplcm8gdmFsdWUuICBUaGUgc2Vj
b25kIHBhcnQgaXMKLSAgICAgICAgLy8gZmFydGhlciBhbG9uZyB0aGUgdGFpbCB3aGVyZSB0aGUg
cmVzdWx0IHNob3VsZCBiZSB6ZXJvLgotICAgICAgICAKLSAgICAgICAgLy8gYnJlYWtwb2ludCBp
cyB0aGUgcG9pbnQgZGl2aWRpbmcgdGhlIGZpcnN0IHR3byB0YWlsIHBhcnRzCi0gICAgICAgIC8v
IHdlJ3JlIGxvb2tpbmcgYXQuICBFeHBlcmltZW50YWxseSBkZXRlcm1pbmVkLgotICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IDEyODAwOwotCi0gICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNo
ZWNrVGFpbDEocmVuZGVyZWREYXRhLCByZWZlcmVuY2VEYXRhLCBicmVha3BvaW50KTsKLSAgICAg
ICAgCi0gICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNoZWNrVGFpbDIocmVuZGVyZWREYXRh
LCByZWZlcmVuY2VEYXRhLCBicmVha3BvaW50KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChzdWNj
ZXNzKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5
IGNvbnZvbHZlZC4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlRlc3Qgc2lnbmFsIHdhcyBub3QgY29ycmVjdGx5IGNvbnZvbHZlZC4iKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9ocnRmL1JFQURNRSBiL0xheW91dFRlc3RzL3dlYmF1ZGlv
L3Jlc291cmNlcy9ocnRmL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVh
OGE3NjQ3ZDMyMmZiYWFhNDMwYjdhZjMyMzM1NmFhNWQ4NmMxNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJj
ZXMvaHJ0Zi9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoZSBmaWxlcyBD
b21wb3NpdGUuZmxhYyBhbmQgQ29tcG9zaXRlLndhdiB3ZXJlIGNvcGllZCBmcm9tCi1Tb3VyY2Uv
cGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzLy4gIFRoZSBmaWxlcyBoZXJlaW4gbmVlZCB0byBiZSB1
cGRhdGVkCi1pZiB0aG9zZSBmaWxlcyBldmVyeSBjaGFuZ2UuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9qYXZhc2NyaXB0YXVkaW9ub2RlLXRlc3RpbmcuanMg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvamF2YXNjcmlwdGF1ZGlvbm9kZS10ZXN0
aW5nLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDAyZmU3MjI1NDU4ZmVjY2My
NTRhOTIwNzhhMDk2YjlmMmYwYTdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9qYXZhc2NyaXB0YXVk
aW9ub2RlLXRlc3RpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vLyBGb3Ig
dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgSmF2YVNjcmlwdEF1ZGlvTm9kZSwgd2hlbiBp
dCB3b3JrcyB3aXRoIE9mZmxpbmVBdWRpb0NvbnRleHQgKHdoaWNoIHJ1bnMgbXVjaCBmYXN0ZXIK
LS8vIHRoYW4gcmVhbC10aW1lKSB0aGUgZXZlbnQuaW5wdXRCdWZmZXIgbWlnaHQgYmUgb3Zlcndy
aXRlIGFnYWluIGJlZm9yZSBvbmF1ZGlvcHJvY2VzcyBldmVyIGdldCBjaGFuY2UgdG8gYmUgY2Fs
bGVkLgotLy8gV2UgY2FyZWZ1bGx5IGFycmFuZ2UgdGhlIHJlbmRlckxlbmd0aEluRnJhbWVzIGFu
ZCBidWZmZXJTaXplIHRvIGhhdmUgZXhhY3RseSB0aGUgc2FtZSB2YWx1ZSB0byBhdm9pZCB0aGlz
IGlzc3VlLgotdmFyIHJlbmRlckxlbmd0aEluRnJhbWVzID0gNTEyOwotdmFyIGJ1ZmZlclNpemUg
PSA1MTI7Ci0KLXZhciBjb250ZXh0OwotCi1mdW5jdGlvbiBjcmVhdGVCdWZmZXIoY29udGV4dCwg
bnVtYmVyT2ZDaGFubmVscywgbGVuZ3RoKSB7Ci0gICAgdmFyIGF1ZGlvQnVmZmVyID0gY29udGV4
dC5jcmVhdGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgbGVuZ3RoLCBzYW1wbGVSYXRlKTsKLQot
ICAgIGZpbGxEYXRhKGF1ZGlvQnVmZmVyLCBudW1iZXJPZkNoYW5uZWxzLCBhdWRpb0J1ZmZlci5s
ZW5ndGgpOwotICAgIHJldHVybiBhdWRpb0J1ZmZlcjsKLX0KLQotZnVuY3Rpb24gcHJvY2Vzc0F1
ZGlvRGF0YShldmVudCkgewotICAgIGJ1ZmZlciA9IGV2ZW50Lm91dHB1dEJ1ZmZlcjsKLSAgICBp
ZiAoYnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgIT0gb3V0cHV0Q2hhbm5lbHMpCi0gICAgICAgIHRl
c3RGYWlsZWQoIm51bWJlck9mT3V0cHV0Q2hhbm5lbHMgZG9lc24ndCBtYXRjaCEiKTsKLQotICAg
IGlmIChidWZmZXIubGVuZ3RoICE9IGJ1ZmZlclNpemUpCi0gICAgICAgIHRlc3RGYWlsZWQoImxl
bmd0aCBvZiBidWZmZXIgZG9lc24ndCBtYXRjaCEiKTsKLQotICAgIGJ1ZmZlciA9IGV2ZW50Lmlu
cHV0QnVmZmVyOwotICAgIAotICAgIHZhciBzdWNjZXNzID0gY2hlY2tTdGVyZW9Pbmx5RGF0YShi
dWZmZXIsIGlucHV0Q2hhbm5lbHMsIGJ1ZmZlci5sZW5ndGgpOwotCi0gICAgaWYgKHN1Y2Nlc3Mp
IHsKLSAgICAgICAgdGVzdFBhc3NlZCgib25hdWRpb3Byb2Nlc3Mgd2FzIGNhbGxlZCB3aXRoIGNv
cnJlY3QgaW5wdXQgZGF0YS4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJv
bmF1ZGlvcHJvY2VzcyB3YXMgY2FsbGVkIHdpdGggd3JvbmcgaW5wdXQgZGF0YS4iKTsKLSAgICB9
Ci19Ci0KLWZ1bmN0aW9uIGZpbGxEYXRhKGJ1ZmZlciwgbnVtYmVyT2ZDaGFubmVscywgbGVuZ3Ro
KSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAg
ICAgICAgdmFyIGRhdGEgPSBidWZmZXIuZ2V0Q2hhbm5lbERhdGEoaSk7Ci0KLSAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCBsZW5ndGg7ICsraikKLSAgICAgICAgICAgIGlmIChpIDwgMikKLSAg
ICAgICAgICAgICAgICBkYXRhW2pdID0gaSAqIDIgLSAxOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRhdGFbal0gPSAwOwotICAgIH0KLX0KLQotLy8gQm90aCAyIHRvIDggdXBt
aXggYW5kIDggdG8gMiBkb3dubWl4IGFyZSBqdXN0IGRpcmVjdGx5IGNvcHkgdGhlIGZpcnN0IHR3
byBjaGFubmVscyBhbmQgbGVmdCBjaGFubmVscyBhcmUgemVyb2VkLgotZnVuY3Rpb24gY2hlY2tT
dGVyZW9Pbmx5RGF0YShidWZmZXIsIG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkgewotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIHZhciBk
YXRhID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKGkpOwotCi0gICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgbGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAgIGlmIChpIDwgMikgewotICAgICAgICAg
ICAgICAgIGlmIChkYXRhW2pdICE9IGkgKiAyIC0gMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZGF0
YVtqXSAhPSAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHJ1
bkpTTm9kZVRlc3QoKQotewotICAgIC8vIENyZWF0ZSBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCi0g
ICAgY29udGV4dCA9IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDIsIHJlbmRlckxlbmd0aEluRnJh
bWVzLCBzYW1wbGVSYXRlKTsKLQotICAgIHZhciBzb3VyY2VCdWZmZXIgPSBjcmVhdGVCdWZmZXIo
Y29udGV4dCwgc291cmNlQ2hhbm5lbHMsIHJlbmRlckxlbmd0aEluRnJhbWVzKTsKLQotICAgIHZh
ciBidWZmZXJTb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwotICAgIGJ1ZmZl
clNvdXJjZS5idWZmZXIgPSBzb3VyY2VCdWZmZXI7Ci0KLSAgICB2YXIganNub2RlID0gY29udGV4
dC5jcmVhdGVTY3JpcHRQcm9jZXNzb3IoYnVmZmVyU2l6ZSwgaW5wdXRDaGFubmVscywgb3V0cHV0
Q2hhbm5lbHMpOwotCi0gICAgYnVmZmVyU291cmNlLmNvbm5lY3QoanNub2RlKTsKLSAgICBqc25v
ZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKLSAgICBqc25vZGUub25hdWRpb3Byb2Nl
c3MgPSBwcm9jZXNzQXVkaW9EYXRhOwotCi0gICAgYnVmZmVyU291cmNlLnN0YXJ0KDApOwotICAg
IGNvbnRleHQub25jb21wbGV0ZSA9IGZpbmlzaEpTVGVzdDsKLSAgICBjb250ZXh0LnN0YXJ0UmVu
ZGVyaW5nKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMv
bm90ZS1ncmFpbi1vbi10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2Vz
L25vdGUtZ3JhaW4tb24tdGVzdGluZy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTFkMTQ0MzE5YzRkMTNmM2FjZmI4YjUwNzZlZTZiMjY2MTk0MTQwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNv
dXJjZXMvbm90ZS1ncmFpbi1vbi10ZXN0aW5nLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICsw
LDAgQEAKLXZhciBzYW1wbGVSYXRlID0gNDQxMDAuMDsKLQotLy8gSG93IG1hbnkgZ3JhaW5zIHRv
IHBsYXkuCi12YXIgbnVtYmVyT2ZUZXN0cyA9IDEwMDsKLQotLy8gRHVyYXRpb24gb2YgZWFjaCBn
cmFpbiB0byBiZSBwbGF5ZWQKLXZhciBkdXJhdGlvbiA9IDAuMDE7Ci0KLS8vIFRpbWUgc3RlcCBi
ZXR3ZWVuIHRoZSBzdGFydCBvZiBlYWNoIGdyYWluLgotdmFyIHRpbWVTdGVwID0gZHVyYXRpb24g
KyAuMDA1OwotCi0vLyBUaW1lIHN0ZXAgYmV0d2VlbiB0aGUgc3RhcnQgZm9yIGVhY2ggZ3JhaW4u
Ci12YXIgZ3JhaW5PZmZzZXRTdGVwID0gMC4wMDE7Ci0KLS8vIEhvdyBsb25nIHRvIHJlbmRlciB0
byBjb3ZlciBhbGwgb2YgdGhlIGdyYWlucy4KLXZhciByZW5kZXJUaW1lID0gKG51bWJlck9mVGVz
dHMgKyAxKSAqIHRpbWVTdGVwOwotCi12YXIgY29udGV4dDsKLXZhciByZW5kZXJlZERhdGE7Ci0K
LS8vIENyZWF0ZSBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRoYXQgd2Ugd2FudC4gIFRo
ZSBmdW5jdGlvbiBmCi0vLyByZXR1cm5zIHRoZSBkZXNpcmVkIHZhbHVlIGF0IHNhbXBsZSBmcmFt
ZSBrLgotZnVuY3Rpb24gY3JlYXRlU2lnbmFsQnVmZmVyKGNvbnRleHQsIGYpIHsKLQotICAgIC8v
IE1ha2Ugc3VyZSB0aGUgYnVmZmVyIGhhcyBlbm91Z2ggZGF0YSBmb3IgYWxsIG9mIHRoZSBwb3Nz
aWJsZQotICAgIC8vIGdyYWluIG9mZnNldHMgYW5kIGR1cmF0aW9ucy4gIE5lZWQgdG8gaW5jbHVk
ZSB0aGUgZXh0cmEgZnJhbWVzCi0gICAgLy8gZm9yIEhSVEYuICBUaGUgYWRkaXRpb25hbCAxIGlz
IGZvciBhbnkgcm91bmQtb2ZmIGVycm9ycy4KLSAgICB2YXIgc2lnbmFsTGVuZ3RoID0gTWF0aC5m
bG9vcigxICsgc2FtcGxlUmF0ZSAqIChudW1iZXJPZlRlc3RzICogZ3JhaW5PZmZzZXRTdGVwICsg
ZHVyYXRpb24pKTsKLQotICAgIHZhciBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigyLCBz
aWduYWxMZW5ndGgsIHNhbXBsZVJhdGUpOwotICAgIHZhciBkYXRhID0gYnVmZmVyLmdldENoYW5u
ZWxEYXRhKDApOwotCi0gICAgZm9yICh2YXIgayA9IDA7IGsgPCBzaWduYWxMZW5ndGg7ICsraykg
ewotICAgICAgICBkYXRhW2tdID0gZihrKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYnVmZmVyOwot
fQotCi0vLyBGcm9tIHRoZSBkYXRhIGFycmF5LCBmaW5kIHRoZSBzdGFydCBhbmQgZW5kIHNhbXBs
ZSBmcmFtZSBmb3IgZWFjaAotLy8gZ3JhaW4uICBUaGlzIGRlcGVuZHMgb24gdGhlIGRhdGEgaGF2
aW5nIDAncyBiZXR3ZWVuIGdyYWluLCBhbmQKLS8vIHRoYXQgdGhlIGdyYWluIGlzIGFsd2F5cyBz
dHJpY3RseSBub24temVyby4KLWZ1bmN0aW9uIGZpbmRTdGFydEFuZEVuZFNhbXBsZXMoZGF0YSkg
ewotICAgIHZhciBuU2FtcGxlcyA9IGRhdGEubGVuZ3RoOwotCi0gICAgdmFyIHN0YXJ0VGltZSA9
IFtdOwotICAgIHZhciBlbmRUaW1lID0gW107Ci0gICAgdmFyIGxvb2tGb3JTdGFydCA9IHRydWU7
Ci0gICAgICAKLSAgICAvLyBMb29rIHRocm91Z2ggdGhlIHJlbmRlcmVkIGRhdGEgdG8gZmluZCB0
aGUgc3RhcnQgYW5kIHN0b3AKLSAgICAvLyB0aW1lcyBvZiBlYWNoIGdyYWluLgotICAgIGZvciAo
dmFyIGsgPSAwOyBrIDwgblNhbXBsZXM7ICsraykgewotICAgICAgICBpZiAobG9va0ZvclN0YXJ0
KSB7Ci0gICAgICAgICAgICAvLyBGaW5kIGEgbm9uLXplcm8gcG9pbnQgYW5kIHJlY29yZCB0aGUg
c3RhcnQuICBXZSdyZSBub3QKLSAgICAgICAgICAgIC8vIGNvbmNlcm5lZCB3aXRoIHRoZSB2YWx1
ZSBpbiB0aGlzIHRlc3QsIG9ubHkgdGhhdCB0aGUKLSAgICAgICAgICAgIC8vIGdyYWluIHN0YXJ0
ZWQgaGVyZS4KLSAgICAgICAgICAgIGlmIChyZW5kZXJlZERhdGFba10pIHsKLSAgICAgICAgICAg
ICAgICBzdGFydFRpbWUucHVzaChrKTsKLSAgICAgICAgICAgICAgICBsb29rRm9yU3RhcnQgPSBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZp
bmQgYSB6ZXJvIGFuZCByZWNvcmQgdGhlIGVuZCBvZiB0aGUgZ3JhaW4uCi0gICAgICAgICAgICBp
ZiAoIXJlbmRlcmVkRGF0YVtrXSkgewotICAgICAgICAgICAgICAgIGVuZFRpbWUucHVzaChrKTsK
LSAgICAgICAgICAgICAgICBsb29rRm9yU3RhcnQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHtzdGFydCA6IHN0YXJ0VGltZSwgZW5kIDogZW5k
VGltZX07Ci19Ci0KLWZ1bmN0aW9uIHBsYXlHcmFpbihjb250ZXh0LCBzb3VyY2UsIHRpbWUsIG9m
ZnNldCwgZHVyYXRpb24pIHsKLSAgICB2YXIgYnVmZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVC
dWZmZXJTb3VyY2UoKTsKLQotICAgIGJ1ZmZlclNvdXJjZS5idWZmZXIgPSBzb3VyY2U7Ci0gICAg
YnVmZmVyU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7Ci0gICAgYnVmZmVyU291
cmNlLnN0YXJ0KHRpbWUsIG9mZnNldCwgZHVyYXRpb24pOwotfQotCi0vLyBQbGF5IG91dCBhbGwg
Z3JhaW5zLiAgUmV0dXJucyBhIG9iamVjdCBjb250YWluaW5nIHR3byBhcnJheXMsIG9uZQotLy8g
Zm9yIHRoZSBzdGFydCB0aW1lIGFuZCBvbmUgZm9yIHRoZSBncmFpbiBvZmZzZXQgdGltZS4KLWZ1
bmN0aW9uIHBsYXlBbGxHcmFpbnMoY29udGV4dCwgc291cmNlLCBudW1iZXJPZk5vdGVzKSB7Ci0g
ICAgdmFyIHN0YXJ0VGltZXMgPSBuZXcgQXJyYXkobnVtYmVyT2ZOb3Rlcyk7Ci0gICAgdmFyIG9m
ZnNldHMgPSBuZXcgQXJyYXkobnVtYmVyT2ZOb3Rlcyk7Ci0KLSAgICBmb3IgKHZhciBrID0gMDsg
ayA8IG51bWJlck9mTm90ZXM7ICsraykgewotICAgICAgICB2YXIgdGltZU9mZnNldCA9IGsgKiB0
aW1lU3RlcDsKLSAgICAgICAgdmFyIGdyYWluT2Zmc2V0ID0gayAqIGdyYWluT2Zmc2V0U3RlcDsK
LQotICAgICAgICBwbGF5R3JhaW4oY29udGV4dCwgc291cmNlLCB0aW1lT2Zmc2V0LCBncmFpbk9m
ZnNldCwgZHVyYXRpb24pOwotICAgICAgICBzdGFydFRpbWVzW2tdID0gdGltZU9mZnNldDsKLSAg
ICAgICAgb2Zmc2V0c1trXSA9IGdyYWluT2Zmc2V0OwotICAgIH0KLQotICAgIHJldHVybiB7IHN0
YXJ0VGltZXMgOiBzdGFydFRpbWVzLCBncmFpbk9mZnNldFRpbWVzIDogb2Zmc2V0cyB9OwotfQot
Ci0vLyBWZXJpZnkgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZCBmcmFtZXMgZm9yIGVhY2ggZ3JhaW4g
bWF0Y2ggb3VyCi0vLyBleHBlY3RlZCBzdGFydCBhbmQgZW5kIGZyYW1lcy4KLWZ1bmN0aW9uIHZl
cmlmeVN0YXJ0QW5kRW5kRnJhbWVzKHN0YXJ0RW5kRnJhbWVzKSB7Ci0gICAgdmFyIHN0YXJ0RnJh
bWVzID0gc3RhcnRFbmRGcmFtZXMuc3RhcnQ7Ci0gICAgdmFyIGVuZEZyYW1lcyA9IHN0YXJ0RW5k
RnJhbWVzLmVuZDsKLSAgICAgIAotICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKLQotICAgIC8vIENv
dW50IG9mIGhvdyBtYW55IGdyYWlucyBzdGFydGVkIGF0IHRoZSBpbmNvcnJlY3QgdGltZS4KLSAg
ICB2YXIgZXJyb3JDb3VudFN0YXJ0ID0gMDsKLQotICAgIC8vIENvdW50IG9mIGhvdyBtYW55IGdy
YWlucyBlbmRlZCBhdCB0aGUgaW5jb3JyZWN0IHRpbWUuCi0gICAgdmFyIGVycm9yQ291bnRFbmQg
PSAwOwotCi0gICAgaWYgKHN0YXJ0RnJhbWVzLmxlbmd0aCAhPSBlbmRGcmFtZXMubGVuZ3RoKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBmaW5kIHRoZSBiZWdpbm5pbmcgb3IgZW5k
IG9mIGEgZ3JhaW4uIik7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBp
ZiAoc3RhcnRGcmFtZXMubGVuZ3RoID09IG51bWJlck9mVGVzdHMgJiYgZW5kRnJhbWVzLmxlbmd0
aCA9PSBudW1iZXJPZlRlc3RzKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIkZvdW5kIGFsbCAiICsg
bnVtYmVyT2ZUZXN0cyArICIgZ3JhaW5zLiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoIkRpZCBub3QgZmluZCBhbGwgIiArIG51bWJlck9mVGVzdHMgKyAiIGdyYWlucy4iKTsK
LSAgICB9Ci0KLSAgICAvLyBFeGFtaW5lIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lcyB0byBzZWUg
aWYgdGhleSBtYXRjaCBvdXIKLSAgICAvLyBleHBlY3RhdGlvbnMuCi0gICAgZm9yICh2YXIgayA9
IDA7IGsgPCBzdGFydEZyYW1lcy5sZW5ndGg7ICsraykgewotICAgICAgICB2YXIgZXhwZWN0ZWRT
dGFydCA9IHRpbWVUb1NhbXBsZUZyYW1lKGsgKiB0aW1lU3RlcCwgc2FtcGxlUmF0ZSk7Ci0gICAg
ICAgIC8vIFRoZSBlbmQgcG9pbnQgaXMgdGhlIGR1cmF0aW9uLCBwbHVzIHRoZSBleHRyYSBmcmFt
ZXMKLSAgICAgICAgLy8gZm9yIEhSVEYuCi0gICAgICAgIHZhciBleHBlY3RlZEVuZCA9IGV4cGVj
dGVkU3RhcnQgKyBncmFpbkxlbmd0aEluU2FtcGxlRnJhbWVzKGsgKiBncmFpbk9mZnNldFN0ZXAs
IGR1cmF0aW9uLCBzYW1wbGVSYXRlKTsKLQotICAgICAgICBpZiAoc3RhcnRGcmFtZXNba10gIT0g
ZXhwZWN0ZWRTdGFydCkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHVsc2UgIiArIGsgKyAi
IHN0YXJ0ZWQgYXQgIiArIHN0YXJ0RnJhbWVzW2tdICsgIiBidXQgZXhwZWN0ZWQgYXQgIiArIGV4
cGVjdGVkU3RhcnQpOwotICAgICAgICAgICAgKytlcnJvckNvdW50U3RhcnQ7Ci0gICAgICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZW5kRnJhbWVzW2td
ICE9IGV4cGVjdGVkRW5kKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJQdWxzZSAiICsgayAr
ICIgZW5kZWQgYXQgIiArIGVuZEZyYW1lc1trXSArICIgYnV0IGV4cGVjdGVkIGF0ICIgKyBleHBl
Y3RlZEVuZCk7Ci0gICAgICAgICAgICArK2Vycm9yQ291bnRFbmQ7Ci0gICAgICAgICAgICBzdWNj
ZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDaGVjayB0aGF0IGFsbCB0
aGUgZ3JhaW5zIHN0YXJ0ZWQgb3IgZW5kZWQgYXQgdGhlIGNvcnJlY3QgdGltZS4KLSAgICBpZiAo
IWVycm9yQ291bnRTdGFydCkgewotICAgICAgICBpZiAoc3RhcnRGcmFtZXMubGVuZ3RoID09IG51
bWJlck9mVGVzdHMpIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkFsbCAiICsgbnVtYmVyT2ZU
ZXN0cyArICIgZ3JhaW5zIHN0YXJ0ZWQgYXQgdGhlIGNvcnJlY3QgdGltZS4iKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkFsbCBncmFpbnMgc3RhcnRlZCBhdCB0
aGUgY29ycmVjdCB0aW1lLCBidXQgb25seSAiICsgc3RhcnRGcmFtZXMubGVuZ3RoICsgIiBncmFp
bnMgZm91bmQuIik7Ci0gICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKGVycm9yQ291bnRTdGFydCArICIgb3V0IG9m
ICIgKyBudW1iZXJPZlRlc3RzICsgIiBncmFpbnMgc3RhcnRlZCBhdCB0aGUgd3JvbmcgdGltZS4i
KTsKLSAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgIH0KLQotICAgIGlmICghZXJyb3JDb3Vu
dEVuZCkgewotICAgICAgICBpZiAoZW5kRnJhbWVzLmxlbmd0aCA9PSBudW1iZXJPZlRlc3RzKSB7
Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgIiArIG51bWJlck9mVGVzdHMgKyAiIGdyYWlu
cyBlbmRlZCBhdCB0aGUgY29ycmVjdCB0aW1lLiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiQWxsIGdyYWlucyBlbmRlZCBhdCB0aGUgY29ycmVjdCB0aW1lLCBi
dXQgb25seSAiICsgZW5kRnJhbWVzLmxlbmd0aCArICIgZ3JhaW5zIGZvdW5kLiIpOwotICAgICAg
ICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
dGVzdEZhaWxlZChlcnJvckNvdW50RW5kICsgIiBvdXQgb2YgIiArIG51bWJlck9mVGVzdHMgKyAi
IGdyYWlucyBlbmRlZCBhdCB0aGUgd3JvbmcgdGltZS4iKTsKLSAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOwotICAgIH0KLQotICAgIHJldHVybiBzdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL3NjcmlwdHByb2Nlc3Nvcm5vZGUtdGVzdGluZy5qcyBi
L0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9zY3JpcHRwcm9jZXNzb3Jub2RlLXRlc3Rp
bmcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZjM2NWE3YWY0MjIxMTllYWUy
NjhhYjc3NzFkZDdmMDYyODljM2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL3NjcmlwdHByb2Nlc3Nv
cm5vZGUtdGVzdGluZy5qcworKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vIEZvciB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBKYXZhU2NyaXB0QXVkaW9Ob2RlLCB3aGVuIGl0
IHdvcmtzIHdpdGgKLS8vIE9mZmxpbmVBdWRpb0NvbnRleHQgKHdoaWNoIHJ1bnMgbXVjaCBmYXN0
ZXIgdGhhbiByZWFsLXRpbWUpIHRoZQotLy8gZXZlbnQuaW5wdXRCdWZmZXIgbWlnaHQgYmUgb3Zl
cndyaXRlIGFnYWluIGJlZm9yZSBvbmF1ZGlvcHJvY2VzcyBldmVyIGdldAotLy8gY2hhbmNlIHRv
IGJlIGNhbGxlZC4gV2UgY2FyZWZ1bGx5IGFycmFuZ2UgdGhlIHJlbmRlckxlbmd0aEluRnJhbWVz
IGFuZAotLy8gYnVmZmVyU2l6ZSB0byBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdmFsdWUgdG8gYXZv
aWQgdGhpcyBpc3N1ZS4KLWxldCByZW5kZXJMZW5ndGhJbkZyYW1lcyA9IDUxMjsKLWxldCBidWZm
ZXJTaXplID0gNTEyOwotCi1sZXQgY29udGV4dDsKLQotZnVuY3Rpb24gY3JlYXRlQnVmZmVyKGNv
bnRleHQsIG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkgewotICBsZXQgYXVkaW9CdWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUJ1ZmZlcihudW1iZXJPZkNoYW5uZWxzLCBsZW5ndGgsIHNhbXBsZVJhdGUp
OwotCi0gIGZpbGxEYXRhKGF1ZGlvQnVmZmVyLCBudW1iZXJPZkNoYW5uZWxzLCBhdWRpb0J1ZmZl
ci5sZW5ndGgpOwotICByZXR1cm4gYXVkaW9CdWZmZXI7Ci19Ci0KLWZ1bmN0aW9uIHByb2Nlc3NB
dWRpb0RhdGEoZXZlbnQpIHsKLSAgYnVmZmVyID0gZXZlbnQub3V0cHV0QnVmZmVyOwotICBpZiAo
YnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgIT0gb3V0cHV0Q2hhbm5lbHMpCi0gICAgdGVzdEZhaWxl
ZCgnbnVtYmVyT2ZPdXRwdXRDaGFubmVscyBkb2VzblwndCBtYXRjaCEnKTsKLQotICBpZiAoYnVm
ZmVyLmxlbmd0aCAhPSBidWZmZXJTaXplKQotICAgIHRlc3RGYWlsZWQoJ2xlbmd0aCBvZiBidWZm
ZXIgZG9lc25cJ3QgbWF0Y2ghJyk7Ci0KLSAgYnVmZmVyID0gZXZlbnQuaW5wdXRCdWZmZXI7Ci0K
LSAgbGV0IHN1Y2Nlc3MgPSBjaGVja1N0ZXJlb09ubHlEYXRhKGJ1ZmZlciwgaW5wdXRDaGFubmVs
cywgYnVmZmVyLmxlbmd0aCk7Ci0KLSAgaWYgKHN1Y2Nlc3MpIHsKLSAgICB0ZXN0UGFzc2VkKCdv
bmF1ZGlvcHJvY2VzcyB3YXMgY2FsbGVkIHdpdGggY29ycmVjdCBpbnB1dCBkYXRhLicpOwotICB9
IGVsc2UgewotICAgIHRlc3RGYWlsZWQoJ29uYXVkaW9wcm9jZXNzIHdhcyBjYWxsZWQgd2l0aCB3
cm9uZyBpbnB1dCBkYXRhLicpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGZpbGxEYXRhKGJ1ZmZlciwg
bnVtYmVyT2ZDaGFubmVscywgbGVuZ3RoKSB7Ci0gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVy
T2ZDaGFubmVsczsgKytpKSB7Ci0gICAgbGV0IGRhdGEgPSBidWZmZXIuZ2V0Q2hhbm5lbERhdGEo
aSk7Ci0KLSAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbmd0aDsgKytqKQotICAgICAgaWYgKGkg
PCAyKQotICAgICAgICBkYXRhW2pdID0gaSAqIDIgLSAxOwotICAgICAgZWxzZQotICAgICAgICBk
YXRhW2pdID0gMDsKLSAgfQotfQotCi0vLyBCb3RoIDIgdG8gOCB1cG1peCBhbmQgOCB0byAyIGRv
d25taXggYXJlIGp1c3QgZGlyZWN0bHkgY29weSB0aGUgZmlyc3QgdHdvCi0vLyBjaGFubmVscyBh
bmQgbGVmdCBjaGFubmVscyBhcmUgemVyb2VkLgotZnVuY3Rpb24gY2hlY2tTdGVyZW9Pbmx5RGF0
YShidWZmZXIsIG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkgewotICBmb3IgKGxldCBpID0gMDsg
aSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgIGxldCBkYXRhID0gYnVmZmVyLmdldENo
YW5uZWxEYXRhKGkpOwotCi0gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsZW5ndGg7ICsraikgewot
ICAgICAgaWYgKGkgPCAyKSB7Ci0gICAgICAgIGlmIChkYXRhW2pdICE9IGkgKiAyIC0gMSkKLSAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGF0YVtq
XSAhPSAwKQotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAg
cmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkpTTm9kZVRlc3QoKSB7Ci0gIC8vIENyZWF0
ZSBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCi0gIGNvbnRleHQgPSBuZXcgT2ZmbGluZUF1ZGlvQ29u
dGV4dCgyLCByZW5kZXJMZW5ndGhJbkZyYW1lcywgc2FtcGxlUmF0ZSk7Ci0KLSAgbGV0IHNvdXJj
ZUJ1ZmZlciA9Ci0gICAgICBjcmVhdGVCdWZmZXIoY29udGV4dCwgc291cmNlQ2hhbm5lbHMsIHJl
bmRlckxlbmd0aEluRnJhbWVzKTsKLQotICBsZXQgYnVmZmVyU291cmNlID0gY29udGV4dC5jcmVh
dGVCdWZmZXJTb3VyY2UoKTsKLSAgYnVmZmVyU291cmNlLmJ1ZmZlciA9IHNvdXJjZUJ1ZmZlcjsK
LQotICBsZXQgc2NyaXB0Tm9kZSA9Ci0gICAgICBjb250ZXh0LmNyZWF0ZVNjcmlwdFByb2Nlc3Nv
cihidWZmZXJTaXplLCBpbnB1dENoYW5uZWxzLCBvdXRwdXRDaGFubmVscyk7Ci0KLSAgYnVmZmVy
U291cmNlLmNvbm5lY3Qoc2NyaXB0Tm9kZSk7Ci0gIHNjcmlwdE5vZGUuY29ubmVjdChjb250ZXh0
LmRlc3RpbmF0aW9uKTsKLSAgc2NyaXB0Tm9kZS5vbmF1ZGlvcHJvY2VzcyA9IHByb2Nlc3NBdWRp
b0RhdGE7Ci0KLSAgYnVmZmVyU291cmNlLnN0YXJ0KDApOwotICBjb250ZXh0Lm9uY29tcGxldGUg
PSBmaW5pc2hKU1Rlc3Q7Ci0gIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKLX0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431115</attachid>
            <date>2021-06-10 12:58:59 -0700</date>
            <delta_ts>2021-06-11 16:39:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226843-20210610125859.patch</filename>
            <type>text/plain</type>
            <size>19711</size>
            <attacher name="Robert Jenner">jenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzE5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGJiOGJlZWFiNDBhMzRmMGNjNTU3
YzI1OGU5ZjkxODVjMzk1MWY4NS4uODJlZGZjYmJjY2M5NDQzMjE0ZDIzNjZkMjBiNzNiMzEzYTRi
MTBjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTEwICBSb2JlcnQgSmVubmVyICA8
amVubmVyQGFwcGxlLmNvbT4KKworICAgICAgICBbTGF5b3V0VGVzdHNdIERlbGV0ZSB1bnVzZWQg
TGF5b3V0VGVzdHMvd2ViYXVkaW8gcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10
ZXN0aW5nLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9qYXZhc2Ny
aXB0YXVkaW9ub2RlLXRlc3RpbmcuanM6IFJlbW92ZWQuCisgICAgICAgICogd2ViYXVkaW8vcmVz
b3VyY2VzL25vdGUtZ3JhaW4tb24tdGVzdGluZy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJh
dWRpby9yZXNvdXJjZXMvc2NyaXB0cHJvY2Vzc29ybm9kZS10ZXN0aW5nLmpzOiBSZW1vdmVkLgor
CiAyMDIxLTA2LTEwICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE9ubHkg
Y2FjaGUgR0VUIHJlcXVlc3RzIGluIHRoZSBtZW1vcnkgY2FjaGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNjE3M2ZiYTExNjhjYTg5ZDRjYjQzYzQxYmE5ZDllOWZm
ODk5YWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotdmFyIHNhbXBsZVJhdGUgPSA0NDEwMC4wOwotCi12
YXIgcmVuZGVyTGVuZ3RoU2Vjb25kcyA9IDg7Ci12YXIgcHVsc2VMZW5ndGhTZWNvbmRzID0gMTsK
LXZhciBwdWxzZUxlbmd0aEZyYW1lcyA9IHB1bHNlTGVuZ3RoU2Vjb25kcyAqIHNhbXBsZVJhdGU7
Ci0KLWZ1bmN0aW9uIGNyZWF0ZVNxdWFyZVB1bHNlQnVmZmVyKGNvbnRleHQsIHNhbXBsZUZyYW1l
TGVuZ3RoKSB7Ci0gICAgdmFyIGF1ZGlvQnVmZmVyID0gY29udGV4dC5jcmVhdGVCdWZmZXIoMSwg
c2FtcGxlRnJhbWVMZW5ndGgsIGNvbnRleHQuc2FtcGxlUmF0ZSk7Ci0KLSAgICB2YXIgbiA9IGF1
ZGlvQnVmZmVyLmxlbmd0aDsKLSAgICB2YXIgZGF0YSA9IGF1ZGlvQnVmZmVyLmdldENoYW5uZWxE
YXRhKDApOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCi0gICAgICAgIGRhdGFb
aV0gPSAxOwotCi0gICAgcmV0dXJuIGF1ZGlvQnVmZmVyOwotfQotCi0vLyBUaGUgdHJpYW5nbGUg
YnVmZmVyIGhvbGRzIHRoZSBleHBlY3RlZCByZXN1bHQgb2YgdGhlIGNvbnZvbHV0aW9uLgotLy8g
SXQgbGluZWFybHkgcmFtcHMgdXAgZnJvbSAwIHRvIGl0cyBtYXhpbXVtIHZhbHVlIChhdCB0aGUg
Y2VudGVyKQotLy8gdGhlbiBsaW5lYXJseSByYW1wcyBkb3duIHRvIDAuICBUaGUgY2VudGVyIHZh
bHVlIGNvcnJlc3BvbmRzIHRvIHRoZQotLy8gcG9pbnQgd2hlcmUgdGhlIHR3byBzcXVhcmUgcHVs
c2VzIG92ZXJsYXAgdGhlIG1vc3QuCi1mdW5jdGlvbiBjcmVhdGVUcmlhbmdsZVB1bHNlQnVmZmVy
KGNvbnRleHQsIHNhbXBsZUZyYW1lTGVuZ3RoKSB7Ci0gICAgdmFyIGF1ZGlvQnVmZmVyID0gY29u
dGV4dC5jcmVhdGVCdWZmZXIoMSwgc2FtcGxlRnJhbWVMZW5ndGgsIGNvbnRleHQuc2FtcGxlUmF0
ZSk7Ci0KLSAgICB2YXIgbiA9IGF1ZGlvQnVmZmVyLmxlbmd0aDsKLSAgICB2YXIgaGFsZkxlbmd0
aCA9IG4gLyAyOwotICAgIHZhciBkYXRhID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7
Ci0gICAgCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYWxmTGVuZ3RoOyArK2kpCi0gICAgICAg
IGRhdGFbaV0gPSBpICsgMTsKLQotICAgIGZvciAodmFyIGkgPSBoYWxmTGVuZ3RoOyBpIDwgbjsg
KytpKQotICAgICAgICBkYXRhW2ldID0gbiAtIGkgLSAxOwotCi0gICAgcmV0dXJuIGF1ZGlvQnVm
ZmVyOwotfQotCi1mdW5jdGlvbiBsb2cxMCh4KSB7Ci0gIHJldHVybiBNYXRoLmxvZyh4KS9NYXRo
LkxOMTA7Ci19Ci0KLWZ1bmN0aW9uIGxpbmVhclRvRGVjaWJlbCh4KSB7Ci0gIHJldHVybiAyMCps
b2cxMCh4KTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgdGhlIHJlbmRlcmVkIHJlc3VsdCBpcyB2ZXJ5
IGNsb3NlIHRvIHRoZSByZWZlcmVuY2UKLS8vIHRyaWFuZ3VsYXIgcHVsc2UuCi1mdW5jdGlvbiBj
aGVja1RyaWFuZ3VsYXJQdWxzZShyZW5kZXJlZCwgcmVmZXJlbmNlKSB7Ci0gICAgdmFyIG1hdGNo
ID0gdHJ1ZTsKLSAgICB2YXIgbWF4RGVsdGEgPSAwOwotICAgIHZhciB2YWx1ZUF0TWF4RGVsdGEg
PSAwOwotICAgIHZhciBtYXhEZWx0YUluZGV4ID0gMDsKLQotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcmVmZXJlbmNlLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBkaWZmID0gcmVuZGVyZWRb
aV0gLSByZWZlcmVuY2VbaV07Ci0gICAgICAgIHZhciB4ID0gTWF0aC5hYnMoZGlmZik7Ci0gICAg
ICAgIGlmICh4ID4gbWF4RGVsdGEpIHsKLSAgICAgICAgICAgIG1heERlbHRhID0geDsKLSAgICAg
ICAgICAgIHZhbHVlQXRNYXhEZWx0YSA9IHJlZmVyZW5jZVtpXTsKLSAgICAgICAgICAgIG1heERl
bHRhSW5kZXggPSBpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gYWxsb3dlZERldmlhdGlv
bkZyYWN0aW9uIHdhcyBkZXRlcm1pbmVkIGV4cGVyaW1lbnRhbGx5LiAgSXQKLSAgICAvLyBpcyB0
aGUgdGhyZXNob2xkIG9mIHRoZSByZWxhdGl2ZSBlcnJvciBhdCB0aGUgbWF4aW11bQotICAgIC8v
IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHJ1ZSB0cmlhbmd1bGFyIHB1bHNlIGFuZCB0aGUKLSAg
ICAvLyByZW5kZXJlZCBwdWxzZS4KLSAgICB2YXIgYWxsb3dlZERldmlhdGlvbkRlY2liZWxzID0g
LTEzMy4yOwotICAgIHZhciBtYXhEZXZpYXRpb25EZWNpYmVscyA9IGxpbmVhclRvRGVjaWJlbCht
YXhEZWx0YSAvIHZhbHVlQXRNYXhEZWx0YSk7Ci0KLSAgICBpZiAobWF4RGV2aWF0aW9uRGVjaWJl
bHMgPD0gYWxsb3dlZERldmlhdGlvbkRlY2liZWxzKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIlRy
aWFuZ3VsYXIgcG9ydGlvbiBvZiBjb252b2x1dGlvbiBpcyBjb3JyZWN0LiIpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIlRyaWFuZ3VsYXIgcG9ydGlvbiBvZiBjb252b2x1dGlv
biBpcyBub3QgY29ycmVjdC4gIE1heCBkZXZpYXRpb24gPSAiICsgbWF4RGV2aWF0aW9uRGVjaWJl
bHMgKyAiIGRCIGF0ICIgKyBtYXhEZWx0YUluZGV4KTsKLSAgICAgICAgbWF0Y2ggPSBmYWxzZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gbWF0Y2g7Ci19ICAgICAgICAKLQotLy8gVmVyaWZ5IHRoYXQg
dGhlIHJlbmRlcmVkIGRhdGEgaXMgY2xvc2UgdG8gemVybyBmb3IgdGhlIGZpcnN0IHBhcnQKLS8v
IG9mIHRoZSB0YWlsLgotZnVuY3Rpb24gY2hlY2tUYWlsMShkYXRhLCByZWZlcmVuY2UsIGJyZWFr
cG9pbnQpIHsKLSAgICB2YXIgaXNaZXJvID0gdHJ1ZTsKLSAgICB2YXIgdGFpbDFNYXggPSAwOwot
Ci0gICAgZm9yICh2YXIgaSA9IHJlZmVyZW5jZS5sZW5ndGg7IGkgPCByZWZlcmVuY2UubGVuZ3Ro
ICsgYnJlYWtwb2ludDsgKytpKSB7Ci0gICAgICAgIHZhciBtYWcgPSBNYXRoLmFicyhkYXRhW2ld
KTsKLSAgICAgICAgaWYgKG1hZyA+IHRhaWwxTWF4KSB7Ci0gICAgICAgICAgICB0YWlsMU1heCA9
IG1hZzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIExldCdzIGZpbmQgdGhlIHBlYWsgb2Yg
dGhlIHJlZmVyZW5jZSAoZXZlbiB0aG91Z2ggd2Uga25vdyBhCi0gICAgLy8gcHJpb3JpIHdoYXQg
aXQgaXMpLgotICAgIHZhciByZWZNYXggPSAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVm
ZXJlbmNlLmxlbmd0aDsgKytpKSB7Ci0gICAgICByZWZNYXggPSBNYXRoLm1heChyZWZNYXgsIE1h
dGguYWJzKHJlZmVyZW5jZVtpXSkpOwotICAgIH0KLQotICAgIC8vIFRoaXMgdGhyZXNob2xkIGlz
IGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRoZQotICAgIC8vIHZhbHVl
IG9mIHRhaWwxTWF4RGVjaWJlbHMuCi0gICAgdmFyIHRocmVzaG9sZDEgPSAtMTI5Ljc7Ci0KLSAg
ICB2YXIgdGFpbDFNYXhEZWNpYmVscyA9IGxpbmVhclRvRGVjaWJlbCh0YWlsMU1heC9yZWZNYXgp
OwotICAgIGlmICh0YWlsMU1heERlY2liZWxzIDw9IHRocmVzaG9sZDEpIHsKLSAgICAgICAgdGVz
dFBhc3NlZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0aW9uIGlzIHN1ZmZpY2llbnRs
eSBzbWFsbC4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJGaXJzdCBwYXJ0
IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2llbnRseSBzbWFsbDogIiArIHRh
aWwxTWF4RGVjaWJlbHMgKyAiIGRCIik7Ci0gICAgICAgIGlzWmVybyA9IGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiBpc1plcm87Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IHRoZSBzZWNvbmQgcGFy
dCBvZiB0aGUgdGFpbCBvZiB0aGUgY29udm9sdXRpb24gaXMKLS8vIGV4YWN0bHkgemVyby4KLWZ1
bmN0aW9uIGNoZWNrVGFpbDIoZGF0YSwgcmVmZXJlbmNlLCBicmVha3BvaW50KSB7Ci0gICAgdmFy
IGlzWmVybyA9IHRydWU7Ci0gICAgdmFyIHRhaWwyTWF4ID0gMDsKLSAgICAvLyBGb3IgdGhlIHNl
Y29uZCBwYXJ0IG9mIHRoZSB0YWlsLCB0aGUgbWF4aW11bSB2YWx1ZSBzaG91bGQgYmUKLSAgICAv
LyBleGFjdGx5IHplcm8uCi0gICAgdmFyIHRocmVzaG9sZDIgPSAwOwotICAgIGZvciAodmFyIGkg
PSByZWZlcmVuY2UubGVuZ3RoICsgYnJlYWtwb2ludDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgaWYgKE1hdGguYWJzKGRhdGFbaV0pID4gMCkgewotICAgICAgICAgICAgaXNaZXJv
ID0gZmFsc2U7IAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoaXNaZXJvKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIlJlbmRlcmVkIHNpZ25hbCBhZnRlciB0
YWlsIG9mIGNvbnZvbHV0aW9uIGlzIHNpbGVudC4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0
ZXN0RmFpbGVkKCJSZW5kZXJlZCBzaWduYWwgYWZ0ZXIgdGFpbCBvZiBjb252b2x1dGlvbiBzaG91
bGQgYmUgc2lsZW50LiIpOwotICAgIH0KLQotICAgIHJldHVybiBpc1plcm87Ci19Ci0KLWZ1bmN0
aW9uIGNoZWNrQ29udm9sdmVkUmVzdWx0KHRyaWFuZ2xlUHVsc2UpIHsKLSAgICByZXR1cm4gZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgdmFyIHJlbmRlcmVkQnVmZmVyID0gZXZlbnQucmVuZGVy
ZWRCdWZmZXI7Ci0KLSAgICAgICAgdmFyIHJlZmVyZW5jZURhdGEgPSB0cmlhbmdsZVB1bHNlLmdl
dENoYW5uZWxEYXRhKDApOwotICAgICAgICB2YXIgcmVuZGVyZWREYXRhID0gcmVuZGVyZWRCdWZm
ZXIuZ2V0Q2hhbm5lbERhdGEoMCk7Ci0gICAgCi0gICAgICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsK
LSAgICAKLSAgICAgICAgLy8gVmVyaWZ5IHRoZSB0cmlhbmd1bGFyIHB1bHNlIGlzIGFjdHVhbGx5
IHRyaWFuZ3VsYXIuCi0KLSAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgY2hlY2tUcmlhbmd1
bGFyUHVsc2UocmVuZGVyZWREYXRhLCByZWZlcmVuY2VEYXRhKTsKLSAgICAgICAgCi0gICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IHBvcnRpb24gYWZ0ZXIgY29udm9sdmVkIHBvcnRpb24gaXMgdG90
YWxseQotICAgICAgICAvLyBzaWxlbnQuICBCdXQgcm91bmQtb2ZmIHByZXZlbnRzIHRoaXMgZnJv
bSBiZWluZyBjb21wbGV0ZWx5Ci0gICAgICAgIC8vIHRydWUuICBBdCB0aGUgZW5kIG9mIHRoZSB0
cmlhbmdsZSwgaXQgc2hvdWxkIGJlIGNsb3NlIHRvCi0gICAgICAgIC8vIHplcm8uICBJZiB3ZSBn
byBmYXJ0aGVyIG91dCwgaXQgc2hvdWxkIGJlIGV2ZW4gY2xvc2VyIGFuZAotICAgICAgICAvLyBl
dmVudHVhbGx5IHplcm8uCi0KLSAgICAgICAgLy8gRm9yIHRoZSB0YWlsIG9mIHRoZSBjb252b2x1
dGlvbiAod2hlcmUgdGhlIHJlc3VsdCB3b3VsZCBiZQotICAgICAgICAvLyB0aGVvcmV0aWNhbGx5
IHplcm8pLCB3ZSBwYXJ0aXRpb24gdGhlIHRhaWwgaW50byB0d28KLSAgICAgICAgLy8gcGFydHMu
ICBUaGUgZmlyc3QgaXMgdGhlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRhaWwsCi0gICAgICAg
IC8vIHdoZXJlIHdlIHRvbGVyYXRlIGEgc21hbGwgYnV0IG5vbi16ZXJvIHZhbHVlLiAgVGhlIHNl
Y29uZCBwYXJ0IGlzCi0gICAgICAgIC8vIGZhcnRoZXIgYWxvbmcgdGhlIHRhaWwgd2hlcmUgdGhl
IHJlc3VsdCBzaG91bGQgYmUgemVyby4KLSAgICAgICAgCi0gICAgICAgIC8vIGJyZWFrcG9pbnQg
aXMgdGhlIHBvaW50IGRpdmlkaW5nIHRoZSBmaXJzdCB0d28gdGFpbCBwYXJ0cwotICAgICAgICAv
LyB3ZSdyZSBsb29raW5nIGF0LiAgRXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5lZC4KLSAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSAxMjgwMDsKLQotICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBj
aGVja1RhaWwxKHJlbmRlcmVkRGF0YSwgcmVmZXJlbmNlRGF0YSwgYnJlYWtwb2ludCk7Ci0gICAg
ICAgIAotICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBjaGVja1RhaWwyKHJlbmRlcmVkRGF0
YSwgcmVmZXJlbmNlRGF0YSwgYnJlYWtwb2ludCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoc3Vj
Y2VzcykgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgiVGVzdCBzaWduYWwgd2FzIGNvcnJlY3Rs
eSBjb252b2x2ZWQuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVk
KCJUZXN0IHNpZ25hbCB3YXMgbm90IGNvcnJlY3RseSBjb252b2x2ZWQuIik7Ci0gICAgICAgIH0K
LQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvamF2YXNjcmlwdGF1ZGlvbm9kZS10ZXN0aW5nLmpzIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2phdmFzY3JpcHRhdWRpb25vZGUtdGVzdGlu
Zy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAwMmZlNzIyNTQ1OGZlY2NjMjU0
YTkyMDc4YTA5NmI5ZjJmMGE3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvamF2YXNjcmlwdGF1ZGlv
bm9kZS10ZXN0aW5nLmpzCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLy8gRm9yIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIEphdmFTY3JpcHRBdWRpb05vZGUsIHdoZW4gaXQg
d29ya3Mgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0ICh3aGljaCBydW5zIG11Y2ggZmFzdGVyCi0v
LyB0aGFuIHJlYWwtdGltZSkgdGhlIGV2ZW50LmlucHV0QnVmZmVyIG1pZ2h0IGJlIG92ZXJ3cml0
ZSBhZ2FpbiBiZWZvcmUgb25hdWRpb3Byb2Nlc3MgZXZlciBnZXQgY2hhbmNlIHRvIGJlIGNhbGxl
ZC4KLS8vIFdlIGNhcmVmdWxseSBhcnJhbmdlIHRoZSByZW5kZXJMZW5ndGhJbkZyYW1lcyBhbmQg
YnVmZmVyU2l6ZSB0byBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdmFsdWUgdG8gYXZvaWQgdGhpcyBp
c3N1ZS4KLXZhciByZW5kZXJMZW5ndGhJbkZyYW1lcyA9IDUxMjsKLXZhciBidWZmZXJTaXplID0g
NTEyOwotCi12YXIgY29udGV4dDsKLQotZnVuY3Rpb24gY3JlYXRlQnVmZmVyKGNvbnRleHQsIG51
bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkgewotICAgIHZhciBhdWRpb0J1ZmZlciA9IGNvbnRleHQu
Y3JlYXRlQnVmZmVyKG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCwgc2FtcGxlUmF0ZSk7Ci0KLSAg
ICBmaWxsRGF0YShhdWRpb0J1ZmZlciwgbnVtYmVyT2ZDaGFubmVscywgYXVkaW9CdWZmZXIubGVu
Z3RoKTsKLSAgICByZXR1cm4gYXVkaW9CdWZmZXI7Ci19Ci0KLWZ1bmN0aW9uIHByb2Nlc3NBdWRp
b0RhdGEoZXZlbnQpIHsKLSAgICBidWZmZXIgPSBldmVudC5vdXRwdXRCdWZmZXI7Ci0gICAgaWYg
KGJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzICE9IG91dHB1dENoYW5uZWxzKQotICAgICAgICB0ZXN0
RmFpbGVkKCJudW1iZXJPZk91dHB1dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2ghIik7Ci0KLSAgICBp
ZiAoYnVmZmVyLmxlbmd0aCAhPSBidWZmZXJTaXplKQotICAgICAgICB0ZXN0RmFpbGVkKCJsZW5n
dGggb2YgYnVmZmVyIGRvZXNuJ3QgbWF0Y2ghIik7Ci0KLSAgICBidWZmZXIgPSBldmVudC5pbnB1
dEJ1ZmZlcjsKLSAgICAKLSAgICB2YXIgc3VjY2VzcyA9IGNoZWNrU3RlcmVvT25seURhdGEoYnVm
ZmVyLCBpbnB1dENoYW5uZWxzLCBidWZmZXIubGVuZ3RoKTsKLQotICAgIGlmIChzdWNjZXNzKSB7
Ci0gICAgICAgIHRlc3RQYXNzZWQoIm9uYXVkaW9wcm9jZXNzIHdhcyBjYWxsZWQgd2l0aCBjb3Jy
ZWN0IGlucHV0IGRhdGEuIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgib25h
dWRpb3Byb2Nlc3Mgd2FzIGNhbGxlZCB3aXRoIHdyb25nIGlucHV0IGRhdGEuIik7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBmaWxsRGF0YShidWZmZXIsIG51bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkg
ewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAg
ICAgIHZhciBkYXRhID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKGkpOwotCi0gICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgbGVuZ3RoOyArK2opCi0gICAgICAgICAgICBpZiAoaSA8IDIpCi0gICAg
ICAgICAgICAgICAgZGF0YVtqXSA9IGkgKiAyIC0gMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBkYXRhW2pdID0gMDsKLSAgICB9Ci19Ci0KLS8vIEJvdGggMiB0byA4IHVwbWl4
IGFuZCA4IHRvIDIgZG93bm1peCBhcmUganVzdCBkaXJlY3RseSBjb3B5IHRoZSBmaXJzdCB0d28g
Y2hhbm5lbHMgYW5kIGxlZnQgY2hhbm5lbHMgYXJlIHplcm9lZC4KLWZ1bmN0aW9uIGNoZWNrU3Rl
cmVvT25seURhdGEoYnVmZmVyLCBudW1iZXJPZkNoYW5uZWxzLCBsZW5ndGgpIHsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICB2YXIgZGF0
YSA9IGJ1ZmZlci5nZXRDaGFubmVsRGF0YShpKTsKLQotICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoaSA8IDIpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoZGF0YVtqXSAhPSBpICogMiAtIDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFb
al0gIT0gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiBydW5K
U05vZGVUZXN0KCkKLXsKLSAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRpbyBjb250ZXh0LgotICAg
IGNvbnRleHQgPSBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgyLCByZW5kZXJMZW5ndGhJbkZyYW1l
cywgc2FtcGxlUmF0ZSk7Ci0KLSAgICB2YXIgc291cmNlQnVmZmVyID0gY3JlYXRlQnVmZmVyKGNv
bnRleHQsIHNvdXJjZUNoYW5uZWxzLCByZW5kZXJMZW5ndGhJbkZyYW1lcyk7Ci0KLSAgICB2YXIg
YnVmZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKLSAgICBidWZmZXJT
b3VyY2UuYnVmZmVyID0gc291cmNlQnVmZmVyOwotCi0gICAgdmFyIGpzbm9kZSA9IGNvbnRleHQu
Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUsIGlucHV0Q2hhbm5lbHMsIG91dHB1dENo
YW5uZWxzKTsKLQotICAgIGJ1ZmZlclNvdXJjZS5jb25uZWN0KGpzbm9kZSk7Ci0gICAganNub2Rl
LmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7Ci0gICAganNub2RlLm9uYXVkaW9wcm9jZXNz
ID0gcHJvY2Vzc0F1ZGlvRGF0YTsKLQotICAgIGJ1ZmZlclNvdXJjZS5zdGFydCgwKTsKLSAgICBj
b250ZXh0Lm9uY29tcGxldGUgPSBmaW5pc2hKU1Rlc3Q7Ci0gICAgY29udGV4dC5zdGFydFJlbmRl
cmluZygpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL25v
dGUtZ3JhaW4tb24tdGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9u
b3RlLWdyYWluLW9uLXRlc3RpbmcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUx
ZDE0NDMxOWM0ZDEzZjNhY2ZiOGI1MDc2ZWU2YjI2NjE5NDE0MDIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3Vy
Y2VzL25vdGUtZ3JhaW4tb24tdGVzdGluZy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCww
IEBACi12YXIgc2FtcGxlUmF0ZSA9IDQ0MTAwLjA7Ci0KLS8vIEhvdyBtYW55IGdyYWlucyB0byBw
bGF5LgotdmFyIG51bWJlck9mVGVzdHMgPSAxMDA7Ci0KLS8vIER1cmF0aW9uIG9mIGVhY2ggZ3Jh
aW4gdG8gYmUgcGxheWVkCi12YXIgZHVyYXRpb24gPSAwLjAxOwotCi0vLyBUaW1lIHN0ZXAgYmV0
d2VlbiB0aGUgc3RhcnQgb2YgZWFjaCBncmFpbi4KLXZhciB0aW1lU3RlcCA9IGR1cmF0aW9uICsg
LjAwNTsKLQotLy8gVGltZSBzdGVwIGJldHdlZW4gdGhlIHN0YXJ0IGZvciBlYWNoIGdyYWluLgot
dmFyIGdyYWluT2Zmc2V0U3RlcCA9IDAuMDAxOwotCi0vLyBIb3cgbG9uZyB0byByZW5kZXIgdG8g
Y292ZXIgYWxsIG9mIHRoZSBncmFpbnMuCi12YXIgcmVuZGVyVGltZSA9IChudW1iZXJPZlRlc3Rz
ICsgMSkgKiB0aW1lU3RlcDsKLQotdmFyIGNvbnRleHQ7Ci12YXIgcmVuZGVyZWREYXRhOwotCi0v
LyBDcmVhdGUgYSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0aGF0IHdlIHdhbnQuICBUaGUg
ZnVuY3Rpb24gZgotLy8gcmV0dXJucyB0aGUgZGVzaXJlZCB2YWx1ZSBhdCBzYW1wbGUgZnJhbWUg
ay4KLWZ1bmN0aW9uIGNyZWF0ZVNpZ25hbEJ1ZmZlcihjb250ZXh0LCBmKSB7Ci0KLSAgICAvLyBN
YWtlIHN1cmUgdGhlIGJ1ZmZlciBoYXMgZW5vdWdoIGRhdGEgZm9yIGFsbCBvZiB0aGUgcG9zc2li
bGUKLSAgICAvLyBncmFpbiBvZmZzZXRzIGFuZCBkdXJhdGlvbnMuICBOZWVkIHRvIGluY2x1ZGUg
dGhlIGV4dHJhIGZyYW1lcwotICAgIC8vIGZvciBIUlRGLiAgVGhlIGFkZGl0aW9uYWwgMSBpcyBm
b3IgYW55IHJvdW5kLW9mZiBlcnJvcnMuCi0gICAgdmFyIHNpZ25hbExlbmd0aCA9IE1hdGguZmxv
b3IoMSArIHNhbXBsZVJhdGUgKiAobnVtYmVyT2ZUZXN0cyAqIGdyYWluT2Zmc2V0U3RlcCArIGR1
cmF0aW9uKSk7Ci0KLSAgICB2YXIgYnVmZmVyID0gY29udGV4dC5jcmVhdGVCdWZmZXIoMiwgc2ln
bmFsTGVuZ3RoLCBzYW1wbGVSYXRlKTsKLSAgICB2YXIgZGF0YSA9IGJ1ZmZlci5nZXRDaGFubmVs
RGF0YSgwKTsKLQotICAgIGZvciAodmFyIGsgPSAwOyBrIDwgc2lnbmFsTGVuZ3RoOyArK2spIHsK
LSAgICAgICAgZGF0YVtrXSA9IGYoayk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0K
LQotLy8gRnJvbSB0aGUgZGF0YSBhcnJheSwgZmluZCB0aGUgc3RhcnQgYW5kIGVuZCBzYW1wbGUg
ZnJhbWUgZm9yIGVhY2gKLS8vIGdyYWluLiAgVGhpcyBkZXBlbmRzIG9uIHRoZSBkYXRhIGhhdmlu
ZyAwJ3MgYmV0d2VlbiBncmFpbiwgYW5kCi0vLyB0aGF0IHRoZSBncmFpbiBpcyBhbHdheXMgc3Ry
aWN0bHkgbm9uLXplcm8uCi1mdW5jdGlvbiBmaW5kU3RhcnRBbmRFbmRTYW1wbGVzKGRhdGEpIHsK
LSAgICB2YXIgblNhbXBsZXMgPSBkYXRhLmxlbmd0aDsKLQotICAgIHZhciBzdGFydFRpbWUgPSBb
XTsKLSAgICB2YXIgZW5kVGltZSA9IFtdOwotICAgIHZhciBsb29rRm9yU3RhcnQgPSB0cnVlOwot
ICAgICAgCi0gICAgLy8gTG9vayB0aHJvdWdoIHRoZSByZW5kZXJlZCBkYXRhIHRvIGZpbmQgdGhl
IHN0YXJ0IGFuZCBzdG9wCi0gICAgLy8gdGltZXMgb2YgZWFjaCBncmFpbi4KLSAgICBmb3IgKHZh
ciBrID0gMDsgayA8IG5TYW1wbGVzOyArK2spIHsKLSAgICAgICAgaWYgKGxvb2tGb3JTdGFydCkg
ewotICAgICAgICAgICAgLy8gRmluZCBhIG5vbi16ZXJvIHBvaW50IGFuZCByZWNvcmQgdGhlIHN0
YXJ0LiAgV2UncmUgbm90Ci0gICAgICAgICAgICAvLyBjb25jZXJuZWQgd2l0aCB0aGUgdmFsdWUg
aW4gdGhpcyB0ZXN0LCBvbmx5IHRoYXQgdGhlCi0gICAgICAgICAgICAvLyBncmFpbiBzdGFydGVk
IGhlcmUuCi0gICAgICAgICAgICBpZiAocmVuZGVyZWREYXRhW2tdKSB7Ci0gICAgICAgICAgICAg
ICAgc3RhcnRUaW1lLnB1c2goayk7Ci0gICAgICAgICAgICAgICAgbG9va0ZvclN0YXJ0ID0gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGaW5k
IGEgemVybyBhbmQgcmVjb3JkIHRoZSBlbmQgb2YgdGhlIGdyYWluLgotICAgICAgICAgICAgaWYg
KCFyZW5kZXJlZERhdGFba10pIHsKLSAgICAgICAgICAgICAgICBlbmRUaW1lLnB1c2goayk7Ci0g
ICAgICAgICAgICAgICAgbG9va0ZvclN0YXJ0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiB7c3RhcnQgOiBzdGFydFRpbWUsIGVuZCA6IGVuZFRp
bWV9OwotfQotCi1mdW5jdGlvbiBwbGF5R3JhaW4oY29udGV4dCwgc291cmNlLCB0aW1lLCBvZmZz
ZXQsIGR1cmF0aW9uKSB7Ci0gICAgdmFyIGJ1ZmZlclNvdXJjZSA9IGNvbnRleHQuY3JlYXRlQnVm
ZmVyU291cmNlKCk7Ci0KLSAgICBidWZmZXJTb3VyY2UuYnVmZmVyID0gc291cmNlOwotICAgIGJ1
ZmZlclNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOwotICAgIGJ1ZmZlclNvdXJj
ZS5zdGFydCh0aW1lLCBvZmZzZXQsIGR1cmF0aW9uKTsKLX0KLQotLy8gUGxheSBvdXQgYWxsIGdy
YWlucy4gIFJldHVybnMgYSBvYmplY3QgY29udGFpbmluZyB0d28gYXJyYXlzLCBvbmUKLS8vIGZv
ciB0aGUgc3RhcnQgdGltZSBhbmQgb25lIGZvciB0aGUgZ3JhaW4gb2Zmc2V0IHRpbWUuCi1mdW5j
dGlvbiBwbGF5QWxsR3JhaW5zKGNvbnRleHQsIHNvdXJjZSwgbnVtYmVyT2ZOb3RlcykgewotICAg
IHZhciBzdGFydFRpbWVzID0gbmV3IEFycmF5KG51bWJlck9mTm90ZXMpOwotICAgIHZhciBvZmZz
ZXRzID0gbmV3IEFycmF5KG51bWJlck9mTm90ZXMpOwotCi0gICAgZm9yICh2YXIgayA9IDA7IGsg
PCBudW1iZXJPZk5vdGVzOyArK2spIHsKLSAgICAgICAgdmFyIHRpbWVPZmZzZXQgPSBrICogdGlt
ZVN0ZXA7Ci0gICAgICAgIHZhciBncmFpbk9mZnNldCA9IGsgKiBncmFpbk9mZnNldFN0ZXA7Ci0K
LSAgICAgICAgcGxheUdyYWluKGNvbnRleHQsIHNvdXJjZSwgdGltZU9mZnNldCwgZ3JhaW5PZmZz
ZXQsIGR1cmF0aW9uKTsKLSAgICAgICAgc3RhcnRUaW1lc1trXSA9IHRpbWVPZmZzZXQ7Ci0gICAg
ICAgIG9mZnNldHNba10gPSBncmFpbk9mZnNldDsKLSAgICB9Ci0KLSAgICByZXR1cm4geyBzdGFy
dFRpbWVzIDogc3RhcnRUaW1lcywgZ3JhaW5PZmZzZXRUaW1lcyA6IG9mZnNldHMgfTsKLX0KLQot
Ly8gVmVyaWZ5IHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgZnJhbWVzIGZvciBlYWNoIGdyYWluIG1h
dGNoIG91cgotLy8gZXhwZWN0ZWQgc3RhcnQgYW5kIGVuZCBmcmFtZXMuCi1mdW5jdGlvbiB2ZXJp
ZnlTdGFydEFuZEVuZEZyYW1lcyhzdGFydEVuZEZyYW1lcykgewotICAgIHZhciBzdGFydEZyYW1l
cyA9IHN0YXJ0RW5kRnJhbWVzLnN0YXJ0OwotICAgIHZhciBlbmRGcmFtZXMgPSBzdGFydEVuZEZy
YW1lcy5lbmQ7Ci0gICAgICAKLSAgICB2YXIgc3VjY2VzcyA9IHRydWU7Ci0KLSAgICAvLyBDb3Vu
dCBvZiBob3cgbWFueSBncmFpbnMgc3RhcnRlZCBhdCB0aGUgaW5jb3JyZWN0IHRpbWUuCi0gICAg
dmFyIGVycm9yQ291bnRTdGFydCA9IDA7Ci0KLSAgICAvLyBDb3VudCBvZiBob3cgbWFueSBncmFp
bnMgZW5kZWQgYXQgdGhlIGluY29ycmVjdCB0aW1lLgotICAgIHZhciBlcnJvckNvdW50RW5kID0g
MDsKLQotICAgIGlmIChzdGFydEZyYW1lcy5sZW5ndGggIT0gZW5kRnJhbWVzLmxlbmd0aCkgewot
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgZmluZCB0aGUgYmVnaW5uaW5nIG9yIGVuZCBv
ZiBhIGdyYWluLiIpOwotICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYg
KHN0YXJ0RnJhbWVzLmxlbmd0aCA9PSBudW1iZXJPZlRlc3RzICYmIGVuZEZyYW1lcy5sZW5ndGgg
PT0gbnVtYmVyT2ZUZXN0cykgewotICAgICAgICB0ZXN0UGFzc2VkKCJGb3VuZCBhbGwgIiArIG51
bWJlck9mVGVzdHMgKyAiIGdyYWlucy4iKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFp
bGVkKCJEaWQgbm90IGZpbmQgYWxsICIgKyBudW1iZXJPZlRlc3RzICsgIiBncmFpbnMuIik7Ci0g
ICAgfQotCi0gICAgLy8gRXhhbWluZSB0aGUgc3RhcnQgYW5kIHN0b3AgdGltZXMgdG8gc2VlIGlm
IHRoZXkgbWF0Y2ggb3VyCi0gICAgLy8gZXhwZWN0YXRpb25zLgotICAgIGZvciAodmFyIGsgPSAw
OyBrIDwgc3RhcnRGcmFtZXMubGVuZ3RoOyArK2spIHsKLSAgICAgICAgdmFyIGV4cGVjdGVkU3Rh
cnQgPSB0aW1lVG9TYW1wbGVGcmFtZShrICogdGltZVN0ZXAsIHNhbXBsZVJhdGUpOwotICAgICAg
ICAvLyBUaGUgZW5kIHBvaW50IGlzIHRoZSBkdXJhdGlvbiwgcGx1cyB0aGUgZXh0cmEgZnJhbWVz
Ci0gICAgICAgIC8vIGZvciBIUlRGLgotICAgICAgICB2YXIgZXhwZWN0ZWRFbmQgPSBleHBlY3Rl
ZFN0YXJ0ICsgZ3JhaW5MZW5ndGhJblNhbXBsZUZyYW1lcyhrICogZ3JhaW5PZmZzZXRTdGVwLCBk
dXJhdGlvbiwgc2FtcGxlUmF0ZSk7Ci0KLSAgICAgICAgaWYgKHN0YXJ0RnJhbWVzW2tdICE9IGV4
cGVjdGVkU3RhcnQpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIlB1bHNlICIgKyBrICsgIiBz
dGFydGVkIGF0ICIgKyBzdGFydEZyYW1lc1trXSArICIgYnV0IGV4cGVjdGVkIGF0ICIgKyBleHBl
Y3RlZFN0YXJ0KTsKLSAgICAgICAgICAgICsrZXJyb3JDb3VudFN0YXJ0OwotICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVuZEZyYW1lc1trXSAh
PSBleHBlY3RlZEVuZCkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiUHVsc2UgIiArIGsgKyAi
IGVuZGVkIGF0ICIgKyBlbmRGcmFtZXNba10gKyAiIGJ1dCBleHBlY3RlZCBhdCAiICsgZXhwZWN0
ZWRFbmQpOwotICAgICAgICAgICAgKytlcnJvckNvdW50RW5kOwotICAgICAgICAgICAgc3VjY2Vz
cyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgdGhhdCBhbGwgdGhl
IGdyYWlucyBzdGFydGVkIG9yIGVuZGVkIGF0IHRoZSBjb3JyZWN0IHRpbWUuCi0gICAgaWYgKCFl
cnJvckNvdW50U3RhcnQpIHsKLSAgICAgICAgaWYgKHN0YXJ0RnJhbWVzLmxlbmd0aCA9PSBudW1i
ZXJPZlRlc3RzKSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgIiArIG51bWJlck9mVGVz
dHMgKyAiIGdyYWlucyBzdGFydGVkIGF0IHRoZSBjb3JyZWN0IHRpbWUuIik7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJBbGwgZ3JhaW5zIHN0YXJ0ZWQgYXQgdGhl
IGNvcnJlY3QgdGltZSwgYnV0IG9ubHkgIiArIHN0YXJ0RnJhbWVzLmxlbmd0aCArICIgZ3JhaW5z
IGZvdW5kLiIpOwotICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZChlcnJvckNvdW50U3RhcnQgKyAiIG91dCBvZiAi
ICsgbnVtYmVyT2ZUZXN0cyArICIgZ3JhaW5zIHN0YXJ0ZWQgYXQgdGhlIHdyb25nIHRpbWUuIik7
Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWVycm9yQ291bnRF
bmQpIHsKLSAgICAgICAgaWYgKGVuZEZyYW1lcy5sZW5ndGggPT0gbnVtYmVyT2ZUZXN0cykgewot
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsICIgKyBudW1iZXJPZlRlc3RzICsgIiBncmFpbnMg
ZW5kZWQgYXQgdGhlIGNvcnJlY3QgdGltZS4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkFsbCBncmFpbnMgZW5kZWQgYXQgdGhlIGNvcnJlY3QgdGltZSwgYnV0
IG9ubHkgIiArIGVuZEZyYW1lcy5sZW5ndGggKyAiIGdyYWlucyBmb3VuZC4iKTsKLSAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRl
c3RGYWlsZWQoZXJyb3JDb3VudEVuZCArICIgb3V0IG9mICIgKyBudW1iZXJPZlRlc3RzICsgIiBn
cmFpbnMgZW5kZWQgYXQgdGhlIHdyb25nIHRpbWUuIik7Ci0gICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9zY3JpcHRwcm9jZXNzb3Jub2RlLXRlc3RpbmcuanMgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvc2NyaXB0cHJvY2Vzc29ybm9kZS10ZXN0aW5n
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWYzNjVhN2FmNDIyMTE5ZWFlMjY4
YWI3NzcxZGQ3ZjA2Mjg5YzNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9zY3JpcHRwcm9jZXNzb3Ju
b2RlLXRlc3RpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyBGb3IgdGhl
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgSmF2YVNjcmlwdEF1ZGlvTm9kZSwgd2hlbiBpdCB3
b3JrcyB3aXRoCi0vLyBPZmZsaW5lQXVkaW9Db250ZXh0ICh3aGljaCBydW5zIG11Y2ggZmFzdGVy
IHRoYW4gcmVhbC10aW1lKSB0aGUKLS8vIGV2ZW50LmlucHV0QnVmZmVyIG1pZ2h0IGJlIG92ZXJ3
cml0ZSBhZ2FpbiBiZWZvcmUgb25hdWRpb3Byb2Nlc3MgZXZlciBnZXQKLS8vIGNoYW5jZSB0byBi
ZSBjYWxsZWQuIFdlIGNhcmVmdWxseSBhcnJhbmdlIHRoZSByZW5kZXJMZW5ndGhJbkZyYW1lcyBh
bmQKLS8vIGJ1ZmZlclNpemUgdG8gaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHZhbHVlIHRvIGF2b2lk
IHRoaXMgaXNzdWUuCi1sZXQgcmVuZGVyTGVuZ3RoSW5GcmFtZXMgPSA1MTI7Ci1sZXQgYnVmZmVy
U2l6ZSA9IDUxMjsKLQotbGV0IGNvbnRleHQ7Ci0KLWZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcihjb250
ZXh0LCBudW1iZXJPZkNoYW5uZWxzLCBsZW5ndGgpIHsKLSAgbGV0IGF1ZGlvQnVmZmVyID0gY29u
dGV4dC5jcmVhdGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgbGVuZ3RoLCBzYW1wbGVSYXRlKTsK
LQotICBmaWxsRGF0YShhdWRpb0J1ZmZlciwgbnVtYmVyT2ZDaGFubmVscywgYXVkaW9CdWZmZXIu
bGVuZ3RoKTsKLSAgcmV0dXJuIGF1ZGlvQnVmZmVyOwotfQotCi1mdW5jdGlvbiBwcm9jZXNzQXVk
aW9EYXRhKGV2ZW50KSB7Ci0gIGJ1ZmZlciA9IGV2ZW50Lm91dHB1dEJ1ZmZlcjsKLSAgaWYgKGJ1
ZmZlci5udW1iZXJPZkNoYW5uZWxzICE9IG91dHB1dENoYW5uZWxzKQotICAgIHRlc3RGYWlsZWQo
J251bWJlck9mT3V0cHV0Q2hhbm5lbHMgZG9lc25cJ3QgbWF0Y2ghJyk7Ci0KLSAgaWYgKGJ1ZmZl
ci5sZW5ndGggIT0gYnVmZmVyU2l6ZSkKLSAgICB0ZXN0RmFpbGVkKCdsZW5ndGggb2YgYnVmZmVy
IGRvZXNuXCd0IG1hdGNoIScpOwotCi0gIGJ1ZmZlciA9IGV2ZW50LmlucHV0QnVmZmVyOwotCi0g
IGxldCBzdWNjZXNzID0gY2hlY2tTdGVyZW9Pbmx5RGF0YShidWZmZXIsIGlucHV0Q2hhbm5lbHMs
IGJ1ZmZlci5sZW5ndGgpOwotCi0gIGlmIChzdWNjZXNzKSB7Ci0gICAgdGVzdFBhc3NlZCgnb25h
dWRpb3Byb2Nlc3Mgd2FzIGNhbGxlZCB3aXRoIGNvcnJlY3QgaW5wdXQgZGF0YS4nKTsKLSAgfSBl
bHNlIHsKLSAgICB0ZXN0RmFpbGVkKCdvbmF1ZGlvcHJvY2VzcyB3YXMgY2FsbGVkIHdpdGggd3Jv
bmcgaW5wdXQgZGF0YS4nKTsKLSAgfQotfQotCi1mdW5jdGlvbiBmaWxsRGF0YShidWZmZXIsIG51
bWJlck9mQ2hhbm5lbHMsIGxlbmd0aCkgewotICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlck9m
Q2hhbm5lbHM7ICsraSkgewotICAgIGxldCBkYXRhID0gYnVmZmVyLmdldENoYW5uZWxEYXRhKGkp
OwotCi0gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsZW5ndGg7ICsraikKLSAgICAgIGlmIChpIDwg
MikKLSAgICAgICAgZGF0YVtqXSA9IGkgKiAyIC0gMTsKLSAgICAgIGVsc2UKLSAgICAgICAgZGF0
YVtqXSA9IDA7Ci0gIH0KLX0KLQotLy8gQm90aCAyIHRvIDggdXBtaXggYW5kIDggdG8gMiBkb3du
bWl4IGFyZSBqdXN0IGRpcmVjdGx5IGNvcHkgdGhlIGZpcnN0IHR3bwotLy8gY2hhbm5lbHMgYW5k
IGxlZnQgY2hhbm5lbHMgYXJlIHplcm9lZC4KLWZ1bmN0aW9uIGNoZWNrU3RlcmVvT25seURhdGEo
YnVmZmVyLCBudW1iZXJPZkNoYW5uZWxzLCBsZW5ndGgpIHsKLSAgZm9yIChsZXQgaSA9IDA7IGkg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICBsZXQgZGF0YSA9IGJ1ZmZlci5nZXRDaGFu
bmVsRGF0YShpKTsKLQotICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyArK2opIHsKLSAg
ICAgIGlmIChpIDwgMikgewotICAgICAgICBpZiAoZGF0YVtqXSAhPSBpICogMiAtIDEpCi0gICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGRhdGFbal0g
IT0gMCkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJl
dHVybiB0cnVlOwotfQotCi1mdW5jdGlvbiBydW5KU05vZGVUZXN0KCkgewotICAvLyBDcmVhdGUg
b2ZmbGluZSBhdWRpbyBjb250ZXh0LgotICBjb250ZXh0ID0gbmV3IE9mZmxpbmVBdWRpb0NvbnRl
eHQoMiwgcmVuZGVyTGVuZ3RoSW5GcmFtZXMsIHNhbXBsZVJhdGUpOwotCi0gIGxldCBzb3VyY2VC
dWZmZXIgPQotICAgICAgY3JlYXRlQnVmZmVyKGNvbnRleHQsIHNvdXJjZUNoYW5uZWxzLCByZW5k
ZXJMZW5ndGhJbkZyYW1lcyk7Ci0KLSAgbGV0IGJ1ZmZlclNvdXJjZSA9IGNvbnRleHQuY3JlYXRl
QnVmZmVyU291cmNlKCk7Ci0gIGJ1ZmZlclNvdXJjZS5idWZmZXIgPSBzb3VyY2VCdWZmZXI7Ci0K
LSAgbGV0IHNjcmlwdE5vZGUgPQotICAgICAgY29udGV4dC5jcmVhdGVTY3JpcHRQcm9jZXNzb3Io
YnVmZmVyU2l6ZSwgaW5wdXRDaGFubmVscywgb3V0cHV0Q2hhbm5lbHMpOwotCi0gIGJ1ZmZlclNv
dXJjZS5jb25uZWN0KHNjcmlwdE5vZGUpOwotICBzY3JpcHROb2RlLmNvbm5lY3QoY29udGV4dC5k
ZXN0aW5hdGlvbik7Ci0gIHNjcmlwdE5vZGUub25hdWRpb3Byb2Nlc3MgPSBwcm9jZXNzQXVkaW9E
YXRhOwotCi0gIGJ1ZmZlclNvdXJjZS5zdGFydCgwKTsKLSAgY29udGV4dC5vbmNvbXBsZXRlID0g
ZmluaXNoSlNUZXN0OwotICBjb250ZXh0LnN0YXJ0UmVuZGVyaW5nKCk7Ci19Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>