<?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>77074</bug_id>
          
          <creation_ts>2012-01-26 00:41:54 -0800</creation_ts>
          <short_desc>runner.js in performance tests should define a class</short_desc>
          <delta_ts>2012-01-31 13:09:30 -0800</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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
    
    <blocked>77401</blocked>
    
    <blocked>77469</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>arv</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542924</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-26 00:41:54 -0800</bug_when>
    <thetext>Right now, runner.js defines a bunch of global functions in the global (window) scope. We should be defining a class instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542931</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-26 00:50:27 -0800</bug_when>
    <thetext>Yeah, definitely.  Go to town!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545831</commentid>
    <comment_count>2</comment_count>
      <attachid>124677</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-31 00:24:27 -0800</bug_when>
    <thetext>Created attachment 124677
Wrap functions in PerfTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545860</commentid>
    <comment_count>3</comment_count>
      <attachid>124677</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-31 01:55:50 -0800</bug_when>
    <thetext>Comment on attachment 124677
Wrap functions in PerfTestRunner

My mindz!  They are the blownz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545894</commentid>
    <comment_count>4</comment_count>
      <attachid>124677</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 02:59:02 -0800</bug_when>
    <thetext>Comment on attachment 124677
Wrap functions in PerfTestRunner

Rejecting attachment 124677 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ching file PerformanceTests/Parser/tiny-innerHTML.html
patching file PerformanceTests/Parser/url-parser.html
patching file PerformanceTests/Parser/xml-parser.html
patching file PerformanceTests/resources/runner.js
Hunk #1 FAILED at 1.
Hunk #2 succeeded at 99 (offset 11 lines).
1 out of 2 hunks FAILED -- saving rejects to file PerformanceTests/resources/runner.js.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/11365944</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546217</commentid>
    <comment_count>5</comment_count>
      <attachid>124677</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-31 10:39:15 -0800</bug_when>
    <thetext>Comment on attachment 124677
Wrap functions in PerfTestRunner

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

Some random nits as I was looking through the code...

&gt; PerformanceTests/resources/runner.js:2
&gt; +var PerfTestRunner = { };

Nit: typical JS style is to not put a space between the curly braces here.

&gt; PerformanceTests/resources/runner.js:91
&gt; +    var start = new Date();

Nit: here and below I&apos;d use Date.now(). Constructing a Date object is surprisingly expensive. Date.now() avoids the constructor and just gives the the current time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546340</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-31 12:04:58 -0800</bug_when>
    <thetext>Thanks for the review, Eric and thanks for the suggestions, Ojan. Landing it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546341</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-31 12:05:42 -0800</bug_when>
    <thetext>Committed r106379: &lt;http://trac.webkit.org/changeset/106379&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124677</attachid>
            <date>2012-01-31 00:24:27 -0800</date>
            <delta_ts>2012-01-31 10:39:15 -0800</delta_ts>
            <desc>Wrap functions in PerfTestRunner</desc>
            <filename>bug-77074-20120131002426.patch</filename>
            <type>text/plain</type>
            <size>24325</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYzNDEpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAxLTMxICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHJ1bm5lci5qcyBpbiBw
ZXJmb3JtYW5jZSB0ZXN0cyBzaG91bGQgZGVmaW5lIGEgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDc0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV3JhcCBhbGwgZnVuY3Rpb25zIGluIHJ1bm5l
ci5qcyBieSBQZXJmVGVzdFJ1bm5lciBhbmQgdXBkYXRlIHRlc3RzIHRoYXQgcnVubmVyLmpzIGFj
Y29yZGluZ2x5LgorICAgICAgICBBbHNvIHJlcGxhY2UgY29tcHV0ZSogZnVuY3Rpb25zIGluIHJ1
bm5lci5qcyBieSBtb3JlIHJvYnVzdCBjb2RlIGZyb20gZG9tLXBlcmYuanMuCisKKyAgICAgICAg
KiBCaW5kaW5ncy9ldmVudC10YXJnZXQtd3JhcHBlci5odG1sOgorICAgICAgICAqIERPTS9ET01U
YWJsZS5odG1sOgorICAgICAgICAqIERPTS9yZXNvdXJjZXMvZG9tLXBlcmYuanM6CisgICAgICAg
IChCZW5jaG1hcmtTdWl0ZS5wcm90b3R5cGUuUnVuU2luZ2xlKToKKyAgICAgICAgKHJ1bkJlbmNo
bWFya1N1aXRlKToKKyAgICAgICAgKiBNdXRhdGlvbi9hcHBlbmQtY2hpbGQtZGVlcC5odG1sOgor
ICAgICAgICAqIE11dGF0aW9uL2FwcGVuZC1jaGlsZC5odG1sOgorICAgICAgICAqIE11dGF0aW9u
L2lubmVyLWh0bWwuaHRtbDoKKyAgICAgICAgKiBNdXRhdGlvbi9yZW1vdmUtY2hpbGQtZGVlcC5o
dG1sOgorICAgICAgICAqIE11dGF0aW9uL3JlbW92ZS1jaGlsZC5odG1sOgorICAgICAgICAqIFBh
cnNlci9odG1sLXBhcnNlci5odG1sOgorICAgICAgICAqIFBhcnNlci9odG1sNS1mdWxsLXJlbmRl
ci5odG1sOgorICAgICAgICAqIFBhcnNlci9zaW1wbGUtdXJsLmh0bWw6CisgICAgICAgICogUGFy
c2VyL3RpbnktaW5uZXJIVE1MLmh0bWw6CisgICAgICAgICogUGFyc2VyL3VybC1wYXJzZXIuaHRt
bDoKKyAgICAgICAgKiBQYXJzZXIveG1sLXBhcnNlci5odG1sOgorICAgICAgICAqIHJlc291cmNl
cy9ydW5uZXIuanM6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5sb2cpOgorICAgICAgICAoUGVy
ZlRlc3RSdW5uZXIubG9nSW5mbyk6CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5sb2FkRmlsZSk6
CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcyk6CisgICAgICAgIChQ
ZXJmVGVzdFJ1bm5lci5sb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKFBlcmZUZXN0UnVubmVyLl9y
dW5Mb29wLmVsc2UpOgorICAgICAgICAoUGVyZlRlc3RSdW5uZXIuX3J1bkxvb3ApOgorICAgICAg
ICAoUGVyZlRlc3RSdW5uZXIuX3J1bm5lcik6CisKIDIwMTItMDEtMzAgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2tpcCBpbnNwZWN0b3IgdGVzdHMgc2luY2Ug
dGhleSBoYXZlIGJlZW4gdGltaW5nIG91dC4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQmluZGlu
Z3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL0JpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVyLmh0bWwJKHJldmlzaW9uIDEwNjMzMykK
KysrIFBlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTMsMTIgKzEzLDEyIEBAIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCBmdW5jdGlvbigKICAgICB3aW5kb3cuZXZ0ID0gZXZlbnQ7CiAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKIAotICAgIHN0YXJ0KDIwLCBmdW5jdGlvbigpIHsKKyAgICBQZXJmVGVz
dFJ1bm5lci5ydW4oZnVuY3Rpb24gKCkgewogICAgICAgICB2YXIgZSA9IHdpbmRvdy5ldnQ7CiAg
ICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwga0l0ZXJhdG9uc1BlclRlc3Q7IHgrKykgewogICAg
ICAgICAgICAgZS50YXJnZXQ7CiAgICAgICAgIH0KLSAgICB9LCAxMCk7CisgICAgfSk7CiAKICAg
ICByZXR1cm4gZmFsc2U7CiB9LCBmYWxzZSk7CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0RPTS9E
T01UYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvRE9NL0RPTVRhYmxl
Lmh0bWwJKHJldmlzaW9uIDEwNjMzMykKKysrIFBlcmZvcm1hbmNlVGVzdHMvRE9NL0RPTVRhYmxl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw5IEBACiA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy9kb20tcGVyZi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvZG9t
LXBlcmYvZG9tdGFibGUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4gcnVuQmVuY2htYXJrU3VpdGUo
RE9NVGFibGVUZXN0KTsgPC9zY3JpcHQ+Cis8c2NyaXB0PgorcnVuQmVuY2htYXJrU3VpdGUoRE9N
VGFibGVUZXN0LCAxMCk7CisvLyBydW5Db3VudCA9IDEwIHNpbmNlIHRoaXMgdGVzdCBpcyB2ZXJ5
IHNsb3cgKH4xMm0gcGVyIHJ1biBvbiBDb3JlIGk1IDIuNTNIeiBNYWNCb29rUHJvKQorPC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0RPTS9yZXNvdXJj
ZXMvZG9tLXBlcmYuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9ET00vcmVzb3Vy
Y2VzL2RvbS1wZXJmLmpzCShyZXZpc2lvbiAxMDYzMzMpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0RP
TS9yZXNvdXJjZXMvZG9tLXBlcmYuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw1OCArMjEwLDE2
IEBAIGZ1bmN0aW9uIEJlbmNobWFya1Jlc3VsdChiZW5jaG1hcmssIHRpbWUKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoIWVycm9yKSB7Ci0gICAgICAgIHZhciBkYXRhID0gdGltZXMuc2xpY2Uo
KTsKLSAgICAgICAgdmFyIGNvdW50ID0gZGF0YS5sZW5ndGg7Ci0KLSAgICAgICAgLy8gU29ydCB0
aGUgZGF0YSBzbyB0aGF0IGFsbCBzZWVtaW5nbHkKLSAgICAgICAgLy8gaW5zaWduaWZpY2FudCB2
YWx1ZXMgc3VjaCBhcyAwLjAwMDAwMDAwMyB3aWxsCi0gICAgICAgIC8vIGJlIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGFycmF5IGFuZCB0aGVpcgotICAgICAgICAvLyBjb250cmlidXRpb24gdG8g
dGhlIG1lYW4gYW5kIHZhcmlhbmNlIG9mIHRoZQotICAgICAgICAvLyBkYXRhIHdpbGwgbm90IGJl
IGxvc3QgYmVjYXVzZSBvZiB0aGUgcHJlY2lzaW9uCi0gICAgICAgIC8vIG9mIHRoZSBDUFUuCi0g
ICAgICAgIGRhdGEuc29ydChCZW5jaG1hcmtTdWl0ZS5NYXRoLmFzY2VuZCk7Ci0KLSAgICAgICAg
Ly8gU2luY2UgdGhlIGRhdGEgaXMgbm93IHNvcnRlZCwgdGhlIG1pbmltdW0gdmFsdWUKLSAgICAg
ICAgLy8gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXksIHRoZSBtZWRpYW4KLSAgICAg
ICAgLy8gdmFsdWUgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYXJyYXksIGFuZCB0aGUKLSAgICAg
ICAgLy8gbWF4aW11bSB2YWx1ZSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheS4KLSAgICAgICAg
dGhpcy5taW4gPSBkYXRhWzBdOwotICAgICAgICB2YXIgbWlkZGxlID0gTWF0aC5mbG9vcihkYXRh
Lmxlbmd0aCAvIDIpOwotICAgICAgICBpZiAoKGRhdGEubGVuZ3RoICUgMikgIT09IDApCi0gICAg
ICAgICAgICB0aGlzLm1lZGlhbiA9IGRhdGFbbWlkZGxlXTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGhpcy5tZWRpYW4gPSAoZGF0YVttaWRkbGUgLSAxXSArIGRhdGFbbWlkZGxlXSkgLyAy
OwotICAgICAgICB0aGlzLm1heCA9IGRhdGFbZGF0YS5sZW5ndGggLSAxXTsKLQotICAgICAgICAv
LyBDb21wdXRlIHRoZSBtZWFuIGFuZCB2YXJpYW5jZSB1c2luZyBhCi0gICAgICAgIC8vIG51bWVy
aWNhbGx5IHN0YWJsZSBhbGdvcml0aG0uCi0gICAgICAgIHZhciBzcXN1bSA9IDA7Ci0gICAgICAg
IHRoaXMubWVhbiA9IGRhdGFbMF07Ci0gICAgICAgIHZhciBuWmVyb3MgPSAwOwotICAgICAgICBm
b3IgKHZhciBpID0gMTsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciB4
ID0gZGF0YVtpXTsKLSAgICAgICAgICAgIHZhciBkZWx0YSA9IHggLSB0aGlzLm1lYW47Ci0gICAg
ICAgICAgICB2YXIgc3dlZXAgPSBpICsgMS4wOwotICAgICAgICAgICAgdGhpcy5tZWFuICs9IGRl
bHRhIC8gc3dlZXA7Ci0gICAgICAgICAgICBzcXN1bSArPSBkZWx0YSAqIGRlbHRhICogKGkgLyBz
d2VlcCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5zdW0gPSB0aGlzLm1lYW4gKiBjb3VudDsK
LSAgICAgICAgdGhpcy52YXJpYW5jZSA9IHNxc3VtIC8gY291bnQ7Ci0KLSAgICAgICAgdGhpcy5z
ZGV2ID0gTWF0aC5zcXJ0KHRoaXMudmFyaWFuY2UpOwotICAgICAgICB0aGlzLnNjb3JlID0gMTAw
MCAvIHRoaXMubWVhbjsKKyAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSBQZXJmVGVzdFJ1bm5lci5j
b21wdXRlU3RhdGlzdGljcyh0aW1lcyk7CisgICAgICAgIHRoaXMubWluID0gc3RhdGlzdGljcy5t
aW47CisgICAgICAgIHRoaXMubWF4ID0gc3RhdGlzdGljcy5tYXg7CisgICAgICAgIHRoaXMubWVk
aWFuID0gc3RhdGlzdGljcy5tZWRpYW47CisgICAgICAgIHRoaXMubWVhbiA9IHN0YXRpc3RpY3Mu
bWVhbjsKKyAgICAgICAgdGhpcy5zdW0gPSBzdGF0aXN0aWNzLnN1bTsKKyAgICAgICAgdGhpcy52
YXJpYW5jZSA9IHN0YXRpc3RpY3MudmFyaWFuY2U7CisgICAgICAgIHRoaXMuc3RkZXYgPSBzdGF0
aXN0aWNzLnN0ZGV2OwogICAgIH0KIAotICAgIHRoaXMudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIHMgPQotICAgICAgICAgICIgbWluOiAiICsgdGhpcy5taW4gKyAKLSAgICAg
ICAgICAiIG1heDogIiArIHRoaXMubWF4ICsgCi0gICAgICAgICAgIiBtZWFuOiAiICsgdGhpcy5t
ZWFuICsgCi0gICAgICAgICAgIiBtZWRpYW46ICIgKyB0aGlzLm1lZGlhbiArIAotICAgICAgICAg
ICIgc2RldjogIiArIHRoaXMuc2RldjsKLSAgICAgICAgcmV0dXJuIHM7Ci0gICAgfTsKLQogICAg
IC8vIENvbnZlcnQgcmVzdWx0cyB0byBudW1iZXJzLiBVc2VkIGJ5IHRoZSBnZW9tZXRyaWMgbWVh
biBjb21wdXRhdGlvbi4KICAgICB0aGlzLnZhbHVlT2YgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXMudGltZTsgfTsKIH0KQEAgLTI4NCw3ICsyNDIsNyBAQCBCZW5jaG1hcmtTdWl0ZS5wcm90b3R5
cGUuUnVuU2luZ2xlID0gZnVuCiAgICAgICAgICAgICB0aGlzLmJlbmNobWFya0NvbnRlbnRIb2xk
ZXIucmVtb3ZlQ2hpbGQodGhpcy5iZW5jaG1hcmtDb250ZW50KTsKICAgICAgICAgdGhpcy5iZW5j
aG1hcmtDb250ZW50ID0gdGhpcy5iZW5jaG1hcmtDb250ZW50UHJvdG8uY2xvbmVOb2RlKCk7CiAg
ICAgICAgIHRoaXMuYmVuY2htYXJrQ29udGVudEhvbGRlci5hcHBlbmRDaGlsZCh0aGlzLmJlbmNo
bWFya0NvbnRlbnQpOwotICAgICAgICBnYygpOworICAgICAgICBQZXJmVGVzdFJ1bm5lci5nYygp
OwogCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBpZiAoYmVuY2htYXJrLnNldHVwKSB7CkBA
IC0zODQsOCArMzQyLDggQEAgQmVuY2htYXJrU3VpdGUucHJvdG90eXBlLmdlbmVyYXRlTGFyZ2VU
cgogICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRE9NVHJlZSgyNiwgMjYsIDQpOwogfTsKIAotZnVu
Y3Rpb24gcnVuQmVuY2htYXJrU3VpdGUoc3VpdGUpIHsKLSAgICBzdGFydEN1c3RvbSgyMCwgZnVu
Y3Rpb24gKCkgeworZnVuY3Rpb24gcnVuQmVuY2htYXJrU3VpdGUoc3VpdGUsIHJ1bkNvdW50KSB7
CisgICAgUGVyZlRlc3RSdW5uZXIucnVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgdmFyIGNvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKICAgICAgICAgdmFy
IGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVuY2htYXJrX2NvbnRlbnQnKTsK
ICAgICAgICAgc3VpdGUuYmVuY2htYXJrQ29udGVudEhvbGRlciA9IGNvbnRhaW5lcjsKQEAgLTM5
OSw3ICszNTcsNyBAQCBmdW5jdGlvbiBydW5CZW5jaG1hcmtTdWl0ZShzdWl0ZSkgewogICAgICAg
ICAgICAgICAgIHRvdGFsTWVhblRpbWUgKz0gcmVzdWx0Lm1lYW47CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHRvdGFsTWVhblRpbWU7Ci0gICAgfSwgZnVuY3Rpb24gKCkgeworICAgIH0sIDEs
IHJ1bkNvdW50IHx8IDIwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHZhciBjb250YWluZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7CiAgICAgICAgIGlmIChjb250YWlu
ZXIuZmlyc3RDaGlsZCkKICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWlu
ZXIuZmlyc3RDaGlsZCk7CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL011dGF0aW9uL2FwcGVuZC1j
aGlsZC1kZWVwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9NdXRhdGlvbi9h
cHBlbmQtY2hpbGQtZGVlcC5odG1sCShyZXZpc2lvbiAxMDYzMzMpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL011dGF0aW9uL2FwcGVuZC1jaGlsZC1kZWVwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAgZnVuY3Rpb24gbGlzdGVuZXIobXV0YXRpb25zKSB7CiAgICAgaWYgKHN0YXJ0
KSB7CiAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0OwogICAgICAgICB0aW1l
cy5wdXNoKHRpbWUpOwotICAgICAgICBsb2codGltZSk7CisgICAgICAgIFBlcmZUZXN0UnVubmVy
LmxvZyh0aW1lKTsKICAgICB9CiAgICAgaWYgKG51bVJ1bnMtLSA+PSAwKSB7CiAgICAgICAgIHJ1
bkFnYWluKCk7CkBAIC00NCwxOSArNDQsMTkgQEAgZnVuY3Rpb24gbGlzdGVuZXIobXV0YXRpb25z
KSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICBub2RlLmFwcGVuZENoaWxkKGVsZW1zW2ldKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBsb2dTdGF0aXN0aWNzKHRpbWVzKTsKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nU3RhdGlz
dGljcyh0aW1lcyk7CiAgICAgICAgIGlmICghb2JzZXJ2aW5nKSB7CiAgICAgICAgICAgICBvYnNl
cnZpbmcgPSB0cnVlOwogICAgICAgICAgICAgcmVzZXRTdGF0ZSgpOwotICAgICAgICAgICAgbG9n
KCdcbi0tLS0tLS0tLS0tLVxuJyk7Ci0gICAgICAgICAgICBsb2coJ1J1bm5pbmcgJyArIG51bVJ1
bnMgKyAnIHRpbWVzIHdpdGggb2JzZXJ2YXRpb24nKTsKKyAgICAgICAgICAgIFBlcmZUZXN0UnVu
bmVyLmxvZygnXG4tLS0tLS0tLS0tLS1cbicpOworICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIu
bG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1lcyB3aXRoIG9ic2VydmF0aW9uJyk7CiAg
ICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bkFnYWluLCAwKTsKICAgICAgICAgfQogICAgIH0KIH0K
IAogcmVzZXRTdGF0ZSgpOwotbG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1lcyB3aXRo
b3V0IG9ic2VydmF0aW9uJyk7CitQZXJmVGVzdFJ1bm5lci5sb2coJ1J1bm5pbmcgJyArIG51bVJ1
bnMgKyAnIHRpbWVzIHdpdGhvdXQgb2JzZXJ2YXRpb24nKTsKIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdsb2FkJywgcnVuQWdhaW4pOwogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL011dGF0aW9uL2FwcGVuZC1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvTXV0YXRpb24vYXBwZW5kLWNoaWxkLmh0bWwJKHJldmlzaW9uIDEwNjMzMykK
KysrIFBlcmZvcm1hbmNlVGVzdHMvTXV0YXRpb24vYXBwZW5kLWNoaWxkLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gbGlzdGVuZXIobXV0YXRpb25zKSB7CiAg
ICAgaWYgKHN0YXJ0KSB7CiAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0Owog
ICAgICAgICB0aW1lcy5wdXNoKHRpbWUpOwotICAgICAgICBsb2codGltZSk7CisgICAgICAgIFBl
cmZUZXN0UnVubmVyLmxvZyh0aW1lKTsKICAgICB9CiAgICAgaWYgKG51bVJ1bnMtLSA+PSAwKSB7
CiAgICAgICAgIHJ1bkFnYWluKCk7CkBAIC00MSwxOSArNDEsMTkgQEAgZnVuY3Rpb24gbGlzdGVu
ZXIobXV0YXRpb25zKSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbXMubGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgICBzYW5kYm94LmFwcGVuZENoaWxkKGVsZW1zW2ldKTsKICAgICB9
IGVsc2UgewotICAgICAgICBsb2dTdGF0aXN0aWNzKHRpbWVzKTsKKyAgICAgICAgUGVyZlRlc3RS
dW5uZXIubG9nU3RhdGlzdGljcyh0aW1lcyk7CiAgICAgICAgIGlmICghb2JzZXJ2aW5nKSB7CiAg
ICAgICAgICAgICBvYnNlcnZpbmcgPSB0cnVlOwogICAgICAgICAgICAgcmVzZXRTdGF0ZSgpOwot
ICAgICAgICAgICAgbG9nKCdcbi0tLS0tLS0tLS0tLVxuJyk7Ci0gICAgICAgICAgICBsb2coJ1J1
bm5pbmcgJyArIG51bVJ1bnMgKyAnIHRpbWVzIHdpdGggb2JzZXJ2YXRpb24nKTsKKyAgICAgICAg
ICAgIFBlcmZUZXN0UnVubmVyLmxvZygnXG4tLS0tLS0tLS0tLS1cbicpOworICAgICAgICAgICAg
UGVyZlRlc3RSdW5uZXIubG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1lcyB3aXRoIG9i
c2VydmF0aW9uJyk7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bkFnYWluLCAwKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAogcmVzZXRTdGF0ZSgpOwotbG9nKCdSdW5uaW5nICcgKyBudW1SdW5z
ICsgJyB0aW1lcyB3aXRob3V0IG9ic2VydmF0aW9uJyk7CitQZXJmVGVzdFJ1bm5lci5sb2coJ1J1
bm5pbmcgJyArIG51bVJ1bnMgKyAnIHRpbWVzIHdpdGhvdXQgb2JzZXJ2YXRpb24nKTsKIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuQWdhaW4pOwogPC9zY3JpcHQ+CiA8L2JvZHk+
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL011dGF0aW9uL2lubmVyLWh0bWwuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL011dGF0aW9uL2lubmVyLWh0bWwuaHRtbAkocmV2aXNp
b24gMTA2MzMzKQorKysgUGVyZm9ybWFuY2VUZXN0cy9NdXRhdGlvbi9pbm5lci1odG1sLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gbGlzdGVuZXIobXV0YXRp
b25zKSB7CiAgICAgaWYgKHN0YXJ0KSB7CiAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKSAt
IHN0YXJ0OwogICAgICAgICB0aW1lcy5wdXNoKHRpbWUpOwotICAgICAgICBsb2codGltZSk7Cisg
ICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZyh0aW1lKTsKICAgICB9CiAgICAgaWYgKG51bVJ1bnMt
LSA+PSAwKSB7CiAgICAgICAgIHJ1bkFnYWluKCk7CkBAIC0zNiwyMCArMzYsMjAgQEAgZnVuY3Rp
b24gbGlzdGVuZXIobXV0YXRpb25zKSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
OyArK2kpCiAgICAgICAgICAgICBzYW5kYm94LmlubmVySFRNTCA9IGh0bWw7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbG9nU3RhdGlzdGljcyh0aW1lcyk7CisgICAgICAgIFBlcmZUZXN0UnVubmVy
LmxvZ1N0YXRpc3RpY3ModGltZXMpOwogICAgICAgICBpZiAoIW9ic2VydmluZykgewogICAgICAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShzYW5kYm94LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CiAgICAg
ICAgICAgICBvYnNlcnZpbmcgPSB0cnVlOwogICAgICAgICAgICAgcmVzZXRTdGF0ZSgpOwotICAg
ICAgICAgICAgbG9nKCdcbi0tLS0tLS0tLS0tLVxuJyk7Ci0gICAgICAgICAgICBsb2coJ1J1bm5p
bmcgJyArIG51bVJ1bnMgKyAnIHRpbWVzIHdpdGggb2JzZXJ2YXRpb24nKTsKKyAgICAgICAgICAg
IFBlcmZUZXN0UnVubmVyLmxvZygnXG4tLS0tLS0tLS0tLS1cbicpOworICAgICAgICAgICAgUGVy
ZlRlc3RSdW5uZXIubG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1lcyB3aXRoIG9ic2Vy
dmF0aW9uJyk7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bkFnYWluLCAwKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAogcmVzZXRTdGF0ZSgpOwotbG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsg
JyB0aW1lcyB3aXRob3V0IG9ic2VydmF0aW9uJyk7CitQZXJmVGVzdFJ1bm5lci5sb2coJ1J1bm5p
bmcgJyArIG51bVJ1bnMgKyAnIHRpbWVzIHdpdGhvdXQgb2JzZXJ2YXRpb24nKTsKIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuQWdhaW4pOwogPC9zY3JpcHQ+CiA8L2JvZHk+Cklu
ZGV4OiBQZXJmb3JtYW5jZVRlc3RzL011dGF0aW9uL3JlbW92ZS1jaGlsZC1kZWVwLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9NdXRhdGlvbi9yZW1vdmUtY2hpbGQtZGVlcC5o
dG1sCShyZXZpc2lvbiAxMDYzMzMpCisrKyBQZXJmb3JtYW5jZVRlc3RzL011dGF0aW9uL3JlbW92
ZS1jaGlsZC1kZWVwLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgZnVuY3Rp
b24gbGlzdGVuZXIobXV0YXRpb25zKSB7CiAgICAgaWYgKHN0YXJ0KSB7CiAgICAgICAgIHZhciB0
aW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0OwogICAgICAgICB0aW1lcy5wdXNoKHRpbWUpOwotICAg
ICAgICBsb2codGltZSk7CisgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZyh0aW1lKTsKICAgICB9
CiAgICAgaWYgKG51bVJ1bnMtLSA+PSAwKSB7CiAgICAgICAgIHJ1bkFnYWluKCk7CkBAIC00OCwx
OSArNDgsMTkgQEAgZnVuY3Rpb24gbGlzdGVuZXIobXV0YXRpb25zKSB7CiAgICAgICAgIHdoaWxl
IChub2RlLmZpcnN0Q2hpbGQpCiAgICAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUuZmly
c3RDaGlsZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbG9nU3RhdGlzdGljcyh0aW1lcyk7Cisg
ICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZ1N0YXRpc3RpY3ModGltZXMpOwogICAgICAgICBpZiAo
IW9ic2VydmluZykgewogICAgICAgICAgICAgb2JzZXJ2aW5nID0gdHJ1ZTsKICAgICAgICAgICAg
IHJlc2V0U3RhdGUoKTsKLSAgICAgICAgICAgIGxvZygnXG4tLS0tLS0tLS0tLS1cbicpOwotICAg
ICAgICAgICAgbG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1lcyB3aXRoIG9ic2VydmF0
aW9uJyk7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coJ1xuLS0tLS0tLS0tLS0tXG4n
KTsKKyAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZygnUnVubmluZyAnICsgbnVtUnVucyAr
ICcgdGltZXMgd2l0aCBvYnNlcnZhdGlvbicpOwogICAgICAgICAgICAgc2V0VGltZW91dChydW5B
Z2FpbiwgMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHJlc2V0U3RhdGUoKTsKLWxvZygnUnVu
bmluZyAnICsgbnVtUnVucyArICcgdGltZXMgd2l0aG91dCBvYnNlcnZhdGlvbicpOworUGVyZlRl
c3RSdW5uZXIubG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1lcyB3aXRob3V0IG9ic2Vy
dmF0aW9uJyk7CiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1bkFnYWluKTsKIDwv
c2NyaXB0PgogPC9ib2R5PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9NdXRhdGlvbi9yZW1vdmUt
Y2hpbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL011dGF0aW9uL3JlbW92
ZS1jaGlsZC5odG1sCShyZXZpc2lvbiAxMDYzMzMpCisrKyBQZXJmb3JtYW5jZVRlc3RzL011dGF0
aW9uL3JlbW92ZS1jaGlsZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGZ1
bmN0aW9uIGxpc3RlbmVyKG11dGF0aW9ucykgewogICAgIGlmIChzdGFydCkgewogICAgICAgICB2
YXIgdGltZSA9IERhdGUubm93KCkgLSBzdGFydDsKICAgICAgICAgdGltZXMucHVzaCh0aW1lKTsK
LSAgICAgICAgbG9nKHRpbWUpOworICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2codGltZSk7CiAg
ICAgfQogICAgIGlmIChudW1SdW5zLS0gPj0gMCkgewogICAgICAgICBydW5BZ2FpbigpOwpAQCAt
NDUsMjAgKzQ1LDIwIEBAIGZ1bmN0aW9uIGxpc3RlbmVyKG11dGF0aW9ucykgewogICAgICAgICB3
aGlsZSAoc2FuZGJveC5maXJzdENoaWxkKQogICAgICAgICAgICAgc2FuZGJveC5yZW1vdmVDaGls
ZChzYW5kYm94LmZpcnN0Q2hpbGQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGxvZ1N0YXRpc3Rp
Y3ModGltZXMpOworICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2dTdGF0aXN0aWNzKHRpbWVzKTsK
ICAgICAgICAgaWYgKCFvYnNlcnZpbmcpIHsKICAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUo
c2FuZGJveCwge2NoaWxkTGlzdDogdHJ1ZX0pOwogICAgICAgICAgICAgb2JzZXJ2aW5nID0gdHJ1
ZTsKICAgICAgICAgICAgIHJlc2V0U3RhdGUoKTsKLSAgICAgICAgICAgIGxvZygnXG4tLS0tLS0t
LS0tLS1cbicpOwotICAgICAgICAgICAgbG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1l
cyB3aXRoIG9ic2VydmF0aW9uJyk7CisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coJ1xu
LS0tLS0tLS0tLS0tXG4nKTsKKyAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZygnUnVubmlu
ZyAnICsgbnVtUnVucyArICcgdGltZXMgd2l0aCBvYnNlcnZhdGlvbicpOwogICAgICAgICAgICAg
c2V0VGltZW91dChydW5BZ2FpbiwgMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHJlc2V0U3Rh
dGUoKTsKLWxvZygnUnVubmluZyAnICsgbnVtUnVucyArICcgdGltZXMgd2l0aG91dCBvYnNlcnZh
dGlvbicpOworUGVyZlRlc3RSdW5uZXIubG9nKCdSdW5uaW5nICcgKyBudW1SdW5zICsgJyB0aW1l
cyB3aXRob3V0IG9ic2VydmF0aW9uJyk7CiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IHJ1bkFnYWluKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Q
YXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL1BhcnNlci9odG1sNS1mdWxsLXJlbmRlci5odG1sCShyZXZpc2lvbiAxMDYzMzMpCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sNS1mdWxsLXJlbmRlci5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxMiArNDUsMTIgQEAgZnVuY3Rpb24gbG9hZENodW5rZWRTcGVjSW50b0lmcmFt
ZShpZnJhbQogLy8gUnVubmluZyBmcm9tIHRoZSBvbmxvYWQgY2FsbGJhY2sganVzdCBtYWtlcyB0
aGUgVUkgbmljZXIgYXMgaXQgc2hvd3MgdGhlIGxvZ3MgYmVmb3JlIHN0YXJ0aW5nIHRoZSB0ZXN0
Lgogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIC8vIERlcGVuZGluZyBvbiB0aGUg
Y2hvc2VuIGNodW5rIHNpemUsIGl0ZXJhdGlvbnMgY2FuIHRha2Ugb3ZlciA2MHMgdG8gcnVuIG9u
IGEgZmFzdCBtYWNoaW5lLCBzbyB3ZSBvbmx5IHJ1biAyLgotICAgIHN0YXJ0KDIsIGZ1bmN0aW9u
KCkgeworICAgIFBlcmZUZXN0UnVubmVyLnJ1bihmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIGlm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CiAgICAgICAgIGxvYWRDaHVua2VkU3BlY0ludG9J
ZnJhbWUoaWZyYW1lKTsKICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUp
OwotICAgIH0sIDEpOyAvLyBXZSBvbmx5IGxvb3Agb25jZSBmb3IgZWFjaCBydW4sIGFnYWluIGJl
Y2F1c2UgdGhpcyB0ZXN0IGlzIHNvIHNsb3cuCisgICAgfSwgMSwgMik7IC8vIFdlIG9ubHkgbG9v
cCBvbmNlIGZvciBlYWNoIHJ1biwgYWdhaW4gYmVjYXVzZSB0aGlzIHRlc3QgaXMgc28gc2xvdy4K
IH0KIAogPC9zY3JpcHQ+CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sLXBhcnNl
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUGFyc2VyL2h0bWwtcGFyc2Vy
Lmh0bWwJKHJldmlzaW9uIDEwNjMzMykKKysrIFBlcmZvcm1hbmNlVGVzdHMvUGFyc2VyL2h0bWwt
cGFyc2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw5IEBACiA8cHJlIGlkPSJsb2ci
PjwvcHJlPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KLXZhciBzcGVjID0gbG9hZEZpbGUoInJlc291cmNlcy9odG1sNS5odG1sIik7Cit2
YXIgc3BlYyA9IFBlcmZUZXN0UnVubmVyLmxvYWRGaWxlKCJyZXNvdXJjZXMvaHRtbDUuaHRtbCIp
OwogCi1zdGFydCgxMCwgZnVuY3Rpb24oKSB7CitQZXJmVGVzdFJ1bm5lci5ydW4oZnVuY3Rpb24o
KSB7CiAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwog
ICAgIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOyAgLy8gUHJldmVudCBjcmVhdGlvbiBv
ZiB0aGUgcmVuZGVyaW5nIHRyZWUsIHNvIHdlIG9ubHkgdGVzdCBIVE1MIHBhcnNpbmcuCiAgICAg
aWZyYW1lLnNhbmRib3ggPSAnJzsgIC8vIFByZXZlbnQgZXh0ZXJuYWwgc2NyaXB0IGxvYWRzIHdo
aWNoIGNvdWxkIGNhdXNlIHdyaXRlKCkgdG8gcmV0dXJuIGJlZm9yZSBjb21wbGV0aW5nIHRoZSBw
YXJzZS4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUGFyc2VyL3NpbXBsZS11cmwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9zaW1wbGUtdXJsLmh0bWwJKHJldmlz
aW9uIDEwNjMzMykKKysrIFBlcmZvcm1hbmNlVGVzdHMvUGFyc2VyL3NpbXBsZS11cmwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
cnVubmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiB2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiYSIpOwotc3RhcnQoMjAsIGZ1bmN0aW9uKCkgeworUGVyZlRlc3RSdW5uZXIu
cnVuKGZ1bmN0aW9uKCkgewogICAgIGZvciAodmFyIHggPSAwOyB4IDwgMjAwMDAwOyB4KyspIHsK
ICAgICAgICAgYW5jaG9yLmhyZWYgPSAiaHR0cDovL3d3dy5hcHBsZS5jb20vIgogICAgIH0KSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvUGFyc2VyL3RpbnktaW5uZXJIVE1MLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9QYXJzZXIvdGlueS1pbm5lckhUTUwuaHRtbAkocmV2aXNp
b24gMTA2MzMzKQorKysgUGVyZm9ybWFuY2VUZXN0cy9QYXJzZXIvdGlueS1pbm5lckhUTUwuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgot
c3RhcnQoMjAsIGZ1bmN0aW9uKCkgeworUGVyZlRlc3RSdW5uZXIucnVuKGZ1bmN0aW9uKCkgewog
ICAgIHZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGVz
dERpdi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQodGVzdERpdik7CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci91cmwtcGFyc2VyLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9QYXJzZXIvdXJsLXBhcnNlci5odG1s
CShyZXZpc2lvbiAxMDYzMzMpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci91cmwtcGFyc2Vy
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsMTAgQEAKIDxwcmUgaWQ9ImxvZyI+PC9w
cmU+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotdmFyIHVybHMgPSBsb2FkRmlsZSgicmVzb3VyY2VzL2ZpbmFsLXVybC1lbiIpLnNwbGl0
KCJcbiIpOwordmFyIHVybHMgPSBQZXJmVGVzdFJ1bm5lci5sb2FkRmlsZSgicmVzb3VyY2VzL2Zp
bmFsLXVybC1lbiIpLnNwbGl0KCJcbiIpOwogdmFyIGFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImEiKTsKIAotc3RhcnQoMjAsIGZ1bmN0aW9uKCkgeworUGVyZlRlc3RSdW5uZXIucnVu
KGZ1bmN0aW9uKCkgewogICAgIGZvciAodmFyIHggPSAwOyB4IDwgdXJscy5sZW5ndGg7IHgrKykg
ewogICAgICAgICBhbmNob3IuaHJlZiA9IHVybHNbeF07CiAgICAgfQpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9QYXJzZXIveG1sLXBhcnNlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvUGFyc2VyL3htbC1wYXJzZXIuaHRtbAkocmV2aXNpb24gMTA2MzMzKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9QYXJzZXIveG1sLXBhcnNlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3
ICsxMiw3IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMHg3RkZGOyArK2kpCiB4bWxBcnJheS5wdXNo
KCc8L3Jvb3Q+JykKIHZhciB4bWxEYXRhID0geG1sQXJyYXkuam9pbignJyk7CiAKLXN0YXJ0KDIw
LCBmdW5jdGlvbigpIHsKK1BlcmZUZXN0UnVubmVyLnJ1bihmdW5jdGlvbigpIHsKICAgICBkb21Q
YXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbERhdGEsICJ0ZXh0L3htbCIpOwogfSk7CiA8L3Njcmlw
dD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMJKHJldmlzaW9uIDEwNjMz
MykKKysrIFBlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3J1bm5lci5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSw4MCArMSw2NyBAQAotZnVuY3Rpb24gbG9nKHRleHQpIHsKKwordmFyIFBlcmZUZXN0
UnVubmVyID0geyB9OworCitQZXJmVGVzdFJ1bm5lci5sb2cgPSBmdW5jdGlvbiAodGV4dCkgewog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gdGV4dCArICJc
biI7CiAgICAgd2luZG93LnNjcm9sbFRvKDAsIGRvY3VtZW50LmJvZHkuaGVpZ2h0KTsKIH0KIAot
ZnVuY3Rpb24gbG9nSW5mbyh0ZXh0KSB7CitQZXJmVGVzdFJ1bm5lci5sb2dJbmZvID0gZnVuY3Rp
b24gKHRleHQpIHsKICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbG9nKHRleHQpOworICAgICAgICB0aGlzLmxvZyh0ZXh0KTsKIH0KIAotZnVuY3Rpb24gbG9h
ZEZpbGUocGF0aCkgeworUGVyZlRlc3RSdW5uZXIubG9hZEZpbGUgPSBmdW5jdGlvbiAocGF0aCkg
ewogICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICB4aHIub3BlbigiR0VU
IiwgcGF0aCwgZmFsc2UpOwogICAgIHhoci5zZW5kKG51bGwpOwogICAgIHJldHVybiB4aHIucmVz
cG9uc2VUZXh0OwogfQogCi12YXIgcnVuQ291bnQgPSAtMTsKLXZhciBydW5GdW5jdGlvbiA9IGZ1
bmN0aW9uKCkge307Ci12YXIgY29tcGxldGVkUnVucyA9IC0xOyAvLyBEaXNjYXJkIHRoZSBhbnkg
cnVucyA8IDAuCi12YXIgdGltZXMgPSBbXTsKLQotZnVuY3Rpb24gY29tcHV0ZUF2ZXJhZ2UodmFs
dWVzKSB7Ci0gICAgdmFyIHN1bSA9IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMu
bGVuZ3RoOyBpKyspCi0gICAgICAgIHN1bSArPSB2YWx1ZXNbaV07Ci0gICAgcmV0dXJuIHN1bSAv
IHZhbHVlcy5sZW5ndGg7Ci19Ci0KLWZ1bmN0aW9uIGNvbXB1dGVNYXgodmFsdWVzKSB7Ci0gICAg
dmFyIG1heCA9IHZhbHVlcy5sZW5ndGggPyB2YWx1ZXNbMF0gOiAwOwotICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChtYXggPCB2YWx1ZXNb
aV0pCi0gICAgICAgICAgICBtYXggPSB2YWx1ZXNbaV07Ci0gICAgfQotICAgIHJldHVybiBtYXg7
Ci19CitQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcyA9IGZ1bmN0aW9uICh0aW1lcykg
eworICAgIHZhciBkYXRhID0gdGltZXMuc2xpY2UoKTsKIAotZnVuY3Rpb24gY29tcHV0ZU1lZGlh
bih2YWx1ZXMpIHsKLSAgICB2YWx1ZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0g
YjsgfSk7Ci0gICAgdmFyIGxlbiA9IHZhbHVlcy5sZW5ndGg7Ci0gICAgaWYgKGxlbiAlIDIpCi0g
ICAgICAgIHJldHVybiB2YWx1ZXNbKGxlbi0xKS8yXTsKLSAgICByZXR1cm4gKHZhbHVlc1tsZW4v
Mi0xXSArIHZhbHVlc1tsZW4vMl0pIC8gMjsKLX0KLQotZnVuY3Rpb24gY29tcHV0ZU1pbih2YWx1
ZXMpIHsKLSAgICB2YXIgbWluID0gdmFsdWVzLmxlbmd0aCA/IHZhbHVlc1swXSA6IDA7Ci0gICAg
Zm9yICh2YXIgaSA9IDE7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKG1p
biA+IHZhbHVlc1tpXSkKLSAgICAgICAgICAgIG1pbiA9IHZhbHVlc1tpXTsKLSAgICB9Ci0gICAg
cmV0dXJuIG1pbjsKLX0KLQotZnVuY3Rpb24gY29tcHV0ZVN0ZGV2KHZhbHVlcykgewotICAgIHZh
ciBhdmVyYWdlID0gY29tcHV0ZUF2ZXJhZ2UodmFsdWVzKTsKLSAgICB2YXIgc3VtT2ZTcXVhcmVk
RGV2aWF0aW9ucyA9IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgdmFyIGRldmlhdGlvbiA9IHZhbHVlc1tpXSAtIGF2ZXJhZ2U7Ci0gICAg
ICAgIHN1bU9mU3F1YXJlZERldmlhdGlvbnMgKz0gZGV2aWF0aW9uICogZGV2aWF0aW9uOwotICAg
IH0KLSAgICByZXR1cm4gTWF0aC5zcXJ0KHN1bU9mU3F1YXJlZERldmlhdGlvbnMgLyB2YWx1ZXMu
bGVuZ3RoKTsKLX0KKyAgICAvLyBBZGQgdmFsdWVzIGZyb20gdGhlIHNtYWxsZXN0IHRvIHRoZSBs
YXJnZXN0IHRvIGF2b2lkIHRoZSBsb3NzIG9mIHNpZ25pZmljYW5jZQorICAgIGRhdGEuc29ydCgp
OwogCi1mdW5jdGlvbiBsb2dTdGF0aXN0aWNzKHRpbWVzKSB7Ci0gICAgbG9nKCIiKTsKLSAgICBs
b2coImF2ZyAiICsgY29tcHV0ZUF2ZXJhZ2UodGltZXMpKTsKLSAgICBsb2coIm1lZGlhbiAiICsg
Y29tcHV0ZU1lZGlhbih0aW1lcykpOwotICAgIGxvZygic3RkZXYgIiArIGNvbXB1dGVTdGRldih0
aW1lcykpOwotICAgIGxvZygibWluICIgKyBjb21wdXRlTWluKHRpbWVzKSk7Ci0gICAgbG9nKCJt
YXggIiArIGNvbXB1dGVNYXgodGltZXMpKTsKKyAgICB2YXIgbWlkZGxlID0gTWF0aC5mbG9vcihk
YXRhLmxlbmd0aCAvIDIpOworICAgIHZhciByZXN1bHQgPSB7CisgICAgICAgIG1pbjogZGF0YVsw
XSwKKyAgICAgICAgbWF4OiBkYXRhW2RhdGEubGVuZ3RoIC0gMV0sCisgICAgICAgIG1lZGlhbjog
ZGF0YS5sZW5ndGggJSAyID8gZGF0YVttaWRkbGVdIDogKGRhdGFbbWlkZGxlIC0gMV0gKyBkYXRh
W21pZGRsZV0pIC8gMiwKKyAgICB9OworCisgICAgLy8gQ29tcHV0ZSB0aGUgbWVhbiBhbmQgdmFy
aWFuY2UgdXNpbmcgYSBudW1lcmljYWxseSBzdGFibGUgYWxnb3JpdGhtLgorICAgIHZhciBzcXVh
cmVTdW0gPSAwOworICAgIHJlc3VsdC5tZWFuID0gZGF0YVswXTsKKyAgICByZXN1bHQuc3VtID0g
ZGF0YVswXTsKKyAgICBmb3IgKHZhciBpID0gMTsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdmFyIHggPSBkYXRhW2ldOworICAgICAgICB2YXIgZGVsdGEgPSB4IC0gcmVzdWx0Lm1l
YW47CisgICAgICAgIHZhciBzd2VlcCA9IGkgKyAxLjA7CisgICAgICAgIHJlc3VsdC5tZWFuICs9
IGRlbHRhIC8gc3dlZXA7CisgICAgICAgIHJlc3VsdC5zdW0gKz0geDsKKyAgICAgICAgc3F1YXJl
U3VtICs9IGRlbHRhICogZGVsdGEgKiAoaSAvIHN3ZWVwKTsKKyAgICB9CisgICAgcmVzdWx0LnZh
cmlhbmNlID0gc3F1YXJlU3VtIC8gZGF0YS5sZW5ndGg7CisgICAgcmVzdWx0LnN0ZGV2ID0gTWF0
aC5zcXJ0KHJlc3VsdC52YXJpYW5jZSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQZXJm
VGVzdFJ1bm5lci5sb2dTdGF0aXN0aWNzID0gZnVuY3Rpb24gKHRpbWVzKSB7CisgICAgdGhpcy5s
b2coIiIpOworICAgIHZhciBzdGF0aXN0aWNzID0gdGhpcy5jb21wdXRlU3RhdGlzdGljcyh0aW1l
cyk7CisgICAgdGhpcy5sb2coImF2ZyAiICsgc3RhdGlzdGljcy5tZWFuKTsKKyAgICB0aGlzLmxv
ZygibWVkaWFuICIgKyBzdGF0aXN0aWNzLm1lZGlhbik7CisgICAgdGhpcy5sb2coInN0ZGV2ICIg
KyBzdGF0aXN0aWNzLnN0ZGV2KTsKKyAgICB0aGlzLmxvZygibWluICIgKyBzdGF0aXN0aWNzLm1p
bik7CisgICAgdGhpcy5sb2coIm1heCAiICsgc3RhdGlzdGljcy5tYXgpOwogfQogCi1mdW5jdGlv
biBnYygpIHsKK1BlcmZUZXN0UnVubmVyLmdjID0gZnVuY3Rpb24gKCkgewogICAgIGlmICh3aW5k
b3cuR0NDb250cm9sbGVyKQotICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworICAgICAg
ICB3aW5kb3cuR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKICAgICBlbHNlIHsKICAgICAgICAgZnVu
Y3Rpb24gZ2NSZWMobikgewogICAgICAgICAgICAgaWYgKG4gPCAxKQpAQCAtODgsNTcgKzc1LDU1
IEBAIGZ1bmN0aW9uIGdjKCkgewogICAgIH0KIH0KIAotZnVuY3Rpb24gcnVuTG9vcCgpCi17Ci0g
ICAgaWYgKHdpbmRvdy5jb21wbGV0ZWRSdW5zIDwgd2luZG93LnJ1bkNvdW50KSB7Ci0gICAgICAg
IGdjKCk7Ci0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHJ1biwgMCk7CitQZXJmVGVzdFJ1bm5l
ci5fcnVuTG9vcCA9IGZ1bmN0aW9uICgpIHsKKyAgICBpZiAodGhpcy5fY29tcGxldGVkUnVucyA8
IHRoaXMuX3J1bkNvdW50KSB7CisgICAgICAgIHRoaXMuZ2MoKTsKKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBQZXJmVGVzdFJ1bm5lci5fcnVubmVyKCk7IH0sIDApOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGxvZ1N0YXRpc3RpY3ModGltZXMpOwotICAgICAgICB3aW5k
b3cuZG9uZUZ1bmN0aW9uKCk7CisgICAgICAgIHRoaXMubG9nU3RhdGlzdGljcyh0aGlzLl90aW1l
cyk7CisgICAgICAgIHRoaXMuX2RvbmVGdW5jdGlvbigpOwogICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwogICAgIH0KIH0KIAotZnVuY3Rpb24gcnVuKCkgewotICAgIGlmICh3aW5kb3cu
Y3VzdG9tUnVuRnVuY3Rpb24pCi0gICAgICAgIHZhciB0aW1lID0gd2luZG93LmN1c3RvbVJ1bkZ1
bmN0aW9uKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93Lmxvb3BzUGVyUnVuOyArK2kpCi0gICAg
ICAgICAgICB3aW5kb3cucnVuRnVuY3Rpb24oKTsKLSAgICAgICAgdmFyIHRpbWUgPSBuZXcgRGF0
ZSgpIC0gc3RhcnQ7Ci0gICAgfQotCi0gICAgd2luZG93LmNvbXBsZXRlZFJ1bnMrKzsKLSAgICBp
ZiAod2luZG93LmNvbXBsZXRlZFJ1bnMgPD0gMCkgewotICAgICAgICBsb2coIklnbm9yaW5nIHdh
cm0tdXAgcnVuICgiICsgdGltZSArICIpIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGltZXMu
cHVzaCh0aW1lKTsKLSAgICAgICAgbG9nKHRpbWUpOworUGVyZlRlc3RSdW5uZXIuX3J1bm5lciA9
IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpOworICAgIHZhciB0b3Rh
bFRpbWUgPSAwOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9sb29wc1BlclJ1bjsg
KytpKSB7CisgICAgICAgIHZhciByZXR1cm5WYWx1ZSA9IHRoaXMuX3J1bkZ1bmN0aW9uLmNhbGwo
d2luZG93KTsKKyAgICAgICAgaWYgKHJldHVyblZhbHVlIC0gMCA9PT0gcmV0dXJuVmFsdWUpIHsK
KyAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSA8PSAwKQorICAgICAgICAgICAgICAgIHRoaXMu
bG9nKCJydW5GdW5jdGlvbiByZXR1cm5lZCBhIG5vbi1wb3NpdGl2ZSB2YWx1ZTogIiArIHJldHVy
blZhbHVlKTsKKyAgICAgICAgICAgIHRvdGFsVGltZSArPSByZXR1cm5WYWx1ZTsKKyAgICAgICAg
fQogICAgIH0KLSAgICBydW5Mb29wKCkKLX0KIAotZnVuY3Rpb24gc3RhcnQocnVuQ291bnQsIHJ1
bkZ1bmN0aW9uLCBsb29wc1BlclJ1biwgZG9uZUZ1bmN0aW9uKSB7Ci0gICAgd2luZG93LnJ1bkNv
dW50ID0gcnVuQ291bnQ7Ci0gICAgd2luZG93LnJ1bkZ1bmN0aW9uID0gcnVuRnVuY3Rpb247Ci0g
ICAgd2luZG93Lmxvb3BzUGVyUnVuID0gbG9vcHNQZXJSdW4gfHwgMTA7Ci0gICAgd2luZG93LmRv
bmVGdW5jdGlvbiA9IGRvbmVGdW5jdGlvbiB8fCBmdW5jdGlvbigpIHt9OworICAgIC8vIEFzc3Vt
ZSB0b3RhbFRpbWUgY2FuIG5ldmVyIGJlIHplcm8gd2hlbiBfcnVuRnVuY3Rpb24gcmV0dXJucyBh
IG51bWJlci4KKyAgICB2YXIgdGltZSA9IHRvdGFsVGltZSA/IHRvdGFsVGltZSA6IG5ldyBEYXRl
KCkgLSBzdGFydDsKIAotICAgIGxvZygiUnVubmluZyAiICsgcnVuQ291bnQgKyAiIHRpbWVzIik7
Ci0gICAgcnVuTG9vcCgpOworICAgIHRoaXMuX2NvbXBsZXRlZFJ1bnMrKzsKKyAgICBpZiAodGhp
cy5fY29tcGxldGVkUnVucyA8PSAwKQorICAgICAgICB0aGlzLmxvZygiSWdub3Jpbmcgd2FybS11
cCBydW4gKCIgKyB0aW1lICsgIikiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdGhpcy5fdGltZXMu
cHVzaCh0aW1lKTsKKyAgICAgICAgdGhpcy5sb2codGltZSk7CisgICAgfQorICAgIHRoaXMuX3J1
bkxvb3AoKTsKIH0KIAotZnVuY3Rpb24gc3RhcnRDdXN0b20ocnVuQ291bnQsIGN1c3RvbVJ1bkZ1
bmN0aW9uLCBkb25lRnVuY3Rpb24pIHsKLSAgICB3aW5kb3cucnVuQ291bnQgPSBydW5Db3VudDsK
LSAgICB3aW5kb3cuY3VzdG9tUnVuRnVuY3Rpb24gPSBjdXN0b21SdW5GdW5jdGlvbjsKLSAgICB3
aW5kb3cubG9vcHNQZXJSdW4gPSAxOwotICAgIHdpbmRvdy5kb25lRnVuY3Rpb24gPSBkb25lRnVu
Y3Rpb24gfHwgZnVuY3Rpb24oKSB7fTsKK1BlcmZUZXN0UnVubmVyLnJ1biA9IGZ1bmN0aW9uIChy
dW5GdW5jdGlvbiwgbG9vcHNQZXJSdW4sIHJ1bkNvdW50LCBkb25lRnVuY3Rpb24pIHsKKyAgICB0
aGlzLl9ydW5GdW5jdGlvbiA9IHJ1bkZ1bmN0aW9uOworICAgIHRoaXMuX2xvb3BzUGVyUnVuID0g
bG9vcHNQZXJSdW4gfHwgMTA7CisgICAgdGhpcy5fcnVuQ291bnQgPSBydW5Db3VudCB8fCAyMDsK
KyAgICB0aGlzLl9kb25lRnVuY3Rpb24gPSBkb25lRnVuY3Rpb24gfHwgZnVuY3Rpb24gKCkge307
CisgICAgdGhpcy5fY29tcGxldGVkUnVucyA9IC0xOworICAgIHRoaXMuY3VzdG9tUnVuRnVuY3Rp
b24gPSBudWxsOworICAgIHRoaXMuX3RpbWVzID0gW107CiAKLSAgICBsb2coIlJ1bm5pbmcgIiAr
IHJ1bkNvdW50ICsgIiB0aW1lcyIpOwotICAgIHJ1bkxvb3AoKTsKKyAgICB0aGlzLmxvZygiUnVu
bmluZyAiICsgdGhpcy5fcnVuQ291bnQgKyAiIHRpbWVzIik7CisgICAgdGhpcy5fcnVuTG9vcCgp
OwogfQogCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cg==
</data>
<flag name="review"
          id="126000"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="126013"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>