<?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>76132</bug_id>
          
          <creation_ts>2012-01-11 17:15:01 -0800</creation_ts>
          <short_desc>Need a script to run tests in PerformanceTests</short_desc>
          <delta_ts>2012-01-12 14:08:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10266</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>loislo</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>534435</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-11 17:15:01 -0800</bug_when>
    <thetext>We already have perftestsrunner for inspector tests per http://trac.webkit.org/changeset/101618. We should extend this script to be able to run other performance tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534450</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-11 17:33:16 -0800</bug_when>
    <thetext>The change log entry in http://trac.webkit.org/changeset/101618 seems to imply this script is meant to be used by some chromium perf bots. Did that happen already or are we still in the process of improving the script?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534452</commentid>
    <comment_count>2</comment_count>
      <attachid>122142</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-11 17:34:30 -0800</bug_when>
    <thetext>Created attachment 122142
work in progress

With this patch, the script output will look like:

rniwa-macpro:webkit4 rniwa$ Tools/Scripts/run-perf-tests Bindings
Running Bindings/event-target-wrapper.html (1 of 1)
RESULT 1057.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534455</commentid>
    <comment_count>3</comment_count>
      <attachid>122142</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-11 17:38:35 -0800</bug_when>
    <thetext>Comment on attachment 122142
work in progress

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

&gt; Tools/Scripts/run-inspector-perf-tests.py:41
&gt; -    sys.exit(PerfTestsRunner(&apos;inspector&apos;).run())
&gt; +    sys.exit(PerfTestsRunner(&apos;inspector&apos;).run(inspector_tests=True))

Should the inspector have a subclass of PerfTestsRunner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534469</commentid>
    <comment_count>4</comment_count>
      <attachid>122142</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-11 18:04:37 -0800</bug_when>
    <thetext>Comment on attachment 122142
work in progress

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

&gt;&gt; Tools/Scripts/run-inspector-perf-tests.py:41
&gt;&gt; +    sys.exit(PerfTestsRunner(&apos;inspector&apos;).run(inspector_tests=True))
&gt; 
&gt; Should the inspector have a subclass of PerfTestsRunner?

Oops, this change is a left over. Ideally, we should be able to run all perf tests and get the output in the same format so probably not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534667</commentid>
    <comment_count>5</comment_count>
      <attachid>122192</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 02:07:54 -0800</bug_when>
    <thetext>Created attachment 122192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534670</commentid>
    <comment_count>6</comment_count>
      <attachid>122193</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 02:11:41 -0800</bug_when>
    <thetext>Created attachment 122193
Added a change log entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534988</commentid>
    <comment_count>7</comment_count>
      <attachid>122193</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-12 11:12:03 -0800</bug_when>
    <thetext>Comment on attachment 122193
Added a change log entry

What is a Chromium-style test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534992</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 11:14:44 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 122193 [details])
&gt; What is a Chromium-style test?

It&apos;s a test outputs the result that Chromium perf bots can parse natively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535120</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-12 13:41:56 -0800</bug_when>
    <thetext>&gt; It&apos;s a test outputs the result that Chromium perf bots can parse natively.

Is it a good format?  Should we change out PerformanceTests to match?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535122</commentid>
    <comment_count>10</comment_count>
      <attachid>122193</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-12 13:42:59 -0800</bug_when>
    <thetext>Comment on attachment 122193
Added a change log entry

This looks ok.  I wish we didn&apos;t have two different formats to parse, but maybe that&apos;s not super important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535138</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 14:03:07 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; It&apos;s a test outputs the result that Chromium perf bots can parse natively.
&gt; 
&gt; Is it a good format?  Should we change out PerformanceTests to match?

No, it&apos;s actually hideous looks like:
RESULT Bindings: event-target-wrapper= 1033.3 ms

RESULT panel-switch: show-panel-elements= 10 ms
RESULT panel-switch: show-panel-resources= 13 ms
RESULT panel-switch: show-panel-network= 38 ms
RESULT panel-switch: show-panel-scripts= 20 ms
RESULT panel-switch: show-panel-timeline= 12 ms
RESULT panel-switch: show-panel-profiles= 10 ms
RESULT panel-switch: show-panel-audits= 7 ms
RESULT panel-switch: show-panel-console= 13 ms
RESULT heap-delta: show-panel= 0 kB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535144</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 14:08:47 -0800</bug_when>
    <thetext>Committed r104856: &lt;http://trac.webkit.org/changeset/104856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122142</attachid>
            <date>2012-01-11 17:34:30 -0800</date>
            <delta_ts>2012-01-12 02:07:49 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>wip76132</filename>
            <type>text/plain</type>
            <size>7123</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWluc3BlY3Rvci1wZXJmLXRlc3RzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWluc3BlY3Rvci1wZXJmLXRlc3RzLnB5CShyZXZpc2lv
biAxMDQ3NTMpCisrKyBUb29scy9TY3JpcHRzL3J1bi1pbnNwZWN0b3ItcGVyZi10ZXN0cy5weQko
d29ya2luZyBjb3B5KQpAQCAtMzgsNCArMzgsNCBAQAogCiBpZiAnX19tYWluX18nID09IF9fbmFt
ZV9fOgogICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCBmb3JtYXQ9
IiUobWVzc2FnZSlzIikKLSAgICBzeXMuZXhpdChQZXJmVGVzdHNSdW5uZXIoJ2luc3BlY3Rvcicp
LnJ1bigpKQorICAgIHN5cy5leGl0KFBlcmZUZXN0c1J1bm5lcignaW5zcGVjdG9yJykucnVuKGlu
c3BlY3Rvcl90ZXN0cz1UcnVlKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CShyZXZpc2lv
biAxMDQ3NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDggQEAKIAogY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgX3BlcmZfdGVzdHNfYmFzZV9kaXIgPSAn
UGVyZm9ybWFuY2VUZXN0cycKLSAgICBfcmVzdWx0X3JlZ2V4ID0gcmUuY29tcGlsZSgnXlJFU1VM
VCAuKiQnKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBlcmZfdGVzdHNfZGlyLCByZWd1bGFy
X291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRwdXQ9c3lzLnN0ZG91dCwgYXJncz1Ob25l
KToKLSAgICAgICAgc2VsZi5fcGVyZl90ZXN0c19kaXIgPSBwZXJmX3Rlc3RzX2RpcgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRw
dXQ9c3lzLnN0ZG91dCwgYXJncz1Ob25lKToKICAgICAgICAgc2VsZi5fYnVpbGRib3Rfb3V0cHV0
ID0gYnVpbGRib3Rfb3V0cHV0CiAgICAgICAgIHNlbGYuX29wdGlvbnMsIHNlbGYuX2FyZ3MgPSBz
ZWxmLl9wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIHNlbGYuX2hvc3QgPSBIb3N0KCkKQEAgLTc1
LDE1ICs3MywxNyBAQAogICAgICAgICBvcHRpb25fbGlzdCA9IChwZXJmX29wdGlvbl9saXN0ICsg
cHJpbnRfb3B0aW9ucykKICAgICAgICAgcmV0dXJuIG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRp
b25fbGlzdD1vcHRpb25fbGlzdCkucGFyc2VfYXJncyhhcmdzKQogCi0gICAgZGVmIF9jb2xsZWN0
X3Rlc3RzKHNlbGYsIHdlYmtpdF9iYXNlLCBmaWxlc3lzdGVtPU5vbmUpOgorICAgIGRlZiBfYmFz
ZV9kaXIoc2VsZiwgZmlsZXN5c3RlbSk6CisgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4o
d2Via2l0X2Jhc2UsIHNlbGYuX3BlcmZfdGVzdHNfYmFzZV9kaXIpCisKKyAgICBkZWYgX2NvbGxl
Y3RfdGVzdHMoc2VsZiwgYmFzZV9wYXRoLCBmaWxlc3lzdGVtPU5vbmUpOgogICAgICAgICAiIiJS
ZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMgZm91bmQuIiIiCiAKICAgICAgICAgZGVmIF9pc190ZXN0
X2ZpbGUoZmlsZXN5c3RlbSwgZGlybmFtZSwgZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJu
IGZpbGVuYW1lLmVuZHN3aXRoKCcuaHRtbCcpCiAKICAgICAgICAgZmlsZXN5c3RlbSA9IGZpbGVz
eXN0ZW0gb3Igc2VsZi5faG9zdC5maWxlc3lzdGVtCi0gICAgICAgIGJhc2VfZGlyID0gZmlsZXN5
c3RlbS5qb2luKHdlYmtpdF9iYXNlLCBzZWxmLl9wZXJmX3Rlc3RzX2Jhc2VfZGlyLCBzZWxmLl9w
ZXJmX3Rlc3RzX2RpcikKLSAgICAgICAgcmV0dXJuIGZpbmRfZmlsZXMuZmluZChmaWxlc3lzdGVt
LCBiYXNlX2RpciwgcGF0aHM9c2VsZi5fYXJncywgZmlsZV9maWx0ZXI9X2lzX3Rlc3RfZmlsZSkK
KyAgICAgICAgcmV0dXJuIGZpbmRfZmlsZXMuZmluZChmaWxlc3lzdGVtLCBiYXNlX3BhdGgsIHBh
dGhzPXNlbGYuX2FyZ3MsIGZpbGVfZmlsdGVyPV9pc190ZXN0X2ZpbGUpCiAKICAgICBkZWYgcnVu
KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmhlbHBfcHJpbnRpbmc6CkBAIC05OSwx
OCArOTksMjcgQEAKICAgICAgICAgIyBpbiBhIHRyeS9maW5hbGx5IHRvIGVuc3VyZSB0aGF0IHdl
IGNsZWFuIHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgIHVuZXhwZWN0ZWQg
PSAtMQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVz
dHMoc2VsZi5fcG9ydC53ZWJraXRfYmFzZSgpKQotICAgICAgICAgICAgdW5leHBlY3RlZCA9IHNl
bGYuX3J1bl90ZXN0c19zZXQodGVzdHMsIHNlbGYuX3BvcnQpCisgICAgICAgICAgICBiYXNlX3Bh
dGggPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihzZWxmLl9wb3J0LndlYmtpdF9iYXNlKCks
IHNlbGYuX3BlcmZfdGVzdHNfYmFzZV9kaXIpCisgICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2Nv
bGxlY3RfdGVzdHMoYmFzZV9wYXRoKQorICAgICAgICAgICAgdW5leHBlY3RlZCA9IHNlbGYuX3J1
bl90ZXN0c19zZXQodGVzdHMsIHNlbGYuX3BvcnQsIGJhc2VfcGF0aCkKICAgICAgICAgZmluYWxs
eToKICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIuY2xlYW51cCgpCiAKICAgICAgICAgcmV0dXJu
IHVuZXhwZWN0ZWQKIAotICAgIGRlZiBfcnVuX3Rlc3RzX3NldChzZWxmLCB0ZXN0cywgcG9ydCk6
CisgICAgZGVmIF9wcmludF9zdGF0dXMoc2VsZiwgdGVzdHMsIGV4cGVjdGVkLCB1bmV4cGVjdGVk
KToKKyAgICAgICAgaWYgbGVuKHRlc3RzKSA9PSBleHBlY3RlZCArIHVuZXhwZWN0ZWQ6CisgICAg
ICAgICAgICBzdGF0dXMgPSAiUmFuICVkIHRlc3RzIiAlIGxlbih0ZXN0cykKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHN0YXR1cyA9ICJSdW5uaW5nICVkIG9mICVkIHRlc3RzIiAlIChleHBl
Y3RlZCArIHVuZXhwZWN0ZWQgKyAxLCBsZW4odGVzdHMpKQorICAgICAgICBpZiB1bmV4cGVjdGVk
OgorICAgICAgICAgICAgc3RhdHVzICs9ICIgKCVkIGRpZG4ndCBydW4pIiAlIHVuZXhwZWN0ZWQK
KyAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZShzdGF0dXMpCisKKyAgICBkZWYgX3J1bl90ZXN0
c19zZXQoc2VsZiwgdGVzdHMsIHBvcnQsIGJhc2VfcGF0aCk6CiAgICAgICAgIHJlc3VsdF9jb3Vu
dCA9IGxlbih0ZXN0cykKICAgICAgICAgZXhwZWN0ZWQgPSAwCiAgICAgICAgIHVuZXhwZWN0ZWQg
PSAwCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeShyZXN1bHRf
Y291bnQsIDAsIDApCiAgICAgICAgIGRyaXZlcl9uZWVkX3Jlc3RhcnQgPSBGYWxzZQogICAgICAg
ICBkcml2ZXIgPSBOb25lCiAKQEAgLTEyMiwyMSArMTMxLDYyIEBACiAgICAgICAgICAgICBpZiBu
b3QgZHJpdmVyOgogICAgICAgICAgICAgICAgIGRyaXZlciA9IHBvcnQuY3JlYXRlX2RyaXZlcih3
b3JrZXJfbnVtYmVyPTEpCiAKLSAgICAgICAgICAgIHRlc3RfZmFpbGVkLCBkcml2ZXJfbmVlZF9y
ZXN0YXJ0ID0gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3QsIGRyaXZlcikKKyAgICAgICAgICAg
IHJlbGF0aXZlX3Rlc3RfcGF0aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5yZWxwYXRoKHRlc3Qs
IGJhc2VfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoJ1J1bm5pbmcgJXMg
KCVkIG9mICVkKScgJSAocmVsYXRpdmVfdGVzdF9wYXRoLCBleHBlY3RlZCArIHVuZXhwZWN0ZWQg
KyAxLCBsZW4odGVzdHMpKSkKKworICAgICAgICAgICAgaXNfaW5zcGVjdG9yX3Rlc3QgPSBzZWxm
Ll9ob3N0LmZpbGVzeXN0ZW0uc3BsaXQocmVsYXRpdmVfdGVzdF9wYXRoKVswXSA9PSAnSW5zcGVj
dG9yJworICAgICAgICAgICAgdGVzdF9mYWlsZWQsIGRyaXZlcl9uZWVkX3Jlc3RhcnQgPSBzZWxm
Ll9ydW5fc2luZ2xlX3Rlc3QodGVzdCwgZHJpdmVyLCBpc19pbnNwZWN0b3JfdGVzdCkKICAgICAg
ICAgICAgIGlmIHRlc3RfZmFpbGVkOgogICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSB1bmV4
cGVjdGVkICsgMQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBleHBlY3RlZCA9
IGV4cGVjdGVkICsgMQogCi0gICAgICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5l
X3N1bW1hcnkocmVzdWx0X2NvdW50LCBleHBlY3RlZCwgdW5leHBlY3RlZCkKLQogICAgICAgICBp
ZiBkcml2ZXI6CiAgICAgICAgICAgICBkcml2ZXIuc3RvcCgpCiAKICAgICAgICAgcmV0dXJuIHVu
ZXhwZWN0ZWQKIAotICAgIGRlZiBfcnVuX3NpbmdsZV90ZXN0KHNlbGYsIHRlc3QsIGRyaXZlcik6
CisgICAgX2luc3BlY3Rvcl9yZXN1bHRfcmVnZXggPSByZS5jb21waWxlKCdeUkVTVUxUIC4qJCcp
CisgICAgZGVmIF9wYXJzZV9pbnNwZWN0b3JfdGVzdF9yZXN1bHQoc2VsZiwgb3V0cHV0KToKKyAg
ICAgICAgZ290X2FfcmVzdWx0ID0gRmFsc2UKKyAgICAgICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQo
J1xuJywgb3V0cHV0LnRleHQpOgorICAgICAgICAgICAgaWYgc2VsZi5faW5zcGVjdG9yX3Jlc3Vs
dF9yZWdleC5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9idWlsZGJvdF9vdXRw
dXQud3JpdGUoIiVzXG4iICUgbGluZSkKKyAgICAgICAgICAgICAgICBnb3RfYV9yZXN1bHQgPSBU
cnVlCisgICAgICAgICAgICBlbGlmIG5vdCBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgICAg
ICB0ZXN0X2ZhaWxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRl
KCIlcyIgJSBsaW5lKQorICAgICAgICB0ZXN0X2ZhaWxlZCA9IHRlc3RfZmFpbGVkIG9yIG5vdCBn
b3RfYV9yZXN1bHQKKyAgICAgICAgcmV0dXJuIHRlc3RfZmFpbGVkCisKKyAgICBfbGluZXNfdG9f
aWdub3JlX2luX3Jlc3VsdCA9IFsKKyAgICAgICAgcmUuY29tcGlsZShyJ15SdW5uaW5nIFxkKyB0
aW1lcyQnKSwKKyAgICAgICAgcmUuY29tcGlsZShyJ15JZ25vcmluZyB3YXJtLXVwICcpLAorICAg
ICAgICByZS5jb21waWxlKHInXlxkKyQnKSwKKyAgICAgICAgcmUuY29tcGlsZShyJ14obWVkaWFu
fHN0ZGV2fG1pbnxtYXgpXHMrWzAtOVwuXSsnKSwKKyAgICBdCisKKyAgICBkZWYgX3BhcnNlX3Rl
c3RfcmVzdWx0KHNlbGYsIG91dHB1dCk6CisgICAgICAgIGdvdF9hX3Jlc3VsdCA9IEZhbHNlCiAg
ICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKKyAgICAgICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQo
J1xuJywgb3V0cHV0LnRleHQpOgorICAgICAgICAgICAgYXZlcmFnZV9zY29yZSA9IHJlLm1hdGNo
KHInXmF2Z1xzKyhbMC05XC5dKyknLCBsaW5lKQorICAgICAgICAgICAgaWYgYXZlcmFnZV9zY29y
ZToKKyAgICAgICAgICAgICAgICBzZWxmLl9idWlsZGJvdF9vdXRwdXQud3JpdGUoJ1JFU1VMVCAl
c1xuJyAlIGF2ZXJhZ2Vfc2NvcmUuZ3JvdXAoMSkpCisgICAgICAgICAgICAgICAgZ290X2FfcmVz
dWx0ID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBsaW5lOgorICAgICAgICAgICAgICAgIGlnbm9y
ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIHJlZ2V4IGluIHNlbGYuX2xpbmVzX3RvX2ln
bm9yZV9pbl9yZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlZ2V4Lm1hdGNoKGxpbmUp
OgorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID0gVHJ1ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgaWdub3JlOgorICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2ZhaWxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci53cml0ZSgiJXMiICUgbGluZSkKKyAgICAgICAgcmV0dXJuIHRlc3RfZmFpbGVkIG9y
IG5vdCBnb3RfYV9yZXN1bHQKKworICAgIGRlZiBfcnVuX3NpbmdsZV90ZXN0KHNlbGYsIHRlc3Qs
IGRyaXZlciwgaXNfaW5zcGVjdG9yX3Rlc3QpOgorICAgICAgICB0ZXN0X2ZhaWxlZCA9IEZhbHNl
CiAgICAgICAgIGRyaXZlcl9uZWVkX3Jlc3RhcnQgPSBGYWxzZQogICAgICAgICBvdXRwdXQgPSBk
cml2ZXIucnVuX3Rlc3QoRHJpdmVySW5wdXQodGVzdCwgc2VsZi5fb3B0aW9ucy50aW1lX291dF9t
cywgTm9uZSwgRmFsc2UpKQogCkBAIC0xNTEsMTUgKzIwMSwxMCBAQAogICAgICAgICAgICAgZHJp
dmVyX25lZWRfcmVzdGFydCA9IFRydWUKICAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQog
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ290X2FfcmVzdWx0ID0gRmFsc2UKLSAgICAgICAg
ICAgIGZvciBsaW5lIGluIHJlLnNwbGl0KCdcbicsIG91dHB1dC50ZXh0KToKLSAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9yZXN1bHRfcmVnZXgubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2J1aWxkYm90X291dHB1dC53cml0ZSgiJXNcbiIgJSBsaW5lKQotICAgICAgICAg
ICAgICAgICAgICBnb3RfYV9yZXN1bHQgPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxpZiBub3Qg
bGVuKGxpbmUpID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQot
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIlcyIgJSBsaW5lKQotICAg
ICAgICAgICAgdGVzdF9mYWlsZWQgPSB0ZXN0X2ZhaWxlZCBvciBub3QgZ290X2FfcmVzdWx0Cisg
ICAgICAgICAgICBpZiBpc19pbnNwZWN0b3JfdGVzdDoKKyAgICAgICAgICAgICAgICB0ZXN0X2Zh
aWxlZCA9IHNlbGYuX3BhcnNlX2luc3BlY3Rvcl90ZXN0X3Jlc3VsdChvdXRwdXQpCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gc2VsZi5fcGFyc2VfdGVz
dF9yZXN1bHQob3V0cHV0KQogCiAgICAgICAgIGlmIGxlbihvdXRwdXQuZXJyb3IpOgogICAgICAg
ICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgnZXJyb3I6XG4lcycgJSBvdXRwdXQuZXJyb3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122192</attachid>
            <date>2012-01-12 02:07:54 -0800</date>
            <delta_ts>2012-01-12 02:11:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76132-20120112020753.patch</filename>
            <type>text/plain</type>
            <size>17363</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNDc5OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMxIEBACisyMDEyLTAxLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE5lZWQgYSBzY3JpcHQgdG8gcnVuIHRlc3RzIGluIFBlcmZvcm1hbmNlVGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTMyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3J1bi1pbnNwZWN0b3ItcGVyZi10ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1wZXJm
LXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lcik6CisgICAg
ICAgIChQZXJmVGVzdHNSdW5uZXIuX19pbml0X18pOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVy
Ll9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5ydW4pOgorICAgICAg
ICAoUGVyZlRlc3RzUnVubmVyLl9wcmludF9zdGF0dXMpOgorICAgICAgICAoUGVyZlRlc3RzUnVu
bmVyLl9ydW5fdGVzdHNfc2V0KToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcHJvY2Vzc19j
aHJvbWl1bV9zdHlsZV90ZXN0X3Jlc3VsdCk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3No
b3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQpOgorICAgICAgICAoUGVyZlRl
c3RzUnVubmVyLl9wcm9jZXNzX3BhcnNlcl90ZXN0X3Jlc3VsdCk6CisgICAgICAgIChQZXJmVGVz
dHNSdW5uZXIuX3J1bl9zaW5nbGVfdGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChN
YWluVGVzdC5UZXN0RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKGNyZWF0ZV9ydW5uZXIpOgor
ICAgICAgICAocnVuX3Rlc3QpOgorICAgICAgICAodGVzdF9ydW5fdGVzdF9zZXQpOgorICAgICAg
ICAodGVzdF9ydW5fdGVzdF9zZXRfZm9yX3BhcnNlcl90ZXN0cyk6CisgICAgICAgICh0ZXN0X2Nv
bGxlY3RfdGVzdHMpOgorCiAyMDEyLTAxLTEwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IHB1c2ggbW9yZSBsb2dpYyBpbnRvIHdl
YmtpdHB5LnRlc3QubWFpbiwgY2xlYW4gdXAgY29kZQpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4t
aW5zcGVjdG9yLXBlcmYtdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4t
aW5zcGVjdG9yLXBlcmYtdGVzdHMucHkJKHJldmlzaW9uIDEwNDc5MSkKKysrIFRvb2xzL1Njcmlw
dHMvcnVuLWluc3BlY3Rvci1wZXJmLXRlc3RzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw0ICsz
OCw0IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogaWYgJ19fbWFpbl9f
JyA9PSBfX25hbWVfXzoKICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5G
TywgZm9ybWF0PSIlKG1lc3NhZ2UpcyIpCi0gICAgc3lzLmV4aXQoUGVyZlRlc3RzUnVubmVyKCdp
bnNwZWN0b3InKS5ydW4oKSkKKyAgICBzeXMuZXhpdChQZXJmVGVzdHNSdW5uZXIoYXJncz1bJ2lu
c3BlY3RvciddKS5ydW4oKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLXBlcmYtdGVzdHMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tcGVyZi10ZXN0cwkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1NjcmlwdHMvcnVuLXBlcmYtdGVzdHMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlJ1biBwZXJm
b3JtYW5jZSB0ZXN0cy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzeXMKKworZnJvbSB3
ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdHNydW5uZXIgaW1wb3J0IFBlcmZUZXN0
c1J1bm5lcgorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKK2lmICdfX21h
aW5fXycgPT0gX19uYW1lX186CisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5n
LklORk8sIGZvcm1hdD0iJShtZXNzYWdlKXMiKQorICAgIHN5cy5leGl0KFBlcmZUZXN0c1J1bm5l
cigpLnJ1bigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2NyaXB0cy9ydW4tcGVyZi10
ZXN0cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weQkocmV2aXNpb24gMTA0NzkxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEwICs0NCw5IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAog
Y2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgX3BlcmZfdGVzdHNfYmFzZV9kaXIg
PSAnUGVyZm9ybWFuY2VUZXN0cycKLSAgICBfcmVzdWx0X3JlZ2V4ID0gcmUuY29tcGlsZSgnXlJF
U1VMVCAuKiQnKQorICAgIF90ZXN0X2RpcmVjdG9yaWVzX2Zvcl9jaHJvbWl1bV9zdHlsZV90ZXN0
cyA9IFsnaW5zcGVjdG9yJ10KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwZXJmX3Rlc3RzX2Rp
ciwgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5cy5zdGRvdXQs
IGFyZ3M9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3BlcmZfdGVzdHNfZGlyID0gcGVyZl90ZXN0c19k
aXIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVp
bGRib3Rfb3V0cHV0PXN5cy5zdGRvdXQsIGFyZ3M9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2J1aWxk
Ym90X291dHB1dCA9IGJ1aWxkYm90X291dHB1dAogICAgICAgICBzZWxmLl9vcHRpb25zLCBzZWxm
Ll9hcmdzID0gc2VsZi5fcGFyc2VfYXJncyhhcmdzKQogICAgICAgICBzZWxmLl9ob3N0ID0gSG9z
dCgpCkBAIC01NSw2ICs1NCw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAg
ICAgICBzZWxmLl9wb3J0ID0gc2VsZi5faG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHNlbGYuX29wdGlv
bnMucGxhdGZvcm0sIHNlbGYuX29wdGlvbnMpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmlu
dGluZy5QcmludGVyKHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsIHJlZ3VsYXJfb3V0cHV0LCBi
dWlsZGJvdF9vdXRwdXQsIGNvbmZpZ3VyZV9sb2dnaW5nPUZhbHNlKQogICAgICAgICBzZWxmLl93
ZWJraXRfYmFzZV9kaXJfbGVuID0gbGVuKHNlbGYuX3BvcnQud2Via2l0X2Jhc2UoKSkKKyAgICAg
ICAgc2VsZi5fYmFzZV9wYXRoID0gc2VsZi5faG9zdC5maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9y
dC53ZWJraXRfYmFzZSgpLCBzZWxmLl9wZXJmX3Rlc3RzX2Jhc2VfZGlyKQogCiAgICAgZGVmIF9w
YXJzZV9hcmdzKHNlbGYsIGFyZ3M9Tm9uZSk6CiAgICAgICAgIHByaW50X29wdGlvbnMgPSBwcmlu
dGluZy5wcmludF9vcHRpb25zKCkKQEAgLTc1LDE1ICs3NSwxMyBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgb3B0aW9uX2xpc3QgPSAocGVyZl9vcHRpb25fbGlzdCAr
IHByaW50X29wdGlvbnMpCiAgICAgICAgIHJldHVybiBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0
aW9uX2xpc3Q9b3B0aW9uX2xpc3QpLnBhcnNlX2FyZ3MoYXJncykKIAotICAgIGRlZiBfY29sbGVj
dF90ZXN0cyhzZWxmLCB3ZWJraXRfYmFzZSwgZmlsZXN5c3RlbT1Ob25lKToKKyAgICBkZWYgX2Nv
bGxlY3RfdGVzdHMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0cyBm
b3VuZC4iIiIKIAogICAgICAgICBkZWYgX2lzX3Rlc3RfZmlsZShmaWxlc3lzdGVtLCBkaXJuYW1l
LCBmaWxlbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuZW5kc3dpdGgoJy5odG1s
JykKIAotICAgICAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBvciBzZWxmLl9ob3N0LmZpbGVz
eXN0ZW0KLSAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4od2Via2l0X2Jhc2UsIHNl
bGYuX3BlcmZfdGVzdHNfYmFzZV9kaXIsIHNlbGYuX3BlcmZfdGVzdHNfZGlyKQotICAgICAgICBy
ZXR1cm4gZmluZF9maWxlcy5maW5kKGZpbGVzeXN0ZW0sIGJhc2VfZGlyLCBwYXRocz1zZWxmLl9h
cmdzLCBmaWxlX2ZpbHRlcj1faXNfdGVzdF9maWxlKQorICAgICAgICByZXR1cm4gZmluZF9maWxl
cy5maW5kKHNlbGYuX2hvc3QuZmlsZXN5c3RlbSwgc2VsZi5fYmFzZV9wYXRoLCBwYXRocz1zZWxm
Ll9hcmdzLCBmaWxlX2ZpbHRlcj1faXNfdGVzdF9maWxlKQogCiAgICAgZGVmIHJ1bihzZWxmKToK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5oZWxwX3ByaW50aW5nOgpAQCAtOTksMTggKzk3LDI2
IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAjIGluIGEgdHJ5L2Zp
bmFsbHkgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4gdXAgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlv
bi4KICAgICAgICAgdW5leHBlY3RlZCA9IC0xCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRl
c3RzID0gc2VsZi5fY29sbGVjdF90ZXN0cyhzZWxmLl9wb3J0LndlYmtpdF9iYXNlKCkpCisgICAg
ICAgICAgICB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVzdHMoKQogICAgICAgICAgICAgdW5leHBl
Y3RlZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQodGVzdHMsIHNlbGYuX3BvcnQpCiAgICAgICAgIGZp
bmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLmNsZWFudXAoKQogCiAgICAgICAgIHJl
dHVybiB1bmV4cGVjdGVkCiAKKyAgICBkZWYgX3ByaW50X3N0YXR1cyhzZWxmLCB0ZXN0cywgZXhw
ZWN0ZWQsIHVuZXhwZWN0ZWQpOgorICAgICAgICBpZiBsZW4odGVzdHMpID09IGV4cGVjdGVkICsg
dW5leHBlY3RlZDoKKyAgICAgICAgICAgIHN0YXR1cyA9ICJSYW4gJWQgdGVzdHMiICUgbGVuKHRl
c3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RhdHVzID0gIlJ1bm5pbmcgJWQgb2Yg
JWQgdGVzdHMiICUgKGV4cGVjdGVkICsgdW5leHBlY3RlZCArIDEsIGxlbih0ZXN0cykpCisgICAg
ICAgIGlmIHVuZXhwZWN0ZWQ6CisgICAgICAgICAgICBzdGF0dXMgKz0gIiAoJWQgZGlkbid0IHJ1
bikiICUgdW5leHBlY3RlZAorICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKHN0YXR1cykKKwog
ICAgIGRlZiBfcnVuX3Rlc3RzX3NldChzZWxmLCB0ZXN0cywgcG9ydCk6CiAgICAgICAgIHJlc3Vs
dF9jb3VudCA9IGxlbih0ZXN0cykKICAgICAgICAgZXhwZWN0ZWQgPSAwCiAgICAgICAgIHVuZXhw
ZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFyeShy
ZXN1bHRfY291bnQsIDAsIDApCiAgICAgICAgIGRyaXZlcl9uZWVkX3Jlc3RhcnQgPSBGYWxzZQog
ICAgICAgICBkcml2ZXIgPSBOb25lCiAKQEAgLTEyMiwyMCArMTI4LDc3IEBAIGNsYXNzIFBlcmZU
ZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IGRyaXZlcjoKICAgICAgICAg
ICAgICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0xKQogCi0g
ICAgICAgICAgICB0ZXN0X2ZhaWxlZCwgZHJpdmVyX25lZWRfcmVzdGFydCA9IHNlbGYuX3J1bl9z
aW5nbGVfdGVzdCh0ZXN0LCBkcml2ZXIpCisgICAgICAgICAgICByZWxhdGl2ZV90ZXN0X3BhdGgg
PSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ucmVscGF0aCh0ZXN0LCBzZWxmLl9iYXNlX3BhdGgpCisg
ICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCdSdW5uaW5nICVzICglZCBvZiAlZCknICUg
KHJlbGF0aXZlX3Rlc3RfcGF0aCwgZXhwZWN0ZWQgKyB1bmV4cGVjdGVkICsgMSwgbGVuKHRlc3Rz
KSkpCisKKyAgICAgICAgICAgIGlzX2Nocm9taXVtX3N0eWxlID0gc2VsZi5faG9zdC5maWxlc3lz
dGVtLnNwbGl0KHJlbGF0aXZlX3Rlc3RfcGF0aClbMF0gaW4gc2VsZi5fdGVzdF9kaXJlY3Rvcmll
c19mb3JfY2hyb21pdW1fc3R5bGVfdGVzdHMKKyAgICAgICAgICAgIHRlc3RfZmFpbGVkLCBkcml2
ZXJfbmVlZF9yZXN0YXJ0ID0gc2VsZi5fcnVuX3NpbmdsZV90ZXN0KHRlc3QsIGRyaXZlciwgaXNf
Y2hyb21pdW1fc3R5bGUpCiAgICAgICAgICAgICBpZiB0ZXN0X2ZhaWxlZDoKICAgICAgICAgICAg
ICAgICB1bmV4cGVjdGVkID0gdW5leHBlY3RlZCArIDEKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIDEKIAotICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5KHJlc3VsdF9jb3VudCwgZXhwZWN0ZWQsIHVu
ZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCcnKQogCiAgICAgICAg
IGlmIGRyaXZlcjoKICAgICAgICAgICAgIGRyaXZlci5zdG9wKCkKIAogICAgICAgICByZXR1cm4g
dW5leHBlY3RlZAogCi0gICAgZGVmIF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZiwgdGVzdCwgZHJpdmVy
KToKKyAgICBfaW5zcGVjdG9yX3Jlc3VsdF9yZWdleCA9IHJlLmNvbXBpbGUoJ15SRVNVTFQgLiok
JykKKworICAgIGRlZiBfcHJvY2Vzc19jaHJvbWl1bV9zdHlsZV90ZXN0X3Jlc3VsdChzZWxmLCB0
ZXN0LCBvdXRwdXQpOgorICAgICAgICB0ZXN0X2ZhaWxlZCA9IEZhbHNlCisgICAgICAgIGdvdF9h
X3Jlc3VsdCA9IEZhbHNlCisgICAgICAgIGZvciBsaW5lIGluIHJlLnNwbGl0KCdcbicsIG91dHB1
dC50ZXh0KToKKyAgICAgICAgICAgIGlmIHNlbGYuX2luc3BlY3Rvcl9yZXN1bHRfcmVnZXgubWF0
Y2gobGluZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRib3Rfb3V0cHV0LndyaXRlKCIl
c1xuIiAlIGxpbmUpCisgICAgICAgICAgICAgICAgZ290X2FfcmVzdWx0ID0gVHJ1ZQorICAgICAg
ICAgICAgZWxpZiBub3QgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICAgICAgdGVzdF9mYWls
ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiJXMiICUgbGlu
ZSkKKyAgICAgICAgcmV0dXJuIHRlc3RfZmFpbGVkIG9yIG5vdCBnb3RfYV9yZXN1bHQKKworICAg
IF9saW5lc190b19pZ25vcmVfaW5fcGFyc2VyX3Jlc3VsdCA9IFsKKyAgICAgICAgcmUuY29tcGls
ZShyJ15SdW5uaW5nIFxkKyB0aW1lcyQnKSwKKyAgICAgICAgcmUuY29tcGlsZShyJ15JZ25vcmlu
ZyB3YXJtLXVwICcpLAorICAgICAgICByZS5jb21waWxlKHInXlxkKyQnKSwKKyAgICBdCisKKyAg
ICBkZWYgX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQoc2VsZiwgbGlu
ZSk6CisgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgZm9yIHJlZ2V4IGluIHNlbGYuX2xpbmVzX3RvX2lnbm9yZV9pbl9wYXJzZXJfcmVzdWx0Ogor
ICAgICAgICAgICAgaWYgcmVnZXgubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX3Byb2Nlc3NfcGFyc2VyX3Rl
c3RfcmVzdWx0KHNlbGYsIHRlc3QsIG91dHB1dCk6CisgICAgICAgIGdvdF9hX3Jlc3VsdCA9IEZh
bHNlCisgICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKKyAgICAgICAgZmlsZXN5c3RlbSA9IHNl
bGYuX2hvc3QuZmlsZXN5c3RlbQorICAgICAgICBjYXRlZ29yeSwgdGVzdF9uYW1lID0gZmlsZXN5
c3RlbS5zcGxpdChmaWxlc3lzdGVtLnJlbHBhdGgodGVzdCwgc2VsZi5fYmFzZV9wYXRoKSkKKyAg
ICAgICAgdGVzdF9uYW1lID0gZmlsZXN5c3RlbS5zcGxpdGV4dCh0ZXN0X25hbWUpWzBdCisgICAg
ICAgIHJlc3VsdHMgPSB7fQorICAgICAgICBrZXlzID0gWydhdmcnLCAnbWVkaWFuJywgJ3N0ZGV2
JywgJ21pbicsICdtYXgnXQorICAgICAgICBzY29yZV9yZWdleCA9IHJlLmNvbXBpbGUocideKCcg
KyByJ3wnLmpvaW4oa2V5cykgKyByJylccysoWzAtOVwuXSspJykKKyAgICAgICAgZm9yIGxpbmUg
aW4gcmUuc3BsaXQoJ1xuJywgb3V0cHV0LnRleHQpOgorICAgICAgICAgICAgc2NvcmUgPSBzY29y
ZV9yZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgaWYgc2NvcmU6CisgICAgICAgICAgICAg
ICAgcmVzdWx0c1tzY29yZS5ncm91cCgxKV0gPSBzY29yZS5ncm91cCgyKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfaWdub3JlX2xp
bmVfaW5fcGFyc2VyX3Rlc3RfcmVzdWx0KGxpbmUpOgorICAgICAgICAgICAgICAgIHRlc3RfZmFp
bGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiVzIiAlIGxp
bmUpCisKKyAgICAgICAgaWYgdGVzdF9mYWlsZWQgb3Igc2V0KGtleXMpICE9IHNldChyZXN1bHRz
LmtleXMoKSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBzZWxmLl9idWlsZGJv
dF9vdXRwdXQud3JpdGUoJ1JFU1VMVCAlczogJXM9ICVzIG1zXG4nICUgKGNhdGVnb3J5LCB0ZXN0
X25hbWUsIHJlc3VsdHNbJ2F2ZyddKSkKKyAgICAgICAgc2VsZi5fYnVpbGRib3Rfb3V0cHV0Lndy
aXRlKCcsICcuam9pbihbJyVzPSAlcyBtcycgJSAoa2V5LCByZXN1bHRzW2tleV0pIGZvciBrZXkg
aW4ga2V5c1sxOl1dKSArICdcbicpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9y
dW5fc2luZ2xlX3Rlc3Qoc2VsZiwgdGVzdCwgZHJpdmVyLCBpc19jaHJvbWl1bV9zdHlsZSk6CiAg
ICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKICAgICAgICAgZHJpdmVyX25lZWRfcmVzdGFydCA9
IEZhbHNlCiAgICAgICAgIG91dHB1dCA9IGRyaXZlci5ydW5fdGVzdChEcml2ZXJJbnB1dCh0ZXN0
LCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLCBOb25lLCBGYWxzZSkpCkBAIC0xNTEsMTggKzIx
NCwxNiBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIGRyaXZl
cl9uZWVkX3Jlc3RhcnQgPSBUcnVlCiAgICAgICAgICAgICB0ZXN0X2ZhaWxlZCA9IFRydWUKICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGdvdF9hX3Jlc3VsdCA9IEZhbHNlCi0gICAgICAgICAg
ICBmb3IgbGluZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4dCk6Ci0gICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcmVzdWx0X3JlZ2V4Lm1hdGNoKGxpbmUpOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9idWlsZGJvdF9vdXRwdXQud3JpdGUoIiVzXG4iICUgbGluZSkKLSAgICAgICAgICAg
ICAgICAgICAgZ290X2FfcmVzdWx0ID0gVHJ1ZQotICAgICAgICAgICAgICAgIGVsaWYgbm90IGxl
bihsaW5lKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZhaWxlZCA9IFRydWUKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiJXMiICUgbGluZSkKLSAgICAg
ICAgICAgIHRlc3RfZmFpbGVkID0gdGVzdF9mYWlsZWQgb3Igbm90IGdvdF9hX3Jlc3VsdAorICAg
ICAgICAgICAgaWYgaXNfY2hyb21pdW1fc3R5bGU6CisgICAgICAgICAgICAgICAgdGVzdF9mYWls
ZWQgPSBzZWxmLl9wcm9jZXNzX2Nocm9taXVtX3N0eWxlX3Rlc3RfcmVzdWx0KHRlc3QsIG91dHB1
dCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGVzdF9mYWlsZWQgPSBzZWxm
Ll9wcm9jZXNzX3BhcnNlcl90ZXN0X3Jlc3VsdCh0ZXN0LCBvdXRwdXQpCiAKICAgICAgICAgaWYg
bGVuKG91dHB1dC5lcnJvcik6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCdlcnJv
cjpcbiVzJyAlIG91dHB1dC5lcnJvcikKICAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQog
CisgICAgICAgIGlmIHRlc3RfZmFpbGVkOgorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0
ZSgnRkFJTEVEJykKKwogICAgICAgICByZXR1cm4gdGVzdF9mYWlsZWQsIGRyaXZlcl9uZWVkX3Jl
c3RhcnQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAxMDQ3OTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYgKzQ4
LDU2IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHRl
eHQgPSAnJwogICAgICAgICAgICAgdGltZW91dCA9IEZhbHNlCiAgICAgICAgICAgICBjcmFzaCA9
IEZhbHNlCi0gICAgICAgICAgICBpZiBkcml2ZXJfaW5wdXQudGVzdF9uYW1lID09ICdwYXNzLmh0
bWwnOgorICAgICAgICAgICAgaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgncGFz
cy5odG1sJyk6CiAgICAgICAgICAgICAgICAgdGV4dCA9ICdSRVNVTFQgZ3JvdXBfbmFtZTogdGVz
dF9uYW1lPSA0MiBtcycKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSA9
PSAndGltZW91dC5odG1sJzoKKyAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFt
ZS5lbmRzd2l0aCgndGltZW91dC5odG1sJyk6CiAgICAgICAgICAgICAgICAgdGltZW91dCA9IFRy
dWUKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSA9PSAnZmFpbGVkLmh0
bWwnOgorICAgICAgICAgICAgZWxpZiBkcml2ZXJfaW5wdXQudGVzdF9uYW1lLmVuZHN3aXRoKCdm
YWlsZWQuaHRtbCcpOgogICAgICAgICAgICAgICAgIHRleHQgPSBOb25lCi0gICAgICAgICAgICBl
bGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUgPT0gJ3Rvbmd1ZXkuaHRtbCc6CisgICAgICAgICAg
ICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ3Rvbmd1ZXkuaHRtbCcpOgog
ICAgICAgICAgICAgICAgIHRleHQgPSAnd2UgYXJlIG5vdCBleHBlY3RpbmcgYW4gb3V0cHV0IGZy
b20gcGVyZiB0ZXN0cyBidXQgUkVTVUxUIGJsYWJsYWJsYScKLSAgICAgICAgICAgIGVsaWYgZHJp
dmVyX2lucHV0LnRlc3RfbmFtZSA9PSAnY3Jhc2guaHRtbCc6CisgICAgICAgICAgICBlbGlmIGRy
aXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2NyYXNoLmh0bWwnKToKICAgICAgICAgICAg
ICAgICBjcmFzaCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFt
ZS5lbmRzd2l0aCgnZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCcpOgorICAgICAgICAgICAgICAg
IHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCitJZ25vcmluZyB3YXJtLXVwIHJ1biAoMTUwMikK
KzE1MDQKKzE1MDUKKzE1MTAKKzE1MDQKKzE1MDcKKzE1MDkKKzE1MTAKKzE0ODcKKzE0ODgKKzE0
NzIKKzE0NzIKKzE0ODgKKzE0NzMKKzE0NzIKKzE0NzUKKzE0ODcKKzE0ODYKKzE0ODYKKzE0NzUK
KzE0NzEKKworYXZnIDE0ODkuMDUKK21lZGlhbiAxNDg3CitzdGRldiAxNC40NgorbWluIDE0NzEK
K21heCAxNTEwCisiIiIKKyAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5l
bmRzd2l0aCgnc29tZS1wYXJzZXIuaHRtbCcpOgorICAgICAgICAgICAgICAgIHRleHQgPSAiIiJS
dW5uaW5nIDIwIHRpbWVzCitJZ25vcmluZyB3YXJtLXVwIHJ1biAoMTExNSkKKworYXZnIDExMDAK
K21lZGlhbiAxMTAxCitzdGRldiAxMQorbWluIDEwODAKK21heCAxMTIwCisiIiIKICAgICAgICAg
ICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgJycsICcnLCAnJywgY3Jhc2g9Y3Jhc2gsIHRp
bWVvdXQ9dGltZW91dCkKIAogICAgICAgICBkZWYgc3RvcChzZWxmKToKQEAgLTY2LDEyICsxMDYs
MTIgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjcmVhdGVf
cnVubmVyKHNlbGYsIGJ1aWxkYm90X291dHB1dD1Ob25lKToKICAgICAgICAgYnVpbGRib3Rfb3V0
cHV0ID0gYnVpbGRib3Rfb3V0cHV0IG9yIGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAg
ICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKLSAgICAgICAg
cmV0dXJuIFBlcmZUZXN0c1J1bm5lcignJywgcmVndWxhcl9vdXRwdXQsIGJ1aWxkYm90X291dHB1
dCwgYXJncz1bXSkKKyAgICAgICAgcmV0dXJuIFBlcmZUZXN0c1J1bm5lcihyZWd1bGFyX291dHB1
dCwgYnVpbGRib3Rfb3V0cHV0LCBhcmdzPVtdKQogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHRl
c3RfbmFtZSk6CiAgICAgICAgIHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5lcigpCiAgICAgICAg
IGRyaXZlciA9IE1haW5UZXN0LlRlc3REcml2ZXIoKQotICAgICAgICByZXR1cm4gcnVubmVyLl9y
dW5fc2luZ2xlX3Rlc3QodGVzdF9uYW1lLCBkcml2ZXIpCisgICAgICAgIHJldHVybiBydW5uZXIu
X3J1bl9zaW5nbGVfdGVzdCh0ZXN0X25hbWUsIGRyaXZlciwgaXNfY2hyb21pdW1fc3R5bGU9VHJ1
ZSkKIAogICAgIGRlZiB0ZXN0X3J1bl9wYXNzaW5nX3Rlc3Qoc2VsZik6CiAgICAgICAgIHRlc3Rf
ZmFpbGVkLCBkcml2ZXJfbmVlZF9yZXN0YXJ0ID0gc2VsZi5ydW5fdGVzdCgncGFzcy5odG1sJykK
QEAgLTEwNiwyMCArMTQ2LDM4IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXQoc2VsZik6CiAgICAgICAgIGJ1aWxkYm90X291dHB1
dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAgICAgIHJ1bm5lciA9IHNlbGYuY3Jl
YXRlX3J1bm5lcihidWlsZGJvdF9vdXRwdXQpCisgICAgICAgIHJ1bm5lci5fYmFzZV9wYXRoID0g
Jy90ZXN0LmNoZWNrb3V0L1BlcmZvcm1hbmNlVGVzdHMnCiAgICAgICAgIHBvcnQgPSBNYWluVGVz
dC5UZXN0UG9ydCgpCi0gICAgICAgIHRlc3RzID0gWydwYXNzLmh0bWwnLCAnc2lsZW50Lmh0bWwn
LCAnZmFpbGVkLmh0bWwnLCAndG9uZ3VleS5odG1sJywgJ3RpbWVvdXQuaHRtbCcsICdjcmFzaC5o
dG1sJ10KKyAgICAgICAgZGlybmFtZSA9IHJ1bm5lci5fYmFzZV9wYXRoICsgJy9pbnNwZWN0b3Iv
JworICAgICAgICB0ZXN0cyA9IFtkaXJuYW1lICsgJ3Bhc3MuaHRtbCcsIGRpcm5hbWUgKyAnc2ls
ZW50Lmh0bWwnLCBkaXJuYW1lICsgJ2ZhaWxlZC5odG1sJywKKyAgICAgICAgICAgIGRpcm5hbWUg
KyAndG9uZ3VleS5odG1sJywgZGlybmFtZSArICd0aW1lb3V0Lmh0bWwnLCBkaXJuYW1lICsgJ2Ny
YXNoLmh0bWwnXQogICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9jb3VudCA9IHJ1bm5lci5fcnVu
X3Rlc3RzX3NldCh0ZXN0cywgcG9ydCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmV4cGVj
dGVkX3Jlc3VsdF9jb3VudCwgbGVuKHRlc3RzKSAtIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGJ1aWxkYm90X291dHB1dC5nZXQoKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVpbGRib3Rfb3V0cHV0LmdldCgpWzBdLCAnUkVTVUxUIGdyb3VwX25hbWU6IHRlc3RfbmFt
ZT0gNDIgbXNcbicpCiAKKyAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXRfZm9yX3BhcnNlcl90ZXN0
cyhzZWxmKToKKyAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3Ry
ZWFtKCkKKyAgICAgICAgcnVubmVyID0gc2VsZi5jcmVhdGVfcnVubmVyKGJ1aWxkYm90X291dHB1
dCkKKyAgICAgICAgcnVubmVyLl9iYXNlX3BhdGggPSAnL3Rlc3QuY2hlY2tvdXQvUGVyZm9ybWFu
Y2VUZXN0cy8nCisgICAgICAgIHBvcnQgPSBNYWluVGVzdC5UZXN0UG9ydCgpCisgICAgICAgIHRl
c3RzID0gW3J1bm5lci5fYmFzZV9wYXRoICsgJ0JpbmRpbmdzL2V2ZW50LXRhcmdldC13cmFwcGVy
Lmh0bWwnLCBydW5uZXIuX2Jhc2VfcGF0aCArICdQYXJzZXIvc29tZS1wYXJzZXIuaHRtbCddCisg
ICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gcnVubmVyLl9ydW5fdGVzdHNfc2V0KHRl
c3RzLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuZXhwZWN0ZWRfcmVzdWx0X2Nv
dW50LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkYm90X291dHB1dC5nZXQoKVsw
XSwgJ1JFU1VMVCBCaW5kaW5nczogZXZlbnQtdGFyZ2V0LXdyYXBwZXI9IDE0ODkuMDUgbXNcbicp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0cHV0LmdldCgpWzFdLCAnbWVk
aWFuPSAxNDg3IG1zLCBzdGRldj0gMTQuNDYgbXMsIG1pbj0gMTQ3MSBtcywgbWF4PSAxNTEwIG1z
XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkYm90X291dHB1dC5nZXQoKVsyXSwg
J1JFU1VMVCBQYXJzZXI6IHNvbWUtcGFyc2VyPSAxMTAwIG1zXG4nKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1aWxkYm90X291dHB1dC5nZXQoKVszXSwgJ21lZGlhbj0gMTEwMSBtcywgc3Rk
ZXY9IDExIG1zLCBtaW49IDEwODAgbXMsIG1heD0gMTEyMCBtc1xuJykKKwogICAgIGRlZiB0ZXN0
X2NvbGxlY3RfdGVzdHMoc2VsZik6CiAgICAgICAgIHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5l
cigpCi0gICAgICAgIHdlYmtpdF9iYXNlID0gJy90ZXN0LmNoZWNrb3V0JworICAgICAgICBydW5u
ZXIuX2Jhc2VfcGF0aCA9ICcvdGVzdC5jaGVja291dC9QZXJmb3JtYW5jZVRlc3RzJwogICAgICAg
ICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAgICBmaWxlbmFtZSA9IGZpbGVz
eXN0ZW0uam9pbih3ZWJraXRfYmFzZSwgJ1BlcmZvcm1hbmNlVGVzdHMnLCAnYV9maWxlLmh0bWwn
KQorICAgICAgICBmaWxlbmFtZSA9IGZpbGVzeXN0ZW0uam9pbihydW5uZXIuX2Jhc2VfcGF0aCwg
J2luc3BlY3RvcicsICdhX2ZpbGUuaHRtbCcpCisgICAgICAgIGZpbGVzeXN0ZW0ubWF5YmVfbWFr
ZV9kaXJlY3RvcnkocnVubmVyLl9iYXNlX3BhdGgsICdpbnNwZWN0b3InKQogICAgICAgICBmaWxl
c3lzdGVtLmZpbGVzW2ZpbGVuYW1lXSA9ICdhIGNvbnRlbnQnCi0gICAgICAgIHRlc3RzID0gcnVu
bmVyLl9jb2xsZWN0X3Rlc3RzKHdlYmtpdF9iYXNlLCBmaWxlc3lzdGVtKQorICAgICAgICBydW5u
ZXIuX2hvc3QuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KKyAgICAgICAgdGVzdHMgPSBydW5uZXIu
X2NvbGxlY3RfdGVzdHMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXN0cyksIDEp
CiAKICAgICBkZWYgdGVzdF9wYXJzZV9hcmdzKHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122193</attachid>
            <date>2012-01-12 02:11:41 -0800</date>
            <delta_ts>2012-01-12 13:42:59 -0800</delta_ts>
            <desc>Added a change log entry</desc>
            <filename>bug-76132-20120112021140.patch</filename>
            <type>text/plain</type>
            <size>17723</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNDc5OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM3IEBACisyMDEyLTAxLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIE5lZWQgYSBzY3JpcHQgdG8gcnVuIHRlc3RzIGluIFBlcmZvcm1hbmNlVGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTMyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHJ1bi1w
ZXJmLXRlc3RzIHRvIHJ1biBwZXJmb3JtYW5jZSB0ZXN0cyB1c2luZyBwYXJzZXIvcmVzb3VyY2Vz
L3J1bm5lci5qcy4KKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhlcmUgaXNuJ3QgYW4gZWFzeSB3
YXkgb2YgdGVsbGluZyB3aGljaCB0ZXN0IHVzZXMgd2hpY2ggZm9ybWF0CisgICAgICAgIHNvIGhh
cmQtY29kZSBkaXJlY3RvcnkgdGhhdCB1c2VzIENocm9taXVtIHBlcmYtYm90IHN0eWxlIChvbmx5
IGluc3BlY3RvciBwZXJmLiB0ZXN0cyBmb3Igbm93KS4KKworICAgICAgICBBbGwgdGVzdCBvdXRw
dXRzIGFyZSByZS1mb3JtYXR0ZWQgdG8gbWF0Y2ggQ2hyb21pdW0gcGVyZi1ib3Qgc3R5bGUuCisK
KyAgICAgICAgKiBTY3JpcHRzL3J1bi1pbnNwZWN0b3ItcGVyZi10ZXN0cy5weToKKyAgICAgICAg
KiBTY3JpcHRzL3J1bi1wZXJmLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBlcmZU
ZXN0c1J1bm5lcik6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX19pbml0X18pOgorICAgICAg
ICAoUGVyZlRlc3RzUnVubmVyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAgKFBlcmZUZXN0c1J1
bm5lci5ydW4pOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9wcmludF9zdGF0dXMpOgorICAg
ICAgICAoUGVyZlRlc3RzUnVubmVyLl9ydW5fdGVzdHNfc2V0KToKKyAgICAgICAgKFBlcmZUZXN0
c1J1bm5lci5fcHJvY2Vzc19jaHJvbWl1bV9zdHlsZV90ZXN0X3Jlc3VsdCk6CisgICAgICAgIChQ
ZXJmVGVzdHNSdW5uZXIuX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9yZXN1bHQp
OgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9wcm9jZXNzX3BhcnNlcl90ZXN0X3Jlc3VsdCk6
CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3J1bl9zaW5nbGVfdGVzdCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRl
c3QucHk6CisgICAgICAgIChNYWluVGVzdC5UZXN0RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAg
KGNyZWF0ZV9ydW5uZXIpOgorICAgICAgICAocnVuX3Rlc3QpOgorICAgICAgICAodGVzdF9ydW5f
dGVzdF9zZXQpOgorICAgICAgICAodGVzdF9ydW5fdGVzdF9zZXRfZm9yX3BhcnNlcl90ZXN0cyk6
CisgICAgICAgICh0ZXN0X2NvbGxlY3RfdGVzdHMpOgorCiAyMDEyLTAxLTEwICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IHB1c2gg
bW9yZSBsb2dpYyBpbnRvIHdlYmtpdHB5LnRlc3QubWFpbiwgY2xlYW4gdXAgY29kZQpJbmRleDog
VG9vbHMvU2NyaXB0cy9ydW4taW5zcGVjdG9yLXBlcmYtdGVzdHMucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9ydW4taW5zcGVjdG9yLXBlcmYtdGVzdHMucHkJKHJldmlzaW9uIDEwNDc5
MSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWluc3BlY3Rvci1wZXJmLXRlc3RzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw0ICszOCw0IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogaWYgJ19fbWFpbl9fJyA9PSBfX25hbWVfXzoKICAgICBsb2dnaW5nLmJhc2ljQ29uZmln
KGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSIlKG1lc3NhZ2UpcyIpCi0gICAgc3lzLmV4aXQo
UGVyZlRlc3RzUnVubmVyKCdpbnNwZWN0b3InKS5ydW4oKSkKKyAgICBzeXMuZXhpdChQZXJmVGVz
dHNSdW5uZXIoYXJncz1bJ2luc3BlY3RvciddKS5ydW4oKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLXBlcmYtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tcGVyZi10ZXN0
cwkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXBlcmYtdGVzdHMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyIiIlJ1biBwZXJmb3JtYW5jZSB0ZXN0cy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdHNydW5u
ZXIgaW1wb3J0IFBlcmZUZXN0c1J1bm5lcgorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCisKK2lmICdfX21haW5fXycgPT0gX19uYW1lX186CisgICAgbG9nZ2luZy5iYXNpY0Nv
bmZpZyhsZXZlbD1sb2dnaW5nLklORk8sIGZvcm1hdD0iJShtZXNzYWdlKXMiKQorICAgIHN5cy5l
eGl0KFBlcmZUZXN0c1J1bm5lcigpLnJ1bigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
U2NyaXB0cy9ydW4tcGVyZi10ZXN0cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQog
ICArICoKCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bl
cmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQkocmV2aXNpb24gMTA0NzkxKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw5IEBAIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgX3Bl
cmZfdGVzdHNfYmFzZV9kaXIgPSAnUGVyZm9ybWFuY2VUZXN0cycKLSAgICBfcmVzdWx0X3JlZ2V4
ID0gcmUuY29tcGlsZSgnXlJFU1VMVCAuKiQnKQorICAgIF90ZXN0X2RpcmVjdG9yaWVzX2Zvcl9j
aHJvbWl1bV9zdHlsZV90ZXN0cyA9IFsnaW5zcGVjdG9yJ10KIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwZXJmX3Rlc3RzX2RpciwgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rf
b3V0cHV0PXN5cy5zdGRvdXQsIGFyZ3M9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3BlcmZfdGVzdHNf
ZGlyID0gcGVyZl90ZXN0c19kaXIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVndWxhcl9vdXRw
dXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5cy5zdGRvdXQsIGFyZ3M9Tm9uZSk6CiAg
ICAgICAgIHNlbGYuX2J1aWxkYm90X291dHB1dCA9IGJ1aWxkYm90X291dHB1dAogICAgICAgICBz
ZWxmLl9vcHRpb25zLCBzZWxmLl9hcmdzID0gc2VsZi5fcGFyc2VfYXJncyhhcmdzKQogICAgICAg
ICBzZWxmLl9ob3N0ID0gSG9zdCgpCkBAIC01NSw2ICs1NCw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1
bm5lcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wb3J0ID0gc2VsZi5faG9zdC5wb3J0X2ZhY3Rv
cnkuZ2V0KHNlbGYuX29wdGlvbnMucGxhdGZvcm0sIHNlbGYuX29wdGlvbnMpCiAgICAgICAgIHNl
bGYuX3ByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMs
IHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQsIGNvbmZpZ3VyZV9sb2dnaW5nPUZhbHNl
KQogICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXJfbGVuID0gbGVuKHNlbGYuX3BvcnQud2Vi
a2l0X2Jhc2UoKSkKKyAgICAgICAgc2VsZi5fYmFzZV9wYXRoID0gc2VsZi5faG9zdC5maWxlc3lz
dGVtLmpvaW4oc2VsZi5fcG9ydC53ZWJraXRfYmFzZSgpLCBzZWxmLl9wZXJmX3Rlc3RzX2Jhc2Vf
ZGlyKQogCiAgICAgZGVmIF9wYXJzZV9hcmdzKHNlbGYsIGFyZ3M9Tm9uZSk6CiAgICAgICAgIHBy
aW50X29wdGlvbnMgPSBwcmludGluZy5wcmludF9vcHRpb25zKCkKQEAgLTc1LDE1ICs3NSwxMyBA
QCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgb3B0aW9uX2xpc3QgPSAo
cGVyZl9vcHRpb25fbGlzdCArIHByaW50X29wdGlvbnMpCiAgICAgICAgIHJldHVybiBvcHRwYXJz
ZS5PcHRpb25QYXJzZXIob3B0aW9uX2xpc3Q9b3B0aW9uX2xpc3QpLnBhcnNlX2FyZ3MoYXJncykK
IAotICAgIGRlZiBfY29sbGVjdF90ZXN0cyhzZWxmLCB3ZWJraXRfYmFzZSwgZmlsZXN5c3RlbT1O
b25lKToKKyAgICBkZWYgX2NvbGxlY3RfdGVzdHMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0
aGUgbGlzdCBvZiB0ZXN0cyBmb3VuZC4iIiIKIAogICAgICAgICBkZWYgX2lzX3Rlc3RfZmlsZShm
aWxlc3lzdGVtLCBkaXJuYW1lLCBmaWxlbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5h
bWUuZW5kc3dpdGgoJy5odG1sJykKIAotICAgICAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3RlbSBv
ciBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0KLSAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpv
aW4od2Via2l0X2Jhc2UsIHNlbGYuX3BlcmZfdGVzdHNfYmFzZV9kaXIsIHNlbGYuX3BlcmZfdGVz
dHNfZGlyKQotICAgICAgICByZXR1cm4gZmluZF9maWxlcy5maW5kKGZpbGVzeXN0ZW0sIGJhc2Vf
ZGlyLCBwYXRocz1zZWxmLl9hcmdzLCBmaWxlX2ZpbHRlcj1faXNfdGVzdF9maWxlKQorICAgICAg
ICByZXR1cm4gZmluZF9maWxlcy5maW5kKHNlbGYuX2hvc3QuZmlsZXN5c3RlbSwgc2VsZi5fYmFz
ZV9wYXRoLCBwYXRocz1zZWxmLl9hcmdzLCBmaWxlX2ZpbHRlcj1faXNfdGVzdF9maWxlKQogCiAg
ICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5oZWxwX3ByaW50aW5n
OgpAQCAtOTksMTggKzk3LDI2IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAg
ICAgICAjIGluIGEgdHJ5L2ZpbmFsbHkgdG8gZW5zdXJlIHRoYXQgd2UgY2xlYW4gdXAgdGhlIGxv
Z2dpbmcgY29uZmlndXJhdGlvbi4KICAgICAgICAgdW5leHBlY3RlZCA9IC0xCiAgICAgICAgIHRy
eToKLSAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fY29sbGVjdF90ZXN0cyhzZWxmLl9wb3J0Lndl
YmtpdF9iYXNlKCkpCisgICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2NvbGxlY3RfdGVzdHMoKQog
ICAgICAgICAgICAgdW5leHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0c19zZXQodGVzdHMsIHNlbGYu
X3BvcnQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLmNsZWFu
dXAoKQogCiAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkCiAKKyAgICBkZWYgX3ByaW50X3N0YXR1
cyhzZWxmLCB0ZXN0cywgZXhwZWN0ZWQsIHVuZXhwZWN0ZWQpOgorICAgICAgICBpZiBsZW4odGVz
dHMpID09IGV4cGVjdGVkICsgdW5leHBlY3RlZDoKKyAgICAgICAgICAgIHN0YXR1cyA9ICJSYW4g
JWQgdGVzdHMiICUgbGVuKHRlc3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RhdHVz
ID0gIlJ1bm5pbmcgJWQgb2YgJWQgdGVzdHMiICUgKGV4cGVjdGVkICsgdW5leHBlY3RlZCArIDEs
IGxlbih0ZXN0cykpCisgICAgICAgIGlmIHVuZXhwZWN0ZWQ6CisgICAgICAgICAgICBzdGF0dXMg
Kz0gIiAoJWQgZGlkbid0IHJ1bikiICUgdW5leHBlY3RlZAorICAgICAgICBzZWxmLl9wcmludGVy
LndyaXRlKHN0YXR1cykKKwogICAgIGRlZiBfcnVuX3Rlc3RzX3NldChzZWxmLCB0ZXN0cywgcG9y
dCk6CiAgICAgICAgIHJlc3VsdF9jb3VudCA9IGxlbih0ZXN0cykKICAgICAgICAgZXhwZWN0ZWQg
PSAwCiAgICAgICAgIHVuZXhwZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRf
b25lX2xpbmVfc3VtbWFyeShyZXN1bHRfY291bnQsIDAsIDApCiAgICAgICAgIGRyaXZlcl9uZWVk
X3Jlc3RhcnQgPSBGYWxzZQogICAgICAgICBkcml2ZXIgPSBOb25lCiAKQEAgLTEyMiwyMCArMTI4
LDc3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90
IGRyaXZlcjoKICAgICAgICAgICAgICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2ZXIod29y
a2VyX251bWJlcj0xKQogCi0gICAgICAgICAgICB0ZXN0X2ZhaWxlZCwgZHJpdmVyX25lZWRfcmVz
dGFydCA9IHNlbGYuX3J1bl9zaW5nbGVfdGVzdCh0ZXN0LCBkcml2ZXIpCisgICAgICAgICAgICBy
ZWxhdGl2ZV90ZXN0X3BhdGggPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ucmVscGF0aCh0ZXN0LCBz
ZWxmLl9iYXNlX3BhdGgpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCdSdW5uaW5n
ICVzICglZCBvZiAlZCknICUgKHJlbGF0aXZlX3Rlc3RfcGF0aCwgZXhwZWN0ZWQgKyB1bmV4cGVj
dGVkICsgMSwgbGVuKHRlc3RzKSkpCisKKyAgICAgICAgICAgIGlzX2Nocm9taXVtX3N0eWxlID0g
c2VsZi5faG9zdC5maWxlc3lzdGVtLnNwbGl0KHJlbGF0aXZlX3Rlc3RfcGF0aClbMF0gaW4gc2Vs
Zi5fdGVzdF9kaXJlY3Rvcmllc19mb3JfY2hyb21pdW1fc3R5bGVfdGVzdHMKKyAgICAgICAgICAg
IHRlc3RfZmFpbGVkLCBkcml2ZXJfbmVlZF9yZXN0YXJ0ID0gc2VsZi5fcnVuX3NpbmdsZV90ZXN0
KHRlc3QsIGRyaXZlciwgaXNfY2hyb21pdW1fc3R5bGUpCiAgICAgICAgICAgICBpZiB0ZXN0X2Zh
aWxlZDoKICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkID0gdW5leHBlY3RlZCArIDEKICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIDEKIAot
ICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5KHJlc3VsdF9j
b3VudCwgZXhwZWN0ZWQsIHVuZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLl9wcmludGVyLndy
aXRlKCcnKQogCiAgICAgICAgIGlmIGRyaXZlcjoKICAgICAgICAgICAgIGRyaXZlci5zdG9wKCkK
IAogICAgICAgICByZXR1cm4gdW5leHBlY3RlZAogCi0gICAgZGVmIF9ydW5fc2luZ2xlX3Rlc3Qo
c2VsZiwgdGVzdCwgZHJpdmVyKToKKyAgICBfaW5zcGVjdG9yX3Jlc3VsdF9yZWdleCA9IHJlLmNv
bXBpbGUoJ15SRVNVTFQgLiokJykKKworICAgIGRlZiBfcHJvY2Vzc19jaHJvbWl1bV9zdHlsZV90
ZXN0X3Jlc3VsdChzZWxmLCB0ZXN0LCBvdXRwdXQpOgorICAgICAgICB0ZXN0X2ZhaWxlZCA9IEZh
bHNlCisgICAgICAgIGdvdF9hX3Jlc3VsdCA9IEZhbHNlCisgICAgICAgIGZvciBsaW5lIGluIHJl
LnNwbGl0KCdcbicsIG91dHB1dC50ZXh0KToKKyAgICAgICAgICAgIGlmIHNlbGYuX2luc3BlY3Rv
cl9yZXN1bHRfcmVnZXgubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRi
b3Rfb3V0cHV0LndyaXRlKCIlc1xuIiAlIGxpbmUpCisgICAgICAgICAgICAgICAgZ290X2FfcmVz
dWx0ID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBub3QgbGVuKGxpbmUpID09IDA6CisgICAgICAg
ICAgICAgICAgdGVzdF9mYWlsZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRl
ci53cml0ZSgiJXMiICUgbGluZSkKKyAgICAgICAgcmV0dXJuIHRlc3RfZmFpbGVkIG9yIG5vdCBn
b3RfYV9yZXN1bHQKKworICAgIF9saW5lc190b19pZ25vcmVfaW5fcGFyc2VyX3Jlc3VsdCA9IFsK
KyAgICAgICAgcmUuY29tcGlsZShyJ15SdW5uaW5nIFxkKyB0aW1lcyQnKSwKKyAgICAgICAgcmUu
Y29tcGlsZShyJ15JZ25vcmluZyB3YXJtLXVwICcpLAorICAgICAgICByZS5jb21waWxlKHInXlxk
KyQnKSwKKyAgICBdCisKKyAgICBkZWYgX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVz
dF9yZXN1bHQoc2VsZiwgbGluZSk6CisgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAg
cmV0dXJuIFRydWUKKyAgICAgICAgZm9yIHJlZ2V4IGluIHNlbGYuX2xpbmVzX3RvX2lnbm9yZV9p
bl9wYXJzZXJfcmVzdWx0OgorICAgICAgICAgICAgaWYgcmVnZXgubWF0Y2gobGluZSk6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
X3Byb2Nlc3NfcGFyc2VyX3Rlc3RfcmVzdWx0KHNlbGYsIHRlc3QsIG91dHB1dCk6CisgICAgICAg
IGdvdF9hX3Jlc3VsdCA9IEZhbHNlCisgICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKKyAgICAg
ICAgZmlsZXN5c3RlbSA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbQorICAgICAgICBjYXRlZ29yeSwg
dGVzdF9uYW1lID0gZmlsZXN5c3RlbS5zcGxpdChmaWxlc3lzdGVtLnJlbHBhdGgodGVzdCwgc2Vs
Zi5fYmFzZV9wYXRoKSkKKyAgICAgICAgdGVzdF9uYW1lID0gZmlsZXN5c3RlbS5zcGxpdGV4dCh0
ZXN0X25hbWUpWzBdCisgICAgICAgIHJlc3VsdHMgPSB7fQorICAgICAgICBrZXlzID0gWydhdmcn
LCAnbWVkaWFuJywgJ3N0ZGV2JywgJ21pbicsICdtYXgnXQorICAgICAgICBzY29yZV9yZWdleCA9
IHJlLmNvbXBpbGUocideKCcgKyByJ3wnLmpvaW4oa2V5cykgKyByJylccysoWzAtOVwuXSspJykK
KyAgICAgICAgZm9yIGxpbmUgaW4gcmUuc3BsaXQoJ1xuJywgb3V0cHV0LnRleHQpOgorICAgICAg
ICAgICAgc2NvcmUgPSBzY29yZV9yZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgaWYgc2Nv
cmU6CisgICAgICAgICAgICAgICAgcmVzdWx0c1tzY29yZS5ncm91cCgxKV0gPSBzY29yZS5ncm91
cCgyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9zaG91bGRfaWdub3JlX2xpbmVfaW5fcGFyc2VyX3Rlc3RfcmVzdWx0KGxpbmUpOgorICAgICAg
ICAgICAgICAgIHRlc3RfZmFpbGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50
ZXIud3JpdGUoIiVzIiAlIGxpbmUpCisKKyAgICAgICAgaWYgdGVzdF9mYWlsZWQgb3Igc2V0KGtl
eXMpICE9IHNldChyZXN1bHRzLmtleXMoKSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAg
ICAgICBzZWxmLl9idWlsZGJvdF9vdXRwdXQud3JpdGUoJ1JFU1VMVCAlczogJXM9ICVzIG1zXG4n
ICUgKGNhdGVnb3J5LCB0ZXN0X25hbWUsIHJlc3VsdHNbJ2F2ZyddKSkKKyAgICAgICAgc2VsZi5f
YnVpbGRib3Rfb3V0cHV0LndyaXRlKCcsICcuam9pbihbJyVzPSAlcyBtcycgJSAoa2V5LCByZXN1
bHRzW2tleV0pIGZvciBrZXkgaW4ga2V5c1sxOl1dKSArICdcbicpCisgICAgICAgIHJldHVybiBG
YWxzZQorCisgICAgZGVmIF9ydW5fc2luZ2xlX3Rlc3Qoc2VsZiwgdGVzdCwgZHJpdmVyLCBpc19j
aHJvbWl1bV9zdHlsZSk6CiAgICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKICAgICAgICAgZHJp
dmVyX25lZWRfcmVzdGFydCA9IEZhbHNlCiAgICAgICAgIG91dHB1dCA9IGRyaXZlci5ydW5fdGVz
dChEcml2ZXJJbnB1dCh0ZXN0LCBzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLCBOb25lLCBGYWxz
ZSkpCkBAIC0xNTEsMTggKzIxNCwxNiBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToK
ICAgICAgICAgICAgIGRyaXZlcl9uZWVkX3Jlc3RhcnQgPSBUcnVlCiAgICAgICAgICAgICB0ZXN0
X2ZhaWxlZCA9IFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdvdF9hX3Jlc3VsdCA9
IEZhbHNlCi0gICAgICAgICAgICBmb3IgbGluZSBpbiByZS5zcGxpdCgnXG4nLCBvdXRwdXQudGV4
dCk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fcmVzdWx0X3JlZ2V4Lm1hdGNoKGxpbmUpOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWlsZGJvdF9vdXRwdXQud3JpdGUoIiVzXG4iICUg
bGluZSkKLSAgICAgICAgICAgICAgICAgICAgZ290X2FfcmVzdWx0ID0gVHJ1ZQotICAgICAgICAg
ICAgICAgIGVsaWYgbm90IGxlbihsaW5lKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICB0ZXN0
X2ZhaWxlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgi
JXMiICUgbGluZSkKLSAgICAgICAgICAgIHRlc3RfZmFpbGVkID0gdGVzdF9mYWlsZWQgb3Igbm90
IGdvdF9hX3Jlc3VsdAorICAgICAgICAgICAgaWYgaXNfY2hyb21pdW1fc3R5bGU6CisgICAgICAg
ICAgICAgICAgdGVzdF9mYWlsZWQgPSBzZWxmLl9wcm9jZXNzX2Nocm9taXVtX3N0eWxlX3Rlc3Rf
cmVzdWx0KHRlc3QsIG91dHB1dCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
dGVzdF9mYWlsZWQgPSBzZWxmLl9wcm9jZXNzX3BhcnNlcl90ZXN0X3Jlc3VsdCh0ZXN0LCBvdXRw
dXQpCiAKICAgICAgICAgaWYgbGVuKG91dHB1dC5lcnJvcik6CiAgICAgICAgICAgICBzZWxmLl9w
cmludGVyLndyaXRlKCdlcnJvcjpcbiVzJyAlIG91dHB1dC5lcnJvcikKICAgICAgICAgICAgIHRl
c3RfZmFpbGVkID0gVHJ1ZQogCisgICAgICAgIGlmIHRlc3RfZmFpbGVkOgorICAgICAgICAgICAg
c2VsZi5fcHJpbnRlci53cml0ZSgnRkFJTEVEJykKKwogICAgICAgICByZXR1cm4gdGVzdF9mYWls
ZWQsIGRyaXZlcl9uZWVkX3Jlc3RhcnQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMDQ3OTEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtNDgsMTYgKzQ4LDU2IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgICAgIHRleHQgPSAnJwogICAgICAgICAgICAgdGltZW91dCA9IEZhbHNlCiAg
ICAgICAgICAgICBjcmFzaCA9IEZhbHNlCi0gICAgICAgICAgICBpZiBkcml2ZXJfaW5wdXQudGVz
dF9uYW1lID09ICdwYXNzLmh0bWwnOgorICAgICAgICAgICAgaWYgZHJpdmVyX2lucHV0LnRlc3Rf
bmFtZS5lbmRzd2l0aCgncGFzcy5odG1sJyk6CiAgICAgICAgICAgICAgICAgdGV4dCA9ICdSRVNV
TFQgZ3JvdXBfbmFtZTogdGVzdF9uYW1lPSA0MiBtcycKLSAgICAgICAgICAgIGVsaWYgZHJpdmVy
X2lucHV0LnRlc3RfbmFtZSA9PSAndGltZW91dC5odG1sJzoKKyAgICAgICAgICAgIGVsaWYgZHJp
dmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgndGltZW91dC5odG1sJyk6CiAgICAgICAgICAg
ICAgICAgdGltZW91dCA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3Rf
bmFtZSA9PSAnZmFpbGVkLmh0bWwnOgorICAgICAgICAgICAgZWxpZiBkcml2ZXJfaW5wdXQudGVz
dF9uYW1lLmVuZHN3aXRoKCdmYWlsZWQuaHRtbCcpOgogICAgICAgICAgICAgICAgIHRleHQgPSBO
b25lCi0gICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUgPT0gJ3Rvbmd1ZXku
aHRtbCc6CisgICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgo
J3Rvbmd1ZXkuaHRtbCcpOgogICAgICAgICAgICAgICAgIHRleHQgPSAnd2UgYXJlIG5vdCBleHBl
Y3RpbmcgYW4gb3V0cHV0IGZyb20gcGVyZiB0ZXN0cyBidXQgUkVTVUxUIGJsYWJsYWJsYScKLSAg
ICAgICAgICAgIGVsaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZSA9PSAnY3Jhc2guaHRtbCc6Cisg
ICAgICAgICAgICBlbGlmIGRyaXZlcl9pbnB1dC50ZXN0X25hbWUuZW5kc3dpdGgoJ2NyYXNoLmh0
bWwnKToKICAgICAgICAgICAgICAgICBjcmFzaCA9IFRydWUKKyAgICAgICAgICAgIGVsaWYgZHJp
dmVyX2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRtbCcp
OgorICAgICAgICAgICAgICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCitJZ25vcmluZyB3
YXJtLXVwIHJ1biAoMTUwMikKKzE1MDQKKzE1MDUKKzE1MTAKKzE1MDQKKzE1MDcKKzE1MDkKKzE1
MTAKKzE0ODcKKzE0ODgKKzE0NzIKKzE0NzIKKzE0ODgKKzE0NzMKKzE0NzIKKzE0NzUKKzE0ODcK
KzE0ODYKKzE0ODYKKzE0NzUKKzE0NzEKKworYXZnIDE0ODkuMDUKK21lZGlhbiAxNDg3CitzdGRl
diAxNC40NgorbWluIDE0NzEKK21heCAxNTEwCisiIiIKKyAgICAgICAgICAgIGVsaWYgZHJpdmVy
X2lucHV0LnRlc3RfbmFtZS5lbmRzd2l0aCgnc29tZS1wYXJzZXIuaHRtbCcpOgorICAgICAgICAg
ICAgICAgIHRleHQgPSAiIiJSdW5uaW5nIDIwIHRpbWVzCitJZ25vcmluZyB3YXJtLXVwIHJ1biAo
MTExNSkKKworYXZnIDExMDAKK21lZGlhbiAxMTAxCitzdGRldiAxMQorbWluIDEwODAKK21heCAx
MTIwCisiIiIKICAgICAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgJycsICcnLCAn
JywgY3Jhc2g9Y3Jhc2gsIHRpbWVvdXQ9dGltZW91dCkKIAogICAgICAgICBkZWYgc3RvcChzZWxm
KToKQEAgLTY2LDEyICsxMDYsMTIgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiBjcmVhdGVfcnVubmVyKHNlbGYsIGJ1aWxkYm90X291dHB1dD1Ob25lKToKICAg
ICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYnVpbGRib3Rfb3V0cHV0IG9yIGFycmF5X3N0cmVhbS5B
cnJheVN0cmVhbSgpCiAgICAgICAgIHJlZ3VsYXJfb3V0cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5
U3RyZWFtKCkKLSAgICAgICAgcmV0dXJuIFBlcmZUZXN0c1J1bm5lcignJywgcmVndWxhcl9vdXRw
dXQsIGJ1aWxkYm90X291dHB1dCwgYXJncz1bXSkKKyAgICAgICAgcmV0dXJuIFBlcmZUZXN0c1J1
bm5lcihyZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBhcmdzPVtdKQogCiAgICAgZGVm
IHJ1bl90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6CiAgICAgICAgIHJ1bm5lciA9IHNlbGYuY3JlYXRl
X3J1bm5lcigpCiAgICAgICAgIGRyaXZlciA9IE1haW5UZXN0LlRlc3REcml2ZXIoKQotICAgICAg
ICByZXR1cm4gcnVubmVyLl9ydW5fc2luZ2xlX3Rlc3QodGVzdF9uYW1lLCBkcml2ZXIpCisgICAg
ICAgIHJldHVybiBydW5uZXIuX3J1bl9zaW5nbGVfdGVzdCh0ZXN0X25hbWUsIGRyaXZlciwgaXNf
Y2hyb21pdW1fc3R5bGU9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3J1bl9wYXNzaW5nX3Rlc3Qoc2Vs
Zik6CiAgICAgICAgIHRlc3RfZmFpbGVkLCBkcml2ZXJfbmVlZF9yZXN0YXJ0ID0gc2VsZi5ydW5f
dGVzdCgncGFzcy5odG1sJykKQEAgLTEwNiwyMCArMTQ2LDM4IEBAIGNsYXNzIE1haW5UZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9ydW5fdGVzdF9zZXQoc2VsZik6CiAgICAg
ICAgIGJ1aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCiAgICAgICAg
IHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5lcihidWlsZGJvdF9vdXRwdXQpCisgICAgICAgIHJ1
bm5lci5fYmFzZV9wYXRoID0gJy90ZXN0LmNoZWNrb3V0L1BlcmZvcm1hbmNlVGVzdHMnCiAgICAg
ICAgIHBvcnQgPSBNYWluVGVzdC5UZXN0UG9ydCgpCi0gICAgICAgIHRlc3RzID0gWydwYXNzLmh0
bWwnLCAnc2lsZW50Lmh0bWwnLCAnZmFpbGVkLmh0bWwnLCAndG9uZ3VleS5odG1sJywgJ3RpbWVv
dXQuaHRtbCcsICdjcmFzaC5odG1sJ10KKyAgICAgICAgZGlybmFtZSA9IHJ1bm5lci5fYmFzZV9w
YXRoICsgJy9pbnNwZWN0b3IvJworICAgICAgICB0ZXN0cyA9IFtkaXJuYW1lICsgJ3Bhc3MuaHRt
bCcsIGRpcm5hbWUgKyAnc2lsZW50Lmh0bWwnLCBkaXJuYW1lICsgJ2ZhaWxlZC5odG1sJywKKyAg
ICAgICAgICAgIGRpcm5hbWUgKyAndG9uZ3VleS5odG1sJywgZGlybmFtZSArICd0aW1lb3V0Lmh0
bWwnLCBkaXJuYW1lICsgJ2NyYXNoLmh0bWwnXQogICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCA9IHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cywgcG9ydCkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCh1bmV4cGVjdGVkX3Jlc3VsdF9jb3VudCwgbGVuKHRlc3RzKSAtIDEpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1aWxkYm90X291dHB1dC5nZXQoKSksIDEpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0cHV0LmdldCgpWzBdLCAnUkVTVUxUIGdy
b3VwX25hbWU6IHRlc3RfbmFtZT0gNDIgbXNcbicpCiAKKyAgICBkZWYgdGVzdF9ydW5fdGVzdF9z
ZXRfZm9yX3BhcnNlcl90ZXN0cyhzZWxmKToKKyAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gYXJy
YXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAgcnVubmVyID0gc2VsZi5jcmVhdGVfcnVu
bmVyKGJ1aWxkYm90X291dHB1dCkKKyAgICAgICAgcnVubmVyLl9iYXNlX3BhdGggPSAnL3Rlc3Qu
Y2hlY2tvdXQvUGVyZm9ybWFuY2VUZXN0cy8nCisgICAgICAgIHBvcnQgPSBNYWluVGVzdC5UZXN0
UG9ydCgpCisgICAgICAgIHRlc3RzID0gW3J1bm5lci5fYmFzZV9wYXRoICsgJ0JpbmRpbmdzL2V2
ZW50LXRhcmdldC13cmFwcGVyLmh0bWwnLCBydW5uZXIuX2Jhc2VfcGF0aCArICdQYXJzZXIvc29t
ZS1wYXJzZXIuaHRtbCddCisgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gcnVubmVy
Ll9ydW5fdGVzdHNfc2V0KHRlc3RzLCBwb3J0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVu
ZXhwZWN0ZWRfcmVzdWx0X2NvdW50LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxk
Ym90X291dHB1dC5nZXQoKVswXSwgJ1JFU1VMVCBCaW5kaW5nczogZXZlbnQtdGFyZ2V0LXdyYXBw
ZXI9IDE0ODkuMDUgbXNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRib3Rfb3V0
cHV0LmdldCgpWzFdLCAnbWVkaWFuPSAxNDg3IG1zLCBzdGRldj0gMTQuNDYgbXMsIG1pbj0gMTQ3
MSBtcywgbWF4PSAxNTEwIG1zXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkYm90
X291dHB1dC5nZXQoKVsyXSwgJ1JFU1VMVCBQYXJzZXI6IHNvbWUtcGFyc2VyPSAxMTAwIG1zXG4n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkYm90X291dHB1dC5nZXQoKVszXSwgJ21l
ZGlhbj0gMTEwMSBtcywgc3RkZXY9IDExIG1zLCBtaW49IDEwODAgbXMsIG1heD0gMTEyMCBtc1xu
JykKKwogICAgIGRlZiB0ZXN0X2NvbGxlY3RfdGVzdHMoc2VsZik6CiAgICAgICAgIHJ1bm5lciA9
IHNlbGYuY3JlYXRlX3J1bm5lcigpCi0gICAgICAgIHdlYmtpdF9iYXNlID0gJy90ZXN0LmNoZWNr
b3V0JworICAgICAgICBydW5uZXIuX2Jhc2VfcGF0aCA9ICcvdGVzdC5jaGVja291dC9QZXJmb3Jt
YW5jZVRlc3RzJwogICAgICAgICBmaWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQotICAgICAg
ICBmaWxlbmFtZSA9IGZpbGVzeXN0ZW0uam9pbih3ZWJraXRfYmFzZSwgJ1BlcmZvcm1hbmNlVGVz
dHMnLCAnYV9maWxlLmh0bWwnKQorICAgICAgICBmaWxlbmFtZSA9IGZpbGVzeXN0ZW0uam9pbihy
dW5uZXIuX2Jhc2VfcGF0aCwgJ2luc3BlY3RvcicsICdhX2ZpbGUuaHRtbCcpCisgICAgICAgIGZp
bGVzeXN0ZW0ubWF5YmVfbWFrZV9kaXJlY3RvcnkocnVubmVyLl9iYXNlX3BhdGgsICdpbnNwZWN0
b3InKQogICAgICAgICBmaWxlc3lzdGVtLmZpbGVzW2ZpbGVuYW1lXSA9ICdhIGNvbnRlbnQnCi0g
ICAgICAgIHRlc3RzID0gcnVubmVyLl9jb2xsZWN0X3Rlc3RzKHdlYmtpdF9iYXNlLCBmaWxlc3lz
dGVtKQorICAgICAgICBydW5uZXIuX2hvc3QuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KKyAgICAg
ICAgdGVzdHMgPSBydW5uZXIuX2NvbGxlY3RfdGVzdHMoKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbih0ZXN0cyksIDEpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9hcmdzKHNlbGYpOgo=
</data>
<flag name="review"
          id="122931"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>