<?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>39994</bug_id>
          
          <creation_ts>2010-06-01 06:49:17 -0700</creation_ts>
          <short_desc>Geolocation LayoutTests should make more careful use of LayoutTestController</short_desc>
          <delta_ts>2010-06-04 02:33:35 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dumi</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232726</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-01 06:49:17 -0700</bug_when>
    <thetext>The Geolocation LayoutTests should guard calls to LayoutTestController methods with &apos;if (window.layoutTestController)&apos; and should make it clear if the test can not pass without LayoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232731</commentid>
    <comment_count>1</comment_count>
      <attachid>57539</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-01 07:01:02 -0700</bug_when>
    <thetext>Created attachment 57539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232935</commentid>
    <comment_count>2</comment_count>
      <attachid>57589</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-01 13:36:37 -0700</bug_when>
    <thetext>Created attachment 57589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233945</commentid>
    <comment_count>3</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-03 15:13:17 -0700</bug_when>
    <thetext>LGTM, but i have an unrelated question about the .js files in fast/dom/Geolocation/script-tests/. lots of them seem to have code that looks like this:

}, function(e) {
    error = e
    shouldBe(&apos;error.code&apos;, &apos;mockCode&apos;);
    shouldBe(&apos;error.message&apos;, &apos;mockMessage&apos;);
...

shouldn&apos;t there be a &apos;;&apos; after &apos;error = e&apos; (at least from a style point of view)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233953</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-03 15:35:26 -0700</bug_when>
    <thetext>&gt; shouldn&apos;t there be a &apos;;&apos; after &apos;error = e&apos; (at least from a style point of view)?
Yes, good catch. I can fix this on landing if that&apos;s OK with you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233963</commentid>
    <comment_count>5</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-03 15:46:14 -0700</bug_when>
    <thetext>That&apos;s fine with me. Please go through every .js file as quite a few of them seem to have this issue. Oh, and you&apos;re still going to need an official r+ from somebody else since I&apos;m not a reviewer... sorry. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234122</commentid>
    <comment_count>6</comment_count>
      <attachid>57856</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-04 02:21:29 -0700</bug_when>
    <thetext>Created attachment 57856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234123</commentid>
    <comment_count>7</comment_count>
      <attachid>57856</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-04 02:24:36 -0700</bug_when>
    <thetext>Comment on attachment 57856
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234126</commentid>
    <comment_count>8</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-04 02:33:35 -0700</bug_when>
    <thetext>Committed r60667: &lt;http://trac.webkit.org/changeset/60667&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57539</attachid>
            <date>2010-06-01 07:01:02 -0700</date>
            <delta_ts>2010-06-01 13:36:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39994-20100601150100.patch</filename>
            <type>text/plain</type>
            <size>26408</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDYtMDEgIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdlb2xvY2F0aW9uIExheW91dFRlc3RzIHNob3VsZCBtYWtlIG1vcmUgY2Fy
ZWZ1bCB1c2Ugb2YgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTk0CisKKyAgICAgICAgR3VhcmRzIGNhbGxzIHRv
IExheW91dFRlc3RDb250cm9sbGVyIG1ldGhvZHMgd2l0aCAnaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciknCisgICAgICAgIGFuZCBhZGRzIHRlc3Qgb3V0cHV0IHRvIG1ha2UgaXQgY2xl
YXIgaWYgdGhlIHRlc3QgY2FuIG5vdCBwYXNzIHdpdGhvdXQgTGF5b3V0VGVzdENvbnRyb2xsZXIu
CisgICAgICAgIEFsc28gcmVtb3ZlcyBzdXBlcmZsdW91cyBjYWxscyB0byBMYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCksIHdoaWNoIGFyZSBub3cgbWFkZQorICAgICAgICBieSBq
cy10ZXN0LXBvc3QuanMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFj
ay1leGNlcHRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9jYWxsYmFjay1leGNlcHRpb24uanM6CisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qczoKKyAgICAgICAgKiBmYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbm90aW1lci1hZnRlci11bmxvYWQuanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVk
LWFscmVhZHktY2xlYXItd2F0Y2guanM6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktZXJyb3IuanM6CisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFs
cmVhZHktc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtc3RvcHMtd2F0Y2hlcy5qczoKKyAgICAgICAgKiBmYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQuanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bvc2l0aW9uLXN0cmluZy5q
czoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50
LWVycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9y
ZWVudHJhbnQtc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvdGltZW91dC1jbGVhci13YXRjaC5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKwogMjAxMC0wNi0wMSAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
WGFuIExvcGV6LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJh
Y2stZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA2MDQ3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjI6IEVycm9yOiBFeGNlcHRpb24gaW4gc3VjY2VzcyBjYWxsYmFj
aworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI1OiBFcnJvcjogRXhjZXB0aW9uIGluIHN1Y2Nlc3Mg
Y2FsbGJhY2sKIFRlc3RzIHRoYXQgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGluIHRoZSBz
dWNjZXNzIGNhbGxiYWNrLCB0aGUgZXJyb3IgY2FsbGJhY2sgaXMgbm90IGludm9rZWQuIE5vdGUg
dGhhdCB0aGlzIHRlc3QgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGljaCBpcyBub3QgY2F1Z2h0Lgog
CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvY2FsbGJhY2stZXhjZXB0aW9uLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9jYWxsYmFj
ay1leGNlcHRpb24uanMJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2NhbGxiYWNrLWV4Y2VwdGlvbi5qcwkod29ya2luZyBj
b3B5KQpAQCAtNCwxMCArNCwxMyBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwogdmFyIG1v
Y2tMb25naXR1ZGUgPSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwOwogCi13aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tM
YXRpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2NrTG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2NrTG9uZ2l0dWRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7Cit9IGVsc2UK
KyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRl
c3RDb250cm9sbGVyJyk7CiAKIHZhciBwb3NpdGlvbjsKIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpAQCAtMjUsNyArMjgsNSBAQCBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9
KTsKIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQogd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
ZXJyb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL2Vycm9yLmpzCShyZXZpc2lvbiA2MDQ3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMyw3ICszLDEwIEBAIGRlc2NyaXB0aW9uKCJUZXN0cyBHZW9sb2NhdGlvbiBlcnJvciBjYWwK
IHZhciBtb2NrQ29kZSA9IDA7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCi13aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1v
Y2tNZXNzYWdlKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3Nh
Z2UpOworZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0
aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIAogdmFyIGVycm9yOwogbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CkBAIC0xOSw3ICsyMiw2IEBA
IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KICAgICBzaG91bGRCZSgn
ZXJyb3IuVElNRU9VVCcsICczJyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKLXdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9tYXhpbXVtLWFnZS5qcwkocmV2aXNpb24gNjA0NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDggKzI1LDExIEBAIGZ1bmN0aW9uIGNoZWNrRXJyb3IoZSkgewogICAgIHNob3Vs
ZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiB9CiAKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRl
LCBtb2NrTG9uZ2l0dWRlLCBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tMb25naXR1ZGUsIG1vY2tBY2N1cmFjeSk7Cit9IGVs
c2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91
dFRlc3RDb250cm9sbGVyJyk7CiAKIC8vIEluaXRpYWxpemUgdGhlIGNhY2hlZCBQb3NpdGlvbgog
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CkBA
IC0zOSw3ICs0Miw4IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24K
IAogZnVuY3Rpb24gdGVzdFplcm9NYXhpbXVtQWdlKCkgewogICAgIC8vIFVwZGF0ZSB0aGUgcG9z
aXRpb24gcHJvdmlkZWQgYnkgdGhlIG1vY2sgc2VydmljZS4KLSAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsICsr
bW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKCsrbW9ja0xhdGl0dWRlLCArK21vY2tMb25naXR1ZGUsICsrbW9ja0FjY3Vy
YWN5KTsKICAgICAvLyBUaGUgZGVmYXVsdCBtYXhpbXVtQWdlIGlzIHplcm8sIHNvIHdlIGV4cGVj
dCB0aGUgdXBkYXRlZCBwb3NpdGlvbiBmcm9tIHRoZSBzZXJ2aWNlLgogICAgIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICBjaGVj
a1Bvc2l0aW9uKHApOwpAQCAtNTIsNyArNTYsOCBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGltdW1B
Z2UoKSB7CiAKIGZ1bmN0aW9uIHRlc3ROb25aZXJvTWF4aW11bUFnZSgpIHsKICAgICAvLyBVcGRh
dGUgdGhlIG1vY2sgc2VydmljZSB0byByZXBvcnQgYW4gZXJyb3IuCi0gICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVz
c2FnZSk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tN
ZXNzYWdlKTsKICAgICAvLyBUaGUgbWF4aW11bUFnZSBpcyBub24temVybywgc28gd2UgZXhwZWN0
IHRoZSBjYWNoZWQgcG9zaXRpb24sIG5vdCB0aGUgZXJyb3IgZnJvbSB0aGUgc2VydmljZS4KICAg
ICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsK
ICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKQEAgLTc0LDcgKzc5LDUgQEAgZnVuY3Rpb24gdGVz
dFplcm9NYXhpbXVtQWdlRXJyb3IoKSB7CiAgICAgfSk7CiB9CiAKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL25vdGltZXItYWZ0ZXItdW5sb2FkLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9ub3RpbWVyLWFmdGVyLXVubG9hZC5qcwkocmV2aXNpb24gNjA0NzUpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbm90aW1lci1hZnRlci11bmxv
YWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTE3LDUgKzE3LDMgQEAgZG9jdW1lbnQuYm9keS5vbnVu
bG9hZCA9IGZ1bmN0aW9uKCkgewogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5k
b3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVu
aWVkLWFscmVhZHktY2xlYXItd2F0Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHkt
Y2xlYXItd2F0Y2guanMJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktY2xlYXIt
d2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSwxMSBAQAogZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgd2hlbiBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIGhhcyBiZWVuIGRlbmllZCBwcmlv
ciB0byBhIGNhbGwgdG8gd2F0Y2hQb3NpdGlvbiwgYW5kIHRoZSB3YXRjaCBpcyBjbGVhcmVkIGlu
IHRoZSBlcnJvciBjYWxsYmFjaywgdGhlcmUgaXMgbm8gY3Jhc2guIFRoaXMgYSByZWdyZXNzaW9u
IHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjExMS4i
KTsKIAogLy8gUHJpbWUgdGhlIEdlb2xvY2F0aW9uIGluc3RhbmNlIGJ5IGRlbnlpbmcgcGVybWlz
c2lvbi4KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24oZmFsc2UpOwotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbihmYWxzZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0
ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAK
IHZhciBlcnJvcjsKIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVu
Y3Rpb24ocCkgewpAQCAtMzEsNyArMzQsNSBAQCBmdW5jdGlvbiBjb250aW51ZVRlc3QoKQogICAg
IH0pOwogfQogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
CiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRl
bmllZC1hbHJlYWR5LWVycm9yLmpzCShyZXZpc2lvbiA2MDQ3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5
LWVycm9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsMTEgQEAKIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHdoZW4gR2VvbG9jYXRpb24gcGVybWlzc2lvbiBoYXMgYmVlbiBkZW5pZWQgcHJp
b3IgdG8gYSBjYWxsIHRvIGEgR2VvbG9jYXRpb24gbWV0aG9kLCB0aGUgZXJyb3IgY2FsbGJhY2sg
aXMgaW52b2tlZCB3aXRoIGNvZGUgUEVSTUlTU0lPTl9ERU5JRUQsIHdoZW4gdGhlIEdlb2xvY2F0
aW9uIHNlcnZpY2UgZW5jb3VudGVycyBhbiBlcnJvci4iKTsKIAogLy8gUHJpbWUgdGhlIEdlb2xv
Y2F0aW9uIGluc3RhbmNlIGJ5IGRlbnlpbmcgcGVybWlzc2lvbi4KLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2
LCAxMDApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYs
IDEwMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhv
dXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpAQCAtMTksNyArMjIs
OCBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCiBmdW5jdGlvbiBj
b250aW51ZVRlc3QoKQogewogICAgIC8vIE1ha2UgYW5vdGhlciByZXF1ZXN0LCB3aXRoIHBlcm1p
c3Npb24gYWxyZWFkeSBkZW5pZWQuCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKDAsICd0ZXN0Jyk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IoMCwgJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNz
IGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CkBAIC0zMSw3ICszNSw2IEBAIGZ1bmN0
aW9uIGNvbnRpbnVlVGVzdCgpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0pOwogfQot
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlz
c2lvbi1kZW5pZWQtYWxyZWFkeS1zdWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJl
YWR5LXN1Y2Nlc3MuanMJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktc3VjY2Vz
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDExIEBACiBkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB3aGVuIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gaGFzIGJlZW4gZGVuaWVkIHByaW9yIHRv
IGEgY2FsbCB0byBhIEdlb2xvY2F0aW9uIG1ldGhvZCwgdGhlIGVycm9yIGNhbGxiYWNrIGlzIGlu
dm9rZWQgd2l0aCBjb2RlIFBFUk1JU1NJT05fREVOSUVELCB3aGVuIHRoZSBHZW9sb2NhdGlvbiBz
ZXJ2aWNlIGhhcyBhIGdvb2QgcG9zaXRpb24uIik7CiAKIC8vIFByaW1lIHRoZSBHZW9sb2NhdGlv
biBpbnN0YW5jZSBieSBkZW55aW5nIHBlcm1pc3Npb24uCi13aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAw
KTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAp
OworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRo
ZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTI5LDcgKzMyLDYgQEAg
ZnVuY3Rpb24gY29udGludWVUZXN0KCkKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSk7
CiB9Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9w
ZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1z
dG9wcy13YXRjaGVzLmpzCShyZXZpc2lvbiA2MDQ3NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsMTEgQEAgZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgd2hlbiBHZW9sb2NhdGlvbgogCiAvLyBDb25maWd1cmUgdGhlIG1vY2sgR2VvbG9jYXRpb24g
c2VydmljZSB0byByZXBvcnQgYSBwb3NpdGlvbiB0byBjYXVzZSBwZXJtaXNzaW9uCiAvLyB0byBi
ZSByZXF1ZXN0ZWQsIHRoZW4gZGVueSBpdC4KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwLjApOwor
fSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBM
YXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiB2YXIgZXJyb3JDYWxsYmFja0lu
dm9rZWQgPSBmYWxzZTsKQEAgLTIzLDExICsyNiwxMSBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
d2F0Y2hQb3NpdGlvbihmdW5jCiAKICAgICAvLyBVcGRhdGUgdGhlIG1vY2sgR2VvbG9jYXRpb24g
c2VydmljZSB0byByZXBvcnQgYSBuZXcgcG9zaXRpb24sIHRoZW4KICAgICAvLyB5aWVsZCB0byBh
bGxvdyBhIGNoYW5jZSBmb3IgdGhlIHN1Y2Nlc3MgY2FsbGJhY2sgdG8gYmUgaW52b2tlZC4KLSAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
NTUuNDc4LCAtMC4xNjYsIDEwMCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oNTUuNDc4LCAtMC4xNjYsIDEwMCk7CiAgICAgd2luZG93LnNldFRpbWVvdXQoZmluaXNoSlNU
ZXN0LCAwKTsKIH0pOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Nj
cmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQuanMJ
KHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
MTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBHZW9sb2NhdGlvbiB3aGVuIHBlcm1pc3Npb24gaXMg
ZGVuaWVkLCB1c2luZyB0aGUgbW9jayBzZXJ2aWNlLiIpOwogCi13aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2Niwg
MTAwKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAx
MDAuMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhv
dXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpAQCAtMTMsNyArMTYs
NiBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCiAgICAgc2hvdWxk
QmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOwogICAgIGZp
bmlzaEpTVGVzdCgpOwogfSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9wb3NpdGlvbi1zdHJpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bvc2l0aW9uLXN0cmluZy5qcwko
cmV2aXNpb24gNjA0NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvcG9zaXRpb24tc3RyaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEz
IEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2
NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAuMDsKIAotd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdp
dHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2Nr
TGF0aXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9ja0xvbmdpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMg
dGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwog
CiB2YXIgcG9zaXRpb247CiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGZ1bmN0aW9uKHApIHsKQEAgLTIzLDcgKzI2LDYgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbgogICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQg
dW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcmVlbnRyYW50LWVycm9yLmpzCShyZXZpc2lvbiA2MDQ3NSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMJKHdvcmtp
bmcgY29weSkKQEAgLTMsNyArMywxMCBAQCBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZWVudHJh
bnQgY2FsbHMgCiB2YXIgbW9ja0NvZGUgPSAwOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwog
Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9j
a0NvZGUsIG1vY2tNZXNzYWdlKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUs
IG1vY2tNZXNzYWdlKTsKK2Vsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVu
IHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBlcnJvcjsKIHZhciBl
cnJvckNhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwpAQCAtMjgsNyArMzEsOCBAQCBmdW5jdGlvbiBj
b250aW51ZVRlc3QoKSB7CiAgICAgbW9ja0NvZGUgKz0gMTsKICAgICBtb2NrTWVzc2FnZSArPSAn
IHJlcGVhdCc7CiAKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogCiAgICAgbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIHRlc3RG
YWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKQEAgLTQwLDcg
KzQ0LDYgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKICAgICB9KTsKIH0KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL3JlZW50cmFudC1zdWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtc3VjY2Vzcy5qcwko
cmV2aXNpb24gNjA0NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvcmVlbnRyYW50LXN1Y2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQs
MTMgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAu
MTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrTG9u
Z2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1v
Y2tMYXRpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2NrTG9uZ2l0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhp
cyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7
CiAKIHZhciBwb3NpdGlvbjsKIHZhciBzdWNjZXNzQ2FsbGJhY2tJbnZva2VkID0gZmFsc2U7CkBA
IC0zMCw5ICszMywxMCBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
CiB9KTsKIAogZnVuY3Rpb24gY29udGludWVUZXN0KCkgewotICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigrK21vY2tMYXRpdHVkZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Kyttb2NrTG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICArK21vY2tBY2N1cmFjeSk7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbW9ja0xvbmdpdHVkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyttb2Nr
QWNjdXJhY3kpOwogCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihmdW5jdGlvbihwKSB7CiAgICAgICAgIHBvc2l0aW9uID0gcDsKQEAgLTQ1LDcgKzQ5LDYgQEAg
ZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9
KTsKIH0KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L3N1Y2Nlc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL3N1Y2Nlc3MuanMJKHJldmlzaW9uIDYwNDc1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3N1Y2Nlc3MuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTQsMTAgKzQsMTMgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBt
b2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMDsKIAotd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2Nr
TGF0aXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9ja0xvbmdpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworfSBlbHNl
CisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRU
ZXN0Q29udHJvbGxlcicpOwogCiB2YXIgcG9zaXRpb247CiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTIwLDcgKzIzLDYgQEAgbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbgogICAgIHRlc3RGYWlsZWQoJ0Vycm9y
IGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9
KTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Rp
bWVvdXQtY2xlYXItd2F0Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMJKHJldmlzaW9u
IDYwNDc1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L3RpbWVvdXQtY2xlYXItd2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIGEgd2F0Y2ggdGltZXMgb3V0IGFuZCBpcyBjbGVh
cmVkIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrLCB0aGVyZSBpcyBubyBjcmFzaC4gVGhpcyBhIHJl
Z3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyMTExLiIpOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKIAogdmFyIGVycm9yOwogdmFyIHdhdGNo
SWQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKQEAg
LTE2LDcgKzE3LDYgQEAgdmFyIHdhdGNoSWQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Ywog
ICAgIHRpbWVvdXQ6IDAKIH0pOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LXplcm8uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtemVyby5qcwkocmV2
aXNpb24gNjA0NzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvdGltZW91dC16ZXJvLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiB0aW1lb3V0IGlzIHplcm8gKGFuZCBtYXhpbXVtQWdl
IGlzIHRvbyksIHRoZSBlcnJvciBjYWxsYmFjayBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgd2l0aCBj
b2RlIFRJTUVPVVQuIik7CiAKLWxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpAQCAtMTQsNyArMTUs
NiBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCiB9LCB7CiAgICAg
dGltZW91dDogMAogfSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Nj
cmlwdC10ZXN0cy90aW1lb3V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzCShyZXZpc2lvbiA2MDQ3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEzIEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40
Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAu
MDsKIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihtb2NrTGF0aXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJh
Y3kpOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgcG9zaXRpb247CiBuYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTIyLDcgKzI1
LDYgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbgogfSwgewogICAg
IHRpbWVvdXQ6IDEwMDAKIH0pOwotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvd2F0Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCShyZXZpc2lvbiA2MDQ3NSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMjUsMTkgKzI1LDI0IEBAIGZ1bmN0aW9uIGNoZWNrRXJyb3IoZSkg
ewogICAgIGRlYnVnKCcnKTsKIH0KIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tMb25naXR1ZGUsIG1v
Y2tBY2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVk
ZSwgbW9ja0xvbmdpdHVkZSwgbW9ja0FjY3VyYWN5KTsKK30gZWxzZQorICAgIGRlYnVnKCdUaGlz
IHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsK
IAogdmFyIHN0YXRlID0gMDsKIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1
bmN0aW9uKHApIHsKICAgICBzd2l0Y2ggKHN0YXRlKyspIHsKICAgICAgICAgY2FzZSAwOgogICAg
ICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKLSAgICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigrK21vY2tMYXRpdHVkZSwgKytt
b2NrTG9uZ2l0dWRlLCArK21vY2tBY2N1cmFjeSk7CisgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKCsrbW9ja0xhdGl0dWRlLCArK21vY2tMb25naXR1
ZGUsICsrbW9ja0FjY3VyYWN5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDE6
CiAgICAgICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwotICAgICAgICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVz
c2FnZSk7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSAzOgogICAgICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKQEAgLTUxLDE0ICs1NiwxNCBAQCBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jCiAgICAgc3dpdGNoIChzdGF0
ZSsrKSB7CiAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgIGNoZWNrRXJyb3IoZSk7Ci0gICAg
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oKyttb2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigrK21v
Y2tMYXRpdHVkZSwgKyttb2NrTG9uZ2l0dWRlLCArK21vY2tBY2N1cmFjeSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0Vycm9y
IGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKICAgICB9CiB9KTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57589</attachid>
            <date>2010-06-01 13:36:37 -0700</date>
            <delta_ts>2010-06-04 02:21:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39994-20100601213634.patch</filename>
            <type>text/plain</type>
            <size>26648</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwNTAyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDYtMDEgIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdlb2xvY2F0aW9uIExheW91dFRlc3RzIHNob3VsZCBtYWtlIG1vcmUgY2Fy
ZWZ1bCB1c2Ugb2YgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTk0CisKKyAgICAgICAgR3VhcmRzIGNhbGxzIHRv
IExheW91dFRlc3RDb250cm9sbGVyIG1ldGhvZHMgd2l0aCAnaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciknCisgICAgICAgIGFuZCBhZGRzIHRlc3Qgb3V0cHV0IHRvIG1ha2UgaXQgY2xl
YXIgaWYgdGhlIHRlc3QgY2FuIG5vdCBwYXNzIHdpdGhvdXQgTGF5b3V0VGVzdENvbnRyb2xsZXIu
CisgICAgICAgIEFsc28gcmVtb3ZlcyBzdXBlcmZsdW91cyBjYWxscyB0byBMYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCksIHdoaWNoIGFyZSBub3cgbWFkZQorICAgICAgICBieSBq
cy10ZXN0LXBvc3QuanMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFj
ay1leGNlcHRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9jYWxsYmFjay1leGNlcHRpb24uanM6CisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qczoKKyAgICAgICAgKiBmYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbm90aW1lci1hZnRlci11bmxvYWQuanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVk
LWFscmVhZHktY2xlYXItd2F0Y2guanM6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktZXJyb3IuanM6CisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFs
cmVhZHktc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtc3RvcHMtd2F0Y2hlcy5qczoKKyAgICAgICAgKiBmYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQuanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bvc2l0aW9uLXN0cmluZy5q
czoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50
LWVycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9y
ZWVudHJhbnQtc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvdGltZW91dC1jbGVhci13YXRjaC5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKwogMjAxMC0wNi0wMSAgUm9iIEJ1
aXMgIDxyd2xidWlzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVs
emUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay1leGNl
cHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2NhbGxiYWNrLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwNTAy
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stZXhjZXB0aW9u
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVT
U0FHRTogbGluZSAyMjogRXJyb3I6IEV4Y2VwdGlvbiBpbiBzdWNjZXNzIGNhbGxiYWNrCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjU6IEVycm9yOiBFeGNlcHRpb24gaW4gc3VjY2VzcyBjYWxsYmFj
awogVGVzdHMgdGhhdCB3aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaW4gdGhlIHN1Y2Nlc3Mg
Y2FsbGJhY2ssIHRoZSBlcnJvciBjYWxsYmFjayBpcyBub3QgaW52b2tlZC4gTm90ZSB0aGF0IHRo
aXMgdGVzdCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoaWNoIGlzIG5vdCBjYXVnaHQuCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9jYWxsYmFjay1leGNlcHRpb24uanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2NhbGxiYWNrLWV4Y2Vw
dGlvbi5qcwkocmV2aXNpb24gNjA1MDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvY2FsbGJhY2stZXhjZXB0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC00LDEwICs0LDEzIEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdp
dHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDA7CiAKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vY2tMb25naXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24odHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24obW9ja0xhdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vY2tMb25naXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK30gZWxzZQorICAgIGRl
YnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRy
b2xsZXInKTsKIAogdmFyIHBvc2l0aW9uOwogbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CkBAIC0yNSw3ICsyOCw1IEBAIG5hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwogCi13
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotCiB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvZXJyb3IuanMJKHJldmlzaW9uIDYwNTAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zLDgg
KzMsMTEgQEAgZGVzY3JpcHRpb24oIlRlc3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbAogdmFyIG1v
Y2tDb2RlID0gMjsKIHZhciBtb2NrTWVzc2FnZSA9ICJkZWJ1ZyI7CiAKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tN
ZXNzYWdlKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNz
YWdlKTsKK30gZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91
dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIAogdmFyIGVycm9yOwogbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CkBAIC0yMCw3ICsyMyw2
IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KICAgICBzaG91bGRC
ZSgnZXJyb3IuVElNRU9VVCcsICczJyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKLXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9tYXhpbXVtLWFnZS5qcwkocmV2aXNpb24gNjA1MDIpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDggKzI1LDExIEBAIGZ1bmN0aW9uIGNoZWNrRXJyb3IoZSkgewogICAgIHNo
b3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiB9CiAKLXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0
dWRlLCBtb2NrTG9uZ2l0dWRlLCBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tMb25naXR1ZGUsIG1vY2tBY2N1cmFjeSk7Cit9
IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExh
eW91dFRlc3RDb250cm9sbGVyJyk7CiAKIC8vIEluaXRpYWxpemUgdGhlIGNhY2hlZCBQb3NpdGlv
bgogbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7
CkBAIC0zOSw3ICs0Miw4IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24KIAogZnVuY3Rpb24gdGVzdFplcm9NYXhpbXVtQWdlKCkgewogICAgIC8vIFVwZGF0ZSB0aGUg
cG9zaXRpb24gcHJvdmlkZWQgYnkgdGhlIG1vY2sgc2VydmljZS4KLSAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUs
ICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKCsrbW9ja0xhdGl0dWRlLCArK21vY2tMb25naXR1ZGUsICsrbW9ja0Fj
Y3VyYWN5KTsKICAgICAvLyBUaGUgZGVmYXVsdCBtYXhpbXVtQWdlIGlzIHplcm8sIHNvIHdlIGV4
cGVjdCB0aGUgdXBkYXRlZCBwb3NpdGlvbiBmcm9tIHRoZSBzZXJ2aWNlLgogICAgIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICBj
aGVja1Bvc2l0aW9uKHApOwpAQCAtNTIsNyArNTYsOCBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGlt
dW1BZ2UoKSB7CiAKIGZ1bmN0aW9uIHRlc3ROb25aZXJvTWF4aW11bUFnZSgpIHsKICAgICAvLyBV
cGRhdGUgdGhlIG1vY2sgc2VydmljZSB0byByZXBvcnQgYW4gZXJyb3IuCi0gICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2Nr
TWVzc2FnZSk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1v
Y2tNZXNzYWdlKTsKICAgICAvLyBUaGUgbWF4aW11bUFnZSBpcyBub24temVybywgc28gd2UgZXhw
ZWN0IHRoZSBjYWNoZWQgcG9zaXRpb24sIG5vdCB0aGUgZXJyb3IgZnJvbSB0aGUgc2VydmljZS4K
ICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHAp
IHsKICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKQEAgLTc0LDcgKzc5LDUgQEAgZnVuY3Rpb24g
dGVzdFplcm9NYXhpbXVtQWdlRXJyb3IoKSB7CiAgICAgfSk7CiB9CiAKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0KIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL25vdGltZXItYWZ0ZXItdW5sb2Fk
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9ub3RpbWVyLWFmdGVyLXVubG9hZC5qcwkocmV2aXNpb24gNjA1MDIpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbm90aW1lci1hZnRlci11
bmxvYWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTE3LDUgKzE3LDMgQEAgZG9jdW1lbnQuYm9keS5v
bnVubG9hZCA9IGZ1bmN0aW9uKCkgewogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3
aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24t
ZGVuaWVkLWFscmVhZHktY2xlYXItd2F0Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVh
ZHktY2xlYXItd2F0Y2guanMJKHJldmlzaW9uIDYwNTAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktY2xl
YXItd2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSwxMSBAQAogZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgd2hlbiBHZW9sb2NhdGlvbiBwZXJtaXNzaW9uIGhhcyBiZWVuIGRlbmllZCBw
cmlvciB0byBhIGNhbGwgdG8gd2F0Y2hQb3NpdGlvbiwgYW5kIHRoZSB3YXRjaCBpcyBjbGVhcmVk
IGluIHRoZSBlcnJvciBjYWxsYmFjaywgdGhlcmUgaXMgbm8gY3Jhc2guIFRoaXMgYSByZWdyZXNz
aW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjEx
MS4iKTsKIAogLy8gUHJpbWUgdGhlIEdlb2xvY2F0aW9uIGluc3RhbmNlIGJ5IGRlbnlpbmcgcGVy
bWlzc2lvbi4KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24oZmFsc2UpOwotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbihmYWxzZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhp
cyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7
CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZnVuY3Rpb24ocCkgewpAQCAtMzEsNyArMzQsNSBAQCBmdW5jdGlvbiBjb250aW51ZVRlc3QoKQog
ICAgIH0pOwogfQogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9u
LWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCShyZXZpc2lvbiA2MDUwMikKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJl
YWR5LWVycm9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsMTEgQEAKIGRlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IHdoZW4gR2VvbG9jYXRpb24gcGVybWlzc2lvbiBoYXMgYmVlbiBkZW5pZWQg
cHJpb3IgdG8gYSBjYWxsIHRvIGEgR2VvbG9jYXRpb24gbWV0aG9kLCB0aGUgZXJyb3IgY2FsbGJh
Y2sgaXMgaW52b2tlZCB3aXRoIGNvZGUgUEVSTUlTU0lPTl9ERU5JRUQsIHdoZW4gdGhlIEdlb2xv
Y2F0aW9uIHNlcnZpY2UgZW5jb3VudGVycyBhbiBlcnJvci4iKTsKIAogLy8gUHJpbWUgdGhlIEdl
b2xvY2F0aW9uIGluc3RhbmNlIGJ5IGRlbnlpbmcgcGVybWlzc2lvbi4KLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAu
MTY2LCAxMDApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4x
NjYsIDEwMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdp
dGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpAQCAtMTksNyAr
MjIsOCBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCiBmdW5jdGlv
biBjb250aW51ZVRlc3QoKQogewogICAgIC8vIE1ha2UgYW5vdGhlciByZXF1ZXN0LCB3aXRoIHBl
cm1pc3Npb24gYWxyZWFkeSBkZW5pZWQuCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKDAsICd0ZXN0Jyk7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoMCwgJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNj
ZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CkBAIC0zMSw3ICszNSw2IEBAIGZ1
bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0pOwog
fQotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVy
bWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1zdWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1h
bHJlYWR5LXN1Y2Nlc3MuanMJKHJldmlzaW9uIDYwNTAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktc3Vj
Y2Vzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDExIEBACiBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCB3aGVuIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gaGFzIGJlZW4gZGVuaWVkIHByaW9y
IHRvIGEgY2FsbCB0byBhIEdlb2xvY2F0aW9uIG1ldGhvZCwgdGhlIGVycm9yIGNhbGxiYWNrIGlz
IGludm9rZWQgd2l0aCBjb2RlIFBFUk1JU1NJT05fREVOSUVELCB3aGVuIHRoZSBHZW9sb2NhdGlv
biBzZXJ2aWNlIGhhcyBhIGdvb2QgcG9zaXRpb24uIik7CiAKIC8vIFByaW1lIHRoZSBHZW9sb2Nh
dGlvbiBpbnN0YW5jZSBieSBkZW55aW5nIHBlcm1pc3Npb24uCi13aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2Niwg
MTAwKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAx
MDApOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiBuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTI5LDcgKzMyLDYg
QEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAg
fSk7CiB9Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCiB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9wZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRjaGVzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmll
ZC1zdG9wcy13YXRjaGVzLmpzCShyZXZpc2lvbiA2MDUwMikKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1zdG9wcy13YXRj
aGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsMTEgQEAgZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgd2hlbiBHZW9sb2NhdGlvbgogCiAvLyBDb25maWd1cmUgdGhlIG1vY2sgR2VvbG9jYXRp
b24gc2VydmljZSB0byByZXBvcnQgYSBwb3NpdGlvbiB0byBjYXVzZSBwZXJtaXNzaW9uCiAvLyB0
byBiZSByZXF1ZXN0ZWQsIHRoZW4gZGVueSBpdC4KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwLjAp
OworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRo
ZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiB2YXIgZXJyb3JDYWxsYmFj
a0ludm9rZWQgPSBmYWxzZTsKQEAgLTIzLDExICsyNiwxMSBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24ud2F0Y2hQb3NpdGlvbihmdW5jCiAKICAgICAvLyBVcGRhdGUgdGhlIG1vY2sgR2VvbG9jYXRp
b24gc2VydmljZSB0byByZXBvcnQgYSBuZXcgcG9zaXRpb24sIHRoZW4KICAgICAvLyB5aWVsZCB0
byBhbGxvdyBhIGNoYW5jZSBmb3IgdGhlIHN1Y2Nlc3MgY2FsbGJhY2sgdG8gYmUgaW52b2tlZC4K
LSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oNTUuNDc4LCAtMC4xNjYsIDEwMCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oNTUuNDc4LCAtMC4xNjYsIDEwMCk7CiAgICAgd2luZG93LnNldFRpbWVvdXQoZmluaXNo
SlNUZXN0LCAwKTsKIH0pOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQu
anMJKHJldmlzaW9uIDYwNTAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBHZW9sb2NhdGlvbiB3aGVuIHBlcm1pc3Npb24g
aXMgZGVuaWVkLCB1c2luZyB0aGUgbW9jayBzZXJ2aWNlLiIpOwogCi13aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2
NiwgMTAwKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2
LCAxMDAuMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdp
dGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpAQCAtMTMsNyAr
MTYsNiBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uCiAgICAgc2hv
dWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOwogICAg
IGZpbmlzaEpTVGVzdCgpOwogfSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9wb3NpdGlvbi1zdHJpbmcuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bvc2l0aW9uLXN0cmluZy5q
cwkocmV2aXNpb24gNjA1MDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvcG9zaXRpb24tc3RyaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0
LDEzIEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0w
LjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAuMDsKIAotd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xv
bmdpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVl
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiht
b2NrTGF0aXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9ja0xvbmdpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworfSBlbHNlCisgICAgZGVidWcoJ1Ro
aXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicp
OwogCiB2YXIgcG9zaXRpb247CiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTIzLDcgKzI2LDYgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbgogICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9r
ZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKLXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvcmVlbnRyYW50LWVycm9yLmpzCShyZXZpc2lvbiA2MDUwMikKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMJKHdv
cmtpbmcgY29weSkKQEAgLTMsOCArMywxMSBAQCBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZWVu
dHJhbnQgY2FsbHMgCiB2YXIgbW9ja0NvZGUgPSAwOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3Qn
OwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KHRydWUpOwotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNh
biBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBl
cnJvcjsKIHZhciBlcnJvckNhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwpAQCAtMjksNyArMzIsOCBA
QCBmdW5jdGlvbiBjb250aW51ZVRlc3QoKSB7CiAgICAgbW9ja0NvZGUgKz0gMTsKICAgICBtb2Nr
TWVzc2FnZSArPSAnIHJlcGVhdCc7CiAKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogCiAgICAg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAg
ICAgICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHkn
KTsKQEAgLTQxLDcgKzQ1LDYgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKICAgICB9KTsKIH0KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1zdWNjZXNzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQt
c3VjY2Vzcy5qcwkocmV2aXNpb24gNjA1MDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LXN1Y2Nlc3MuanMJKHdvcmtpbmcgY29weSkK
QEAgLTQsMTAgKzQsMTMgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9u
Z2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi13aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRp
dHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb2NrTG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uKHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKG1vY2tMYXRpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2NrTG9uZ2l0dWRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7Cit9IGVsc2UKKyAg
ICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RD
b250cm9sbGVyJyk7CiAKIHZhciBwb3NpdGlvbjsKIHZhciBzdWNjZXNzQ2FsbGJhY2tJbnZva2Vk
ID0gZmFsc2U7CkBAIC0zMCw5ICszMywxMCBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uCiB9KTsKIAogZnVuY3Rpb24gY29udGludWVUZXN0KCkgewotICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigrK21vY2tM
YXRpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyttb2NrTG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK21vY2tBY2N1cmFjeSk7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbW9ja0xvbmdp
dHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyttb2NrQWNjdXJhY3kpOwogCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIHBvc2l0aW9uID0gcDsKQEAgLTQ1
LDcgKzQ5LDYgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKICAgICB9KTsKIH0KLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3N1Y2Nlc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3N1Y2Nlc3MuanMJKHJldmlzaW9uIDYwNTAyKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3N1Y2Nlc3Mu
anMJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTMgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUx
LjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEw
MDsKIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihtb2NrTGF0aXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJh
Y3kpOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgcG9zaXRpb247CiBuYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTIwLDcgKzIz
LDYgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbgogICAgIHRlc3RG
YWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNo
SlNUZXN0KCk7CiB9KTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2gu
anMJKHJldmlzaW9uIDYwNTAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3RpbWVvdXQtY2xlYXItd2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw3IEBACiBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIGEgd2F0Y2ggdGltZXMgb3V0
IGFuZCBpcyBjbGVhcmVkIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrLCB0aGVyZSBpcyBubyBjcmFz
aC4gVGhpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMyMTExLiIpOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKIAogdmFyIGVycm9y
OwogdmFyIHdhdGNoSWQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5j
dGlvbigpIHsKQEAgLTE2LDcgKzE3LDYgQEAgdmFyIHdhdGNoSWQgPSBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24ud2F0YwogICAgIHRpbWVvdXQ6IDAKIH0pOwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3
aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LXplcm8uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3RpbWVvdXQt
emVyby5qcwkocmV2aXNpb24gNjA1MDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNyBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiB0aW1lb3V0IGlzIHplcm8gKGFu
ZCBtYXhpbXVtQWdlIGlzIHRvbyksIHRoZSBlcnJvciBjYWxsYmFjayBpcyBjYWxsZWQgaW1tZWRp
YXRlbHkgd2l0aCBjb2RlIFRJTUVPVVQuIik7CiAKLWxheW91dFRlc3RDb250cm9sbGVyLnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7CiAKIHZhciBlcnJvcjsK
IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewpA
QCAtMTQsNyArMTUsNiBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
CiB9LCB7CiAgICAgdGltZW91dDogMAogfSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cu
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzCShyZXZpc2lv
biA2MDUwMikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy90aW1lb3V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEzIEBAIHZhciBtb2NrTGF0
aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNj
dXJhY3kgPSAxMDAuMDsKIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdpdHVkZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJh
Y3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xvbmdp
dHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2NrQWNjdXJhY3kpOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJl
IHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgcG9zaXRpb247
CiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsK
QEAgLTIyLDcgKzI1LDYgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bgogfSwgewogICAgIHRpbWVvdXQ6IDEwMDAKIH0pOwotd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCShyZXZpc2lv
biA2MDUwMikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy93YXRjaC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjUsMTkgKzI1LDI0IEBAIGZ1bmN0aW9uIGNo
ZWNrRXJyb3IoZSkgewogICAgIGRlYnVnKCcnKTsKIH0KIAotd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tM
b25naXR1ZGUsIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRy
dWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KG1vY2tMYXRpdHVkZSwgbW9ja0xvbmdpdHVkZSwgbW9ja0FjY3VyYWN5KTsKK30gZWxzZQorICAg
IGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXInKTsKIAogdmFyIHN0YXRlID0gMDsKIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRj
aFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICBzd2l0Y2ggKHN0YXRlKyspIHsKICAgICAgICAg
Y2FzZSAwOgogICAgICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKLSAgICAgICAgICAgIHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigrK21vY2tM
YXRpdHVkZSwgKyttb2NrTG9uZ2l0dWRlLCArK21vY2tBY2N1cmFjeSk7CisgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKCsrbW9ja0xhdGl0dWRlLCAr
K21vY2tMb25naXR1ZGUsICsrbW9ja0FjY3VyYWN5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIDE6CiAgICAgICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwotICAgICAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tD
b2RlLCBtb2NrTWVzc2FnZSk7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKQEAgLTUxLDE0
ICs1NiwxNCBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jCiAgICAg
c3dpdGNoIChzdGF0ZSsrKSB7CiAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgIGNoZWNrRXJy
b3IoZSk7Ci0gICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2Nr
QWNjdXJhY3kpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbigrK21vY2tMYXRpdHVkZSwgKyttb2NrTG9uZ2l0dWRlLCArK21vY2tBY2N1cmFjeSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9CiB9KTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRv
dy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57856</attachid>
            <date>2010-06-04 02:21:29 -0700</date>
            <delta_ts>2010-06-04 02:24:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39994-20100604102127.patch</filename>
            <type>text/plain</type>
            <size>30000</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYwNjY2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDYtMDQgIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdlb2xvY2F0aW9uIExheW91dFRlc3RzIHNob3VsZCBtYWtlIG1vcmUgY2Fy
ZWZ1bCB1c2Ugb2YgTGF5b3V0VGVzdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTk0CisKKyAgICAgICAgR3VhcmRzIGNhbGxzIHRv
IExheW91dFRlc3RDb250cm9sbGVyIG1ldGhvZHMgd2l0aCAnaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciknCisgICAgICAgIGFuZCBhZGRzIHRlc3Qgb3V0cHV0IHRvIG1ha2UgaXQgY2xl
YXIgaWYgdGhlIHRlc3QgY2FuIG5vdCBwYXNzIHdpdGhvdXQgTGF5b3V0VGVzdENvbnRyb2xsZXIu
CisgICAgICAgIEFsc28gcmVtb3ZlcyBzdXBlcmZsdW91cyBjYWxscyB0byBMYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCksIHdoaWNoIGFyZSBub3cgbWFkZQorICAgICAgICBieSBq
cy10ZXN0LXBvc3QuanMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFj
ay1leGNlcHRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9jYWxsYmFjay1leGNlcHRpb24uanM6CisgICAgICAgICogZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qczoKKyAgICAgICAgKiBmYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbm90aW1lci1hZnRlci11bmxvYWQuanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVk
LWFscmVhZHktY2xlYXItd2F0Y2guanM6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFscmVhZHktZXJyb3IuanM6CisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLWFs
cmVhZHktc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtc3RvcHMtd2F0Y2hlcy5qczoKKyAgICAgICAgKiBmYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQuanM6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bvc2l0aW9uLXN0cmluZy5q
czoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50
LWVycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9y
ZWVudHJhbnQtc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvc3VjY2Vzcy5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvdGltZW91dC1jbGVhci13YXRjaC5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKwogMjAxMC0wNi0wNCAgUWkgWmhh
bmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8g
R29tYm9zLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2st
ZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9jYWxsYmFjay1leGNlcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
MDY2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLWV4Y2Vw
dGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjI6IEVycm9yOiBFeGNlcHRpb24gaW4gc3VjY2VzcyBjYWxsYmFjawor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDI1OiBFcnJvcjogRXhjZXB0aW9uIGluIHN1Y2Nlc3MgY2Fs
bGJhY2sKIFRlc3RzIHRoYXQgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGluIHRoZSBzdWNj
ZXNzIGNhbGxiYWNrLCB0aGUgZXJyb3IgY2FsbGJhY2sgaXMgbm90IGludm9rZWQuIE5vdGUgdGhh
dCB0aGlzIHRlc3QgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGljaCBpcyBub3QgY2F1Z2h0LgogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvY2FsbGJhY2stZXhjZXB0aW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9jYWxsYmFjay1l
eGNlcHRpb24uanMJKHJldmlzaW9uIDYwNjY2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL2NhbGxiYWNrLWV4Y2VwdGlvbi5qcwkod29ya2luZyBjb3B5
KQpAQCAtNCwxNCArNCwxNyBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwogdmFyIG1vY2tM
b25naXR1ZGUgPSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwOwogCi13aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRp
dHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb2NrTG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uKHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKG1vY2tMYXRpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2NrTG9uZ2l0dWRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tBY2N1cmFjeSk7Cit9IGVsc2UKKyAg
ICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RD
b250cm9sbGVyJyk7CiAKIHZhciBwb3NpdGlvbjsKIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewotICAgIHBvc2l0aW9uID0gcAorICAgIHBvc2l0
aW9uID0gcDsKICAgICBzaG91bGRCZSgncG9zaXRpb24uY29vcmRzLmxhdGl0dWRlJywgJ21vY2tM
YXRpdHVkZScpOwogICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlJywgJ21v
Y2tMb25naXR1ZGUnKTsKICAgICBzaG91bGRCZSgncG9zaXRpb24uY29vcmRzLmFjY3VyYWN5Jywg
J21vY2tBY2N1cmFjeScpOwpAQCAtMjUsNyArMjgsNSBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9KTsKIAotd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQogd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vy
cm9yLmpzCShyZXZpc2lvbiA2MDY2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMywxNSArMywxOCBA
QCBkZXNjcmlwdGlvbigiVGVzdHMgR2VvbG9jYXRpb24gZXJyb3IgY2FsCiB2YXIgbW9ja0NvZGUg
PSAyOwogdmFyIG1vY2tNZXNzYWdlID0gImRlYnVnIjsKIAotd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2Up
OworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwor
fSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBM
YXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICB0ZXN0RmFpbGVkKCdTdWNj
ZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNoSlNUZXN0KCk7
CiB9LCBmdW5jdGlvbihlKSB7Ci0gICAgZXJyb3IgPSBlCisgICAgZXJyb3IgPSBlOwogICAgIHNo
b3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tDb2RlJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1l
c3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAgICBzaG91bGRCZSgnZXJyb3IuVU5LTk9XTl9FUlJP
UicsICd1bmRlZmluZWQnKTsKQEAgLTIwLDcgKzIzLDYgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbgogICAgIHNob3VsZEJlKCdlcnJvci5USU1FT1VUJywgJzMnKTsK
ICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCShy
ZXZpc2lvbiA2MDY2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9tYXhpbXVtLWFnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsMTEgQEAg
ZnVuY3Rpb24gY2hlY2tFcnJvcihlKSB7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAn
bW9ja01lc3NhZ2UnKTsKIH0KIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsIG1vY2tMb25naXR1ZGUsIG1vY2tB
Y2N1cmFjeSk7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKG1vY2tMYXRpdHVkZSwg
bW9ja0xvbmdpdHVkZSwgbW9ja0FjY3VyYWN5KTsKK30gZWxzZQorICAgIGRlYnVnKCdUaGlzIHRl
c3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIAog
Ly8gSW5pdGlhbGl6ZSB0aGUgY2FjaGVkIFBvc2l0aW9uCiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKQEAgLTM5LDcgKzQyLDggQEAgbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbgogCiBmdW5jdGlvbiB0ZXN0WmVyb01h
eGltdW1BZ2UoKSB7CiAgICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBwcm92aWRlZCBieSB0aGUg
bW9jayBzZXJ2aWNlLgotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbigrK21vY2tMYXRpdHVkZSwgKyttb2NrTG9uZ2l0dWRlLCArK21vY2tB
Y2N1cmFjeSk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0
aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOwogICAgIC8vIFRoZSBkZWZh
dWx0IG1heGltdW1BZ2UgaXMgemVybywgc28gd2UgZXhwZWN0IHRoZSB1cGRhdGVkIHBvc2l0aW9u
IGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQ
b3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7CkBAIC01Miw3
ICs1Niw4IEBAIGZ1bmN0aW9uIHRlc3RaZXJvTWF4aW11bUFnZSgpIHsKIAogZnVuY3Rpb24gdGVz
dE5vblplcm9NYXhpbXVtQWdlKCkgewogICAgIC8vIFVwZGF0ZSB0aGUgbW9jayBzZXJ2aWNlIHRv
IHJlcG9ydCBhbiBlcnJvci4KLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogICAgIC8vIFRoZSBt
YXhpbXVtQWdlIGlzIG5vbi16ZXJvLCBzbyB3ZSBleHBlY3QgdGhlIGNhY2hlZCBwb3NpdGlvbiwg
bm90IHRoZSBlcnJvciBmcm9tIHRoZSBzZXJ2aWNlLgogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICBjaGVja1Bvc2l0aW9u
KHApOwpAQCAtNzQsNyArNzksNSBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGltdW1BZ2VFcnJvcigp
IHsKICAgICB9KTsKIH0KIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLQogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvbm90aW1lci1hZnRlci11bmxvYWQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL25vdGltZXItYWZ0ZXItdW5s
b2FkLmpzCShyZXZpc2lvbiA2MDY2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9ub3RpbWVyLWFmdGVyLXVubG9hZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTcsNSArMTcsMyBAQCBkb2N1bWVudC5ib2R5Lm9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiAK
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1jbGVhci13YXRj
aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1jbGVhci13YXRjaC5qcwkocmV2aXNp
b24gNjA2NjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1jbGVhci13YXRjaC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSwxNSArMSwxOCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBHZW9sb2Nh
dGlvbiBwZXJtaXNzaW9uIGhhcyBiZWVuIGRlbmllZCBwcmlvciB0byBhIGNhbGwgdG8gd2F0Y2hQ
b3NpdGlvbiwgYW5kIHRoZSB3YXRjaCBpcyBjbGVhcmVkIGluIHRoZSBlcnJvciBjYWxsYmFjaywg
dGhlcmUgaXMgbm8gY3Jhc2guIFRoaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjExMS4iKTsKIAogLy8gUHJpbWUgdGhlIEdl
b2xvY2F0aW9uIGluc3RhbmNlIGJ5IGRlbnlpbmcgcGVybWlzc2lvbi4KLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAu
MTY2LCAxMDApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4x
NjYsIDEwMCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdp
dGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CiAKIHZhciBlcnJvcjsKIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgIHRlc3RG
YWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH0sIGZ1bmN0aW9uKGUpIHsKLSAgICBlcnJvciA9IGUKKyAgICBlcnJvciA9
IGU7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQn
KTsKICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICciVXNlciBkZW5pZWQgR2VvbG9jYXRp
b24iJyk7CiAgICAgZGVidWcoJycpOwpAQCAtMjMsNyArMjYsNyBAQCBmdW5jdGlvbiBjb250aW51
ZVRlc3QoKQogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5l
eHBlY3RlZGx5Jyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0sIGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgZXJyb3IgPSBlCisgICAgICAgIGVycm9yID0gZTsKICAgICAgICAgc2hvdWxk
QmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKICAgICAgICAgc2hv
dWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIicpOwogICAg
ICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCh3YXRjaElkKTsKQEAgLTMxLDcg
KzM0LDUgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkKICAgICB9KTsKIH0KIAotd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQogd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5p
ZWQtYWxyZWFkeS1lcnJvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5q
cwkocmV2aXNpb24gNjA2NjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwxNSArMSwxOCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBHZW9s
b2NhdGlvbiBwZXJtaXNzaW9uIGhhcyBiZWVuIGRlbmllZCBwcmlvciB0byBhIGNhbGwgdG8gYSBH
ZW9sb2NhdGlvbiBtZXRob2QsIHRoZSBlcnJvciBjYWxsYmFjayBpcyBpbnZva2VkIHdpdGggY29k
ZSBQRVJNSVNTSU9OX0RFTklFRCwgd2hlbiB0aGUgR2VvbG9jYXRpb24gc2VydmljZSBlbmNvdW50
ZXJzIGFuIGVycm9yLiIpOwogCiAvLyBQcmltZSB0aGUgR2VvbG9jYXRpb24gaW5zdGFuY2UgYnkg
ZGVueWluZyBwZXJtaXNzaW9uLgotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbihmYWxzZSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMCk7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0wLjE2NiwgMTAwKTsKK30gZWxzZQorICAg
IGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXInKTsKIAogdmFyIGVycm9yOwogbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFj
ayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfSwgZnVuY3Rp
b24oZSkgewotICAgIGVycm9yID0gZQorICAgIGVycm9yID0gZTsKICAgICBzaG91bGRCZSgnZXJy
b3IuY29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcpOwogICAgIHNob3VsZEJlKCdlcnJv
ci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKICAgICBkZWJ1ZygnJyk7
CkBAIC0xOSwxOSArMjIsMTkgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbgogZnVuY3Rpb24gY29udGludWVUZXN0KCkKIHsKICAgICAvLyBNYWtlIGFub3RoZXIgcmVx
dWVzdCwgd2l0aCBwZXJtaXNzaW9uIGFscmVhZHkgZGVuaWVkLgotICAgIHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcigwLCAndGVzdCcpOworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKDAsICd0ZXN0Jyk7CiAKICAgICBuYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICAgICAgdGVz
dEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGVycm9yID0g
ZQorICAgICAgICBlcnJvciA9IGU7CiAgICAgICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vy
cm9yLlBFUk1JU1NJT05fREVOSUVEJyk7CiAgICAgICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdl
JywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CiAgICAgfSk7CiB9Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LXN1Y2Nlc3MuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Np
b24tZGVuaWVkLWFscmVhZHktc3VjY2Vzcy5qcwkocmV2aXNpb24gNjA2NjYpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQt
YWxyZWFkeS1zdWNjZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE4IEBACiBkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIEdlb2xvY2F0aW9uIHBlcm1pc3Npb24gaGFzIGJlZW4g
ZGVuaWVkIHByaW9yIHRvIGEgY2FsbCB0byBhIEdlb2xvY2F0aW9uIG1ldGhvZCwgdGhlIGVycm9y
IGNhbGxiYWNrIGlzIGludm9rZWQgd2l0aCBjb2RlIFBFUk1JU1NJT05fREVOSUVELCB3aGVuIHRo
ZSBHZW9sb2NhdGlvbiBzZXJ2aWNlIGhhcyBhIGdvb2QgcG9zaXRpb24uIik7CiAKIC8vIFByaW1l
IHRoZSBHZW9sb2NhdGlvbiBpbnN0YW5jZSBieSBkZW55aW5nIHBlcm1pc3Npb24uCi13aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsKLXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40
NzgsIC0wLjE2NiwgMTAwKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3
OCwgLTAuMTY2LCAxMDApOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJl
IHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAg
ICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAg
ICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5jdGlvbihlKSB7Ci0gICAgZXJyb3IgPSBlCisgICAg
ZXJyb3IgPSBlOwogICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBFUk1JU1NJT05f
REVOSUVEJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdl
b2xvY2F0aW9uIicpOwogICAgIGRlYnVnKCcnKTsKQEAgLTIzLDEzICsyNiwxMiBAQCBmdW5jdGlv
biBjb250aW51ZVRlc3QoKQogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGlu
dm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0sIGZ1
bmN0aW9uKGUpIHsKLSAgICAgICAgZXJyb3IgPSBlCisgICAgICAgIGVycm9yID0gZTsKICAgICAg
ICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUEVSTUlTU0lPTl9ERU5JRUQnKTsKICAg
ICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9u
IicpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9KTsKIH0KLXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLXN0
b3BzLXdhdGNoZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLXN0b3BzLXdhdGNoZXMuanMJKHJl
dmlzaW9uIDYwNjY2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLXN0b3BzLXdhdGNoZXMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiwxMSBAQCBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIEdlb2xvY2F0aW9u
CiAKIC8vIENvbmZpZ3VyZSB0aGUgbW9jayBHZW9sb2NhdGlvbiBzZXJ2aWNlIHRvIHJlcG9ydCBh
IHBvc2l0aW9uIHRvIGNhdXNlIHBlcm1pc3Npb24KIC8vIHRvIGJlIHJlcXVlc3RlZCwgdGhlbiBk
ZW55IGl0Lgotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbihmYWxzZSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24oZmFsc2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2LCAxMDAuMCk7Cit9IGVsc2UKKyAgICBkZWJ1Zygn
VGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVy
Jyk7CiAKIHZhciBlcnJvcjsKIHZhciBlcnJvckNhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwpAQCAt
MTcsMTcgKzIwLDE3IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGZ1bmMK
ICAgICB9CiAgICAgZXJyb3JDYWxsYmFja0ludm9rZWQgPSB0cnVlOwogCi0gICAgZXJyb3IgPSBl
CisgICAgZXJyb3IgPSBlOwogICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBFUk1J
U1NJT05fREVOSUVEJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnIlVzZXIgZGVu
aWVkIEdlb2xvY2F0aW9uIicpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBtb2NrIEdlb2xvY2F0aW9u
IHNlcnZpY2UgdG8gcmVwb3J0IGEgbmV3IHBvc2l0aW9uLCB0aGVuCiAgICAgLy8geWllbGQgdG8g
YWxsb3cgYSBjaGFuY2UgZm9yIHRoZSBzdWNjZXNzIGNhbGxiYWNrIHRvIGJlIGludm9rZWQuCi0g
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KDU1LjQ3OCwgLTAuMTY2LCAxMDApOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKDU1LjQ3OCwgLTAuMTY2LCAxMDApOwogICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZpbmlzaEpT
VGVzdCwgMCk7CiB9KTsKIAotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Npb24tZGVuaWVkLmpz
CShyZXZpc2lvbiA2MDY2NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Nj
cmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOSAr
MSwyMSBAQAogZGVzY3JpcHRpb24oIlRlc3RzIEdlb2xvY2F0aW9uIHdoZW4gcGVybWlzc2lvbiBp
cyBkZW5pZWQsIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuIik7CiAKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oZmFsc2UpOwotd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKDUxLjQ3OCwgLTAuMTY2
LCAxMDApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihmYWxzZSk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oNTEuNDc4LCAtMC4xNjYs
IDEwMC4wKTsKK30gZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0
aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIAogdmFyIGVycm9yOwogbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgdGVzdEZh
aWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgIGZpbmlz
aEpTVGVzdCgpOwogfSwgZnVuY3Rpb24oZSkgewotICAgIGVycm9yID0gZQorICAgIGVycm9yID0g
ZTsKICAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcp
OwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlv
biInKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0pOwotd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2lu
ZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcG9zaXRpb24tc3RyaW5nLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wb3NpdGlv
bi1zdHJpbmcuanMJKHJldmlzaW9uIDYwNjY2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bvc2l0aW9uLXN0cmluZy5qcwkod29ya2luZyBjb3B5KQpA
QCAtNCwxNSArNCwxOCBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwogdmFyIG1vY2tMb25n
aXR1ZGUgPSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwLjA7CiAKLXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0
dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vY2tMb25naXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24odHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24obW9ja0xhdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2tMb25naXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK30gZWxzZQorICAg
IGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXInKTsKIAogdmFyIHBvc2l0aW9uOwogbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgLy8gc2hvdWxkQmUgY2FuJ3QgdXNlIGxv
Y2FsIHZhcmlhYmxlcyB5ZXQuCi0gICAgcG9zaXRpb24gPSBwCisgICAgcG9zaXRpb24gPSBwOwog
ICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUnLCAnbW9ja0xhdGl0dWRlJyk7
CiAgICAgc2hvdWxkQmUoJ3Bvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUnLCAnbW9ja0xvbmdpdHVk
ZScpOwogICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3knLCAnbW9ja0FjY3Vy
YWN5Jyk7CkBAIC0yMyw3ICsyNiw2IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24KICAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0
ZWRseScpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3
aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50
cmFudC1lcnJvci5qcwkocmV2aXNpb24gNjA2NjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0zLDggKzMsMTEgQEAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcmVlbnRyYW50IGNhbGxz
IAogdmFyIG1vY2tDb2RlID0gMDsKIHZhciBtb2NrTWVzc2FnZSA9ICd0ZXN0JzsKIAotd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29k
ZSwgbW9ja01lc3NhZ2UpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwg
bW9ja01lc3NhZ2UpOworfSBlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1
biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCiB2YXIgZXJyb3I7CiB2YXIg
ZXJyb3JDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKQEAgLTI5LDcgKzMyLDggQEAgZnVuY3Rpb24g
Y29udGludWVUZXN0KCkgewogICAgIG1vY2tDb2RlICs9IDE7CiAgICAgbW9ja01lc3NhZ2UgKz0g
JyByZXBlYXQnOwogCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKIAogICAgIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0
RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CkBAIC00MSw3
ICs0NSw2IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpIHsKICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CiAgICAgfSk7CiB9Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Nj
cmlwdC10ZXN0cy9yZWVudHJhbnQtc3VjY2Vzcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LXN1Y2Nlc3MuanMJ
KHJldmlzaW9uIDYwNjY2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL3JlZW50cmFudC1zdWNjZXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0
LDEzIEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0w
LjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAuMDsKIAotd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLXdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1ZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0xv
bmdpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVl
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiht
b2NrTGF0aXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9ja0xvbmdpdHVkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2NrQWNjdXJhY3kpOworfSBlbHNlCisgICAgZGVidWcoJ1Ro
aXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicp
OwogCiB2YXIgcG9zaXRpb247CiB2YXIgc3VjY2Vzc0NhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwpA
QCAtMzAsOSArMzMsMTAgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bgogfSk7CiAKIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpIHsKLSAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsrbW9ja0xvbmdpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKyttb2NrQWNjdXJhY3kpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKCsrbW9ja0xhdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK21vY2tMb25naXR1ZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbW9j
a0FjY3VyYWN5KTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZnVuY3Rpb24ocCkgewogICAgICAgICBwb3NpdGlvbiA9IHA7CkBAIC00NSw3ICs0OSw2IEBA
IGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpIHsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAg
fSk7CiB9Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCiB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9zdWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9zdWNjZXNzLmpzCShyZXZpc2lvbiA2MDY2NikKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9zdWNjZXNzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC00LDE0ICs0LDE3IEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIg
bW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDA7CiAKLXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9j
a0xhdGl0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vY2tMb25naXR1ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24odHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tMb25naXR1ZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK30gZWxz
ZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0
VGVzdENvbnRyb2xsZXInKTsKIAogdmFyIHBvc2l0aW9uOwogbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7Ci0gICAgcG9zaXRpb24gPSBwCisgICAg
cG9zaXRpb24gPSBwOwogICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUnLCAn
bW9ja0xhdGl0dWRlJyk7CiAgICAgc2hvdWxkQmUoJ3Bvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUn
LCAnbW9ja0xvbmdpdHVkZScpOwogICAgIHNob3VsZEJlKCdwb3NpdGlvbi5jb29yZHMuYWNjdXJh
Y3knLCAnbW9ja0FjY3VyYWN5Jyk7CkBAIC0yMCw3ICsyMyw2IEBAIG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24KICAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBp
bnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfSk7Ci13aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LWNsZWFy
LXdhdGNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy90aW1lb3V0LWNsZWFyLXdhdGNoLmpzCShyZXZpc2lvbiA2MDY2NikKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LWNs
ZWFyLXdhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICsxLDE0IEBACiBkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCB3aGVuIGEgd2F0Y2ggdGltZXMgb3V0IGFuZCBpcyBjbGVhcmVkIGZyb20g
dGhlIGVycm9yIGNhbGxiYWNrLCB0aGVyZSBpcyBubyBjcmFzaC4gVGhpcyBhIHJlZ3Jlc3Npb24g
dGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMTExLiIp
OwogCi13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oNTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
NTEuNDc4LCAtMC4xNjYsIDEwMC4wKTsKIAogdmFyIGVycm9yOwogdmFyIHdhdGNoSWQgPSBuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbigpIHsKICAgICB0ZXN0RmFp
bGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNo
SlNUZXN0KCk7CiB9LCBmdW5jdGlvbihlKSB7Ci0gICAgZXJyb3IgPSBlCisgICAgZXJyb3IgPSBl
OwogICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlRJTUVPVVQnKTsKICAgICBzaG91
bGRCZSgnZXJyb3IubWVzc2FnZScsICciVGltZW91dCBleHBpcmVkIicpOwogICAgIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5jbGVhcldhdGNoKHdhdGNoSWQpOwpAQCAtMTYsNyArMTcsNiBAQCB2YXIg
d2F0Y2hJZCA9IG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjCiAgICAgdGltZW91dDogMAogfSk7
CiAKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Rp
bWVvdXQtemVyby5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC16ZXJvLmpzCShyZXZpc2lvbiA2MDY2NikKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy90aW1lb3V0LXplcm8u
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMjAgKzEsMjAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IHdoZW4gdGltZW91dCBpcyB6ZXJvIChhbmQgbWF4aW11bUFnZSBpcyB0b28pLCB0aGUgZXJy
b3IgY2FsbGJhY2sgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IHdpdGggY29kZSBUSU1FT1VULiIpOwog
Ci1sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40Nzgs
IC0wLjE2NiwgMTAwLjApOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbig1MS40NzgsIC0w
LjE2NiwgMTAwLjApOwogCiB2YXIgZXJyb3I7CiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxi
YWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5j
dGlvbihlKSB7Ci0gICAgZXJyb3IgPSBlCisgICAgZXJyb3IgPSBlOwogICAgIHNob3VsZEJlKCdl
cnJvci5jb2RlJywgJ2Vycm9yLlRJTUVPVVQnKTsKICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2Fn
ZScsICciVGltZW91dCBleHBpcmVkIicpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfSwgewogICAg
IHRpbWVvdXQ6IDAKIH0pOwotd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKIAogd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogd2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvdGltZW91dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC5qcwkocmV2aXNpb24gNjA2NjYpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvdGltZW91dC5q
cwkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMyBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEu
NDc4OwogdmFyIG1vY2tMb25naXR1ZGUgPSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAw
LjA7CiAKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24odHJ1ZSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24obW9ja0xhdGl0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vY2tMb25naXR1ZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3VyYWN5KTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tMb25naXR1ZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja0FjY3Vy
YWN5KTsKK30gZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91
dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIAogdmFyIHBvc2l0aW9uOwogbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CkBAIC0yMiw3ICsy
NSw2IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24KIH0sIHsKICAg
ICB0aW1lb3V0OiAxMDAwCiB9KTsKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CiAKIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHdpbmRvdy5zdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwkocmV2aXNpb24gNjA2NjYpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDE5ICsyNSwyNCBAQCBmdW5jdGlvbiBjaGVja0Vycm9yKGUp
IHsKICAgICBkZWJ1ZygnJyk7CiB9CiAKLXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24obW9ja0xhdGl0dWRlLCBtb2NrTG9uZ2l0dWRlLCBt
b2NrQWNjdXJhY3kpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihtb2NrTGF0aXR1
ZGUsIG1vY2tMb25naXR1ZGUsIG1vY2tBY2N1cmFjeSk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhp
cyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7
CiAKIHZhciBzdGF0ZSA9IDA7CiBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihm
dW5jdGlvbihwKSB7CiAgICAgc3dpdGNoIChzdGF0ZSsrKSB7CiAgICAgICAgIGNhc2UgMDoKICAg
ICAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7Ci0gICAgICAgICAgICB3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKyttb2NrTGF0aXR1ZGUsICsr
bW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbigrK21vY2tMYXRpdHVkZSwgKyttb2NrTG9uZ2l0
dWRlLCArK21vY2tBY2N1cmFjeSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAx
OgogICAgICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKLSAgICAgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01l
c3NhZ2UpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrR2VvbG9jYXRpb25FcnJv
cihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgMzoKICAgICAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7CkBAIC01MSwxNCArNTYsMTQgQEAg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oZnVuYwogICAgIHN3aXRjaCAoc3Rh
dGUrKykgewogICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICBjaGVja0Vycm9yKGUpOwotICAg
ICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKCsrbW9ja0xhdGl0dWRlLCArK21vY2tMb25naXR1ZGUsICsrbW9ja0FjY3VyYWN5KTsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oKytt
b2NrTGF0aXR1ZGUsICsrbW9ja0xvbmdpdHVkZSwgKyttb2NrQWNjdXJhY3kpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdFcnJv
ciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CiAgICAgfQogfSk7Ci13aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB3aW5kb3cuc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="42534"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>