<?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>43519</bug_id>
          
          <creation_ts>2010-08-04 16:27:33 -0700</creation_ts>
          <short_desc>Upload incremental webkit test results json to server</short_desc>
          <delta_ts>2010-08-05 14:40:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Victor Wang">victorw</reporter>
          <assigned_to name="Victor Wang">victorw</assigned_to>
          <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260269</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-04 16:27:33 -0700</bug_when>
    <thetext>Currently, run_webkit_tests merges the test results for the current run with the archived results.json and uploads the full results.json to test-results server. To improve the performance, we should only upload the incremental test results and let the server handle the merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260271</commentid>
    <comment_count>1</comment_count>
      <attachid>63510</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-04 16:32:32 -0700</bug_when>
    <thetext>Created attachment 63510
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260707</commentid>
    <comment_count>2</comment_count>
      <attachid>63510</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-05 11:10:39 -0700</bug_when>
    <thetext>Comment on attachment 63510
Proposed Patch

Looks good. Please make the changes below and feel free to commit.

&gt; +        # Generate the JSON output file that has full results.
&gt;          if not self._json:
&gt;              self._json = self.get_json()
&gt;          if self._json:
&gt; -            # Specify separators in order to get compact encoding.
&gt; -            json_data = simplejson.dumps(self._json, separators=(&apos;,&apos;, &apos;:&apos;))
&gt; -            json_string = self.JSON_PREFIX + json_data + self.JSON_SUFFIX
&gt; -
&gt; -            results_file = codecs.open(self._results_file_path, &quot;w&quot;, &quot;utf-8&quot;)
&gt; -            results_file.write(json_string)
&gt; -            results_file.close()
&gt; +            self._generate_json_file(self._json, self._results_file_path)
&gt; +
&gt; +        # Generate the JSON output file that only has incremental results.
&gt; +        if self._generate_incremental_results:
&gt; +            json = self.get_json(incremental=True)
&gt; +            if json:
&gt; +                self._generate_json_file(
&gt; +                    json, self._incremental_results_file_path)

Once we get all the bots using incremental results, I think we should have setting _generate_incremental_results mean that we don&apos;t write out the full results file. Mind putting in a FIXME for that?

&gt; +            for d in buildinfo[JRG.FIXABLE]:
&gt; +                for (k, v) in d.iteritems():
&gt; +                    if k in fixable:
&gt; +                        fixable[k] = fixable[k] + v
&gt; +                    else:
&gt; +                        fixable[k] = v

&gt; +                for r in test[JRG.RESULTS]:
&gt; +                    if r[1] == JRG.FAIL_RESULT:
&gt; +                        failed = r[0]
&gt; +                self.assertTrue(failed == 1)
&gt; +
&gt; +                timing = 0
&gt; +                for t in test[JRG.TIMES]:
&gt; +                    if t[1] == test_timings[test_name]:
&gt; +                        timing = t[0]
&gt; +                self.assertTrue(timing == 1)

For readability sake, abbreviated variable names are discouraged in WebKit code (i.e. for d, k, v, r and t).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260874</commentid>
    <comment_count>3</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-08-05 14:40:10 -0700</bug_when>
    <thetext>Committed r64786: &lt;http://trac.webkit.org/changeset/64786&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63510</attachid>
            <date>2010-08-04 16:32:32 -0700</date>
            <delta_ts>2010-08-05 11:10:39 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>inc_json.patch</filename>
            <type>text/plain</type>
            <size>15642</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY0Njg2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMDQgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG9wdGlvbiB0byBnZW5lcmF0ZS91cGxvYWQgaW5jcmVtZW50YWwganNv
biByZXN1bHRzIHRvIHRlc3QgcmVzdWx0IHNlcnZlci4KKyAgICAgICAgQWxzbyByZWZhY3RvciB0
aGUganNvbiByZXN1bHRzIGdlbmVyYXRvciB1bml0dGVzdCBjb2RlIHRvIHRlc3QKKyAgICAgICAg
aW5jcmVtZW50YWwgYW5kIGFnZ3JlZ2F0ZWQganNvbiByZXN1bHRzLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzUxOQorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9sYXlvdXRfcmVz
dWx0c19nZW5lcmF0b3IucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNf
Z2VuZXJhdG9yX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDgtMDQgIEFudG9uaW8gR29tZXMg
IDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubiBhbmQgS2VubmV0aCBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkJKHJldmlzaW9uIDY0Njg1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAtODg5LDcg
Kzg4OSw4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICBzZWxmLl9wb3J0LCBzZWxm
Ll9vcHRpb25zLmJ1aWxkZXJfbmFtZSwgc2VsZi5fb3B0aW9ucy5idWlsZF9uYW1lLAogICAgICAg
ICAgICAgc2VsZi5fb3B0aW9ucy5idWlsZF9udW1iZXIsIHNlbGYuX29wdGlvbnMucmVzdWx0c19k
aXJlY3RvcnksCiAgICAgICAgICAgICBCVUlMREVSX0JBU0VfVVJMLCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncywKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnks
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKKyAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucywg
cmVzdWx0X3N1bW1hcnksIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCwKKyAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMudXBsb2FkX2luY3JlbWVudGFsX3Jlc3VsdHMpCiAKICAgICAgICAgX2xvZy5kZWJ1
ZygiRmluaXNoZWQgd3JpdGluZyBKU09OIGZpbGVzLiIpCiAKQEAgLTkwMCw4ICs5MDEsMTIgQEAg
Y2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgX2xvZy5pbmZvKCJVcGxvYWRpbmcgSlNPTiBmaWxl
cyBmb3IgYnVpbGRlcjogJXMiLAogICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuYnVp
bGRlcl9uYW1lKQogCi0gICAgICAgIGF0dHJzID0gWygnYnVpbGRlcicsIHNlbGYuX29wdGlvbnMu
YnVpbGRlcl9uYW1lKV0KLSAgICAgICAganNvbl9maWxlcyA9IFsiZXhwZWN0YXRpb25zLmpzb24i
LCAicmVzdWx0cy5qc29uIl0KKyAgICAgICAgYXR0cnMgPSBbKCJidWlsZGVyIiwgc2VsZi5fb3B0
aW9ucy5idWlsZGVyX25hbWUpXQorICAgICAgICBqc29uX2ZpbGVzID0gWyJleHBlY3RhdGlvbnMu
anNvbiJdCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXBsb2FkX2luY3JlbWVudGFsX3Jlc3Vs
dHM6CisgICAgICAgICAgICBqc29uX2ZpbGVzLmFwcGVuZCgiaW5jcmVtZW50YWxfcmVzdWx0cy5q
c29uIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGpzb25fZmlsZXMuYXBwZW5kKCJyZXN1
bHRzLmpzb24iKQogCiAgICAgICAgIGZpbGVzID0gWyhmaWxlLCBvcy5wYXRoLmpvaW4oc2VsZi5f
b3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZSkpCiAgICAgICAgICAgICBmb3IgZmlsZSBp
biBqc29uX2ZpbGVzXQpAQCAtMTY1Niw2ICsxNjYxLDEwIEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9
Tm9uZSk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXRlc3QtcmVzdWx0cy1zZXJ2
ZXIiLCBkZWZhdWx0PSIiLAogICAgICAgICAgICAgaGVscD0oIklmIHNwZWNpZmllZCwgdXBsb2Fk
IHJlc3VsdHMganNvbiBmaWxlcyB0byB0aGlzIGFwcGVuZ2luZSAiCiAgICAgICAgICAgICAgICAg
ICAic2VydmVyLiIpKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tdXBsb2FkLWlu
Y3JlbWVudGFsLXJlc3VsdHMiLAorICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAg
ICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSJJZiB0cnVlLCB1cGxv
YWQgaW5jcmVtZW50YWwganNvbiByZXN1bHRzIHRvIHNlcnZlci4iKSwKICAgICBdCiAKICAgICBv
cHRpb25fbGlzdCA9IChjb25maWd1cmF0aW9uX29wdGlvbnMgKyBwcmludF9vcHRpb25zICsKSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25f
bGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5
b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw4IEBA
IGNsYXNzIEpTT05MYXlvdXRSZXN1bHRzR2VuZXJhdG9yKGpzb25fcmUKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwb3J0LCBidWlsZGVyX25hbWUsIGJ1aWxkX25hbWUsIGJ1aWxkX251bWJlciwK
ICAgICAgICAgcmVzdWx0c19maWxlX2Jhc2VfcGF0aCwgYnVpbGRlcl9iYXNlX3VybCwKLSAgICAg
ICAgdGVzdF90aW1pbmdzLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCBhbGxfdGVzdHMp
OgorICAgICAgICB0ZXN0X3RpbWluZ3MsIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIGFs
bF90ZXN0cywKKyAgICAgICAgZ2VuZXJhdGVfaW5jcmVtZW50YWxfcmVzdWx0cz1GYWxzZSk6CiAg
ICAgICAgICIiIk1vZGlmaWVzIHRoZSByZXN1bHRzLmpzb24gZmlsZS4gR3JhYnMgaXQgb2ZmIHRo
ZSBhcmNoaXZlIGRpcmVjdG9yeQogICAgICAgICBpZiBpdCBpcyBub3QgZm91bmQgbG9jYWxseS4K
IApAQCAtNjYsNyArNjcsOCBAQCBjbGFzcyBKU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRvcihqc29u
X3JlCiAgICAgICAgICIiIgogICAgICAgICBzdXBlcihKU09OTGF5b3V0UmVzdWx0c0dlbmVyYXRv
ciwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgICBidWlsZGVyX25hbWUsIGJ1aWxkX25hbWUs
IGJ1aWxkX251bWJlciwgcmVzdWx0c19maWxlX2Jhc2VfcGF0aCwKLSAgICAgICAgICAgIGJ1aWxk
ZXJfYmFzZV91cmwsIHt9LCBwb3J0LnRlc3RfcmVwb3NpdG9yeV9wYXRocygpKQorICAgICAgICAg
ICAgYnVpbGRlcl9iYXNlX3VybCwge30sIHBvcnQudGVzdF9yZXBvc2l0b3J5X3BhdGhzKCksCisg
ICAgICAgICAgICBnZW5lcmF0ZV9pbmNyZW1lbnRhbF9yZXN1bHRzKQogCiAgICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwpJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3Vs
dHNfZ2VuZXJhdG9yLnB5CShyZXZpc2lvbiA2NDY4NSkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0
b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4MiwxMiBAQCBjbGFzcyBKU09OUmVzdWx0
c0dlbmVyYXRvckJhc2Uob2JqZWN0KToKICAgICBBTExfRklYQUJMRV9DT1VOVCA9ICJhbGxGaXhh
YmxlQ291bnQiCiAKICAgICBSRVNVTFRTX0ZJTEVOQU1FID0gInJlc3VsdHMuanNvbiIKKyAgICBJ
TkNSRU1FTlRBTF9SRVNVTFRTX0ZJTEVOQU1FID0gImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiIK
IAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWlsZGVyX25hbWUsIGJ1aWxkX25hbWUsIGJ1aWxk
X251bWJlciwKICAgICAgICAgcmVzdWx0c19maWxlX2Jhc2VfcGF0aCwgYnVpbGRlcl9iYXNlX3Vy
bCwKLSAgICAgICAgdGVzdF9yZXN1bHRzX21hcCwgc3ZuX3JlcG9zaXRvcmllcz1Ob25lKToKKyAg
ICAgICAgdGVzdF9yZXN1bHRzX21hcCwgc3ZuX3JlcG9zaXRvcmllcz1Ob25lLAorICAgICAgICBn
ZW5lcmF0ZV9pbmNyZW1lbnRhbF9yZXN1bHRzPUZhbHNlKToKICAgICAgICAgIiIiTW9kaWZpZXMg
dGhlIHJlc3VsdHMuanNvbiBmaWxlLiBHcmFicyBpdCBvZmYgdGhlIGFyY2hpdmUgZGlyZWN0b3J5
CiAgICAgICAgIGlmIGl0IGlzIG5vdCBmb3VuZCBsb2NhbGx5LgogCkBAIC0xMDgsNDEgKzExMCw1
NyBAQCBjbGFzcyBKU09OUmVzdWx0c0dlbmVyYXRvckJhc2Uob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5fYnVpbGRlcl9iYXNlX3VybCA9IGJ1aWxkZXJfYmFzZV91cmwKICAgICAgICAgc2VsZi5fcmVz
dWx0c19maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocmVzdWx0c19maWxlX2Jhc2VfcGF0aCwKICAg
ICAgICAgICAgIHNlbGYuUkVTVUxUU19GSUxFTkFNRSkKKyAgICAgICAgc2VsZi5faW5jcmVtZW50
YWxfcmVzdWx0c19maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICByZXN1bHRz
X2ZpbGVfYmFzZV9wYXRoLCBzZWxmLklOQ1JFTUVOVEFMX1JFU1VMVFNfRklMRU5BTUUpCiAKICAg
ICAgICAgc2VsZi5fdGVzdF9yZXN1bHRzX21hcCA9IHRlc3RfcmVzdWx0c19tYXAKICAgICAgICAg
c2VsZi5fdGVzdF9yZXN1bHRzID0gdGVzdF9yZXN1bHRzX21hcC52YWx1ZXMoKQorICAgICAgICBz
ZWxmLl9nZW5lcmF0ZV9pbmNyZW1lbnRhbF9yZXN1bHRzID0gZ2VuZXJhdGVfaW5jcmVtZW50YWxf
cmVzdWx0cwogCiAgICAgICAgIHNlbGYuX3N2bl9yZXBvc2l0b3JpZXMgPSBzdm5fcmVwb3NpdG9y
aWVzCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zdm5fcmVwb3NpdG9yaWVzOgogICAgICAgICAgICAg
c2VsZi5fc3ZuX3JlcG9zaXRvcmllcyA9IHt9CiAKICAgICAgICAgc2VsZi5fanNvbiA9IE5vbmUK
KyAgICAgICAgc2VsZi5fYXJjaGl2ZWRfcmVzdWx0cyA9IE5vbmUKIAogICAgIGRlZiBnZW5lcmF0
ZV9qc29uX291dHB1dChzZWxmKToKICAgICAgICAgIiIiR2VuZXJhdGVzIHRoZSBKU09OIG91dHB1
dCBmaWxlLiIiIgorCisgICAgICAgICMgR2VuZXJhdGUgdGhlIEpTT04gb3V0cHV0IGZpbGUgdGhh
dCBoYXMgZnVsbCByZXN1bHRzLgogICAgICAgICBpZiBub3Qgc2VsZi5fanNvbjoKICAgICAgICAg
ICAgIHNlbGYuX2pzb24gPSBzZWxmLmdldF9qc29uKCkKICAgICAgICAgaWYgc2VsZi5fanNvbjoK
LSAgICAgICAgICAgICMgU3BlY2lmeSBzZXBhcmF0b3JzIGluIG9yZGVyIHRvIGdldCBjb21wYWN0
IGVuY29kaW5nLgotICAgICAgICAgICAganNvbl9kYXRhID0gc2ltcGxlanNvbi5kdW1wcyhzZWxm
Ll9qc29uLCBzZXBhcmF0b3JzPSgnLCcsICc6JykpCi0gICAgICAgICAgICBqc29uX3N0cmluZyA9
IHNlbGYuSlNPTl9QUkVGSVggKyBqc29uX2RhdGEgKyBzZWxmLkpTT05fU1VGRklYCi0KLSAgICAg
ICAgICAgIHJlc3VsdHNfZmlsZSA9IGNvZGVjcy5vcGVuKHNlbGYuX3Jlc3VsdHNfZmlsZV9wYXRo
LCAidyIsICJ1dGYtOCIpCi0gICAgICAgICAgICByZXN1bHRzX2ZpbGUud3JpdGUoanNvbl9zdHJp
bmcpCi0gICAgICAgICAgICByZXN1bHRzX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5f
Z2VuZXJhdGVfanNvbl9maWxlKHNlbGYuX2pzb24sIHNlbGYuX3Jlc3VsdHNfZmlsZV9wYXRoKQor
CisgICAgICAgICMgR2VuZXJhdGUgdGhlIEpTT04gb3V0cHV0IGZpbGUgdGhhdCBvbmx5IGhhcyBp
bmNyZW1lbnRhbCByZXN1bHRzLgorICAgICAgICBpZiBzZWxmLl9nZW5lcmF0ZV9pbmNyZW1lbnRh
bF9yZXN1bHRzOgorICAgICAgICAgICAganNvbiA9IHNlbGYuZ2V0X2pzb24oaW5jcmVtZW50YWw9
VHJ1ZSkKKyAgICAgICAgICAgIGlmIGpzb246CisgICAgICAgICAgICAgICAgc2VsZi5fZ2VuZXJh
dGVfanNvbl9maWxlKAorICAgICAgICAgICAgICAgICAgICBqc29uLCBzZWxmLl9pbmNyZW1lbnRh
bF9yZXN1bHRzX2ZpbGVfcGF0aCkKIAotICAgIGRlZiBnZXRfanNvbihzZWxmKToKKyAgICBkZWYg
Z2V0X2pzb24oc2VsZiwgaW5jcmVtZW50YWw9RmFsc2UpOgogICAgICAgICAiIiJHZXRzIHRoZSBy
ZXN1bHRzIGZvciB0aGUgcmVzdWx0cy5qc29uIGZpbGUuIiIiCi0gICAgICAgIGlmIHNlbGYuX2pz
b246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fanNvbgorICAgICAgICBpZiBpbmNyZW1lbnRh
bDoKKyAgICAgICAgICAgIHJlc3VsdHNfanNvbiA9IHt9CisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBpZiBzZWxmLl9qc29uOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9qc29uCisK
KyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hcmNoaXZlZF9yZXN1bHRzOgorICAgICAgICAgICAg
ICAgIHNlbGYuX2FyY2hpdmVkX3Jlc3VsdHMsIGVycm9yID0gXAorICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9nZXRfYXJjaGl2ZWRfanNvbl9yZXN1bHRzKCkKKyAgICAgICAgICAgICAgICBpZiBl
cnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgZG9uJ3Qg
d3JpdGUgYSByZXN1bHRzLmpzb24KKyAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGF0IGFsbCBh
cyBpdCB3b3VsZCBsb3NlIGFsbCB0aGUgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAg
ICAgICAgICMgYm90LgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCJBcmNoaXZlIGRp
cmVjdG9yeSBpcyBpbmFjY2Vzc2libGUuIE5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIm1vZGlmeWluZyBvciBjbG9iYmVyaW5nIHRoZSByZXN1bHRzLmpzb24gIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOiAiICsgc3RyKGVycm9yKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICByZXN1bHRzX2pzb24sIGVycm9yID0g
c2VsZi5fZ2V0X2FyY2hpdmVkX2pzb25fcmVzdWx0cygpCi0gICAgICAgIGlmIGVycm9yOgotICAg
ICAgICAgICAgIyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgZG9uJ3Qgd3JpdGUgYSByZXN1bHRzLmpz
b24KLSAgICAgICAgICAgICMgZmlsZSBhdCBhbGwgYXMgaXQgd291bGQgbG9zZSBhbGwgdGhlIGlu
Zm9ybWF0aW9uIG9uIHRoZSBib3QuCi0gICAgICAgICAgICBfbG9nLmVycm9yKCJBcmNoaXZlIGRp
cmVjdG9yeSBpcyBpbmFjY2Vzc2libGUuIE5vdCBtb2RpZnlpbmcgIgotICAgICAgICAgICAgICAg
ICAgICAgICAib3IgY2xvYmJlcmluZyB0aGUgcmVzdWx0cy5qc29uIGZpbGU6ICIgKyBzdHIoZXJy
b3IpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJlc3VsdHNfanNvbiA9
IHNlbGYuX2FyY2hpdmVkX3Jlc3VsdHMKIAogICAgICAgICBidWlsZGVyX25hbWUgPSBzZWxmLl9i
dWlsZGVyX25hbWUKICAgICAgICAgaWYgcmVzdWx0c19qc29uIGFuZCBidWlsZGVyX25hbWUgbm90
IGluIHJlc3VsdHNfanNvbjoKQEAgLTE2OCw4ICsxODYsMTkgQEAgY2xhc3MgSlNPTlJlc3VsdHNH
ZW5lcmF0b3JCYXNlKG9iamVjdCk6CiAgICAgICAgIGZvciB0ZXN0IGluIGFsbF9mYWlsaW5nX3Rl
c3RzOgogICAgICAgICAgICAgc2VsZi5faW5zZXJ0X3Rlc3RfdGltZV9hbmRfcmVzdWx0KHRlc3Qs
IHRlc3RzKQogCi0gICAgICAgIHNlbGYuX2pzb24gPSByZXN1bHRzX2pzb24KLSAgICAgICAgcmV0
dXJuIHNlbGYuX2pzb24KKyAgICAgICAgcmV0dXJuIHJlc3VsdHNfanNvbgorCisgICAgZGVmIHNl
dF9hcmNoaXZlZF9yZXN1bHRzKHNlbGYsIGFyY2hpdmVkX3Jlc3VsdHMpOgorICAgICAgICBzZWxm
Ll9hcmNoaXZlZF9yZXN1bHRzID0gYXJjaGl2ZWRfcmVzdWx0cworCisgICAgZGVmIF9nZW5lcmF0
ZV9qc29uX2ZpbGUoc2VsZiwganNvbiwgZmlsZV9wYXRoKToKKyAgICAgICAgIyBTcGVjaWZ5IHNl
cGFyYXRvcnMgaW4gb3JkZXIgdG8gZ2V0IGNvbXBhY3QgZW5jb2RpbmcuCisgICAgICAgIGpzb25f
ZGF0YSA9IHNpbXBsZWpzb24uZHVtcHMoanNvbiwgc2VwYXJhdG9ycz0oJywnLCAnOicpKQorICAg
ICAgICBqc29uX3N0cmluZyA9IHNlbGYuSlNPTl9QUkVGSVggKyBqc29uX2RhdGEgKyBzZWxmLkpT
T05fU1VGRklYCisKKyAgICAgICAgcmVzdWx0c19maWxlID0gY29kZWNzLm9wZW4oZmlsZV9wYXRo
LCAidyIsICJ1dGYtOCIpCisgICAgICAgIHJlc3VsdHNfZmlsZS53cml0ZShqc29uX3N0cmluZykK
KyAgICAgICAgcmVzdWx0c19maWxlLmNsb3NlKCkKIAogICAgIGRlZiBfZ2V0X3Rlc3RfdGltaW5n
KHNlbGYsIHRlc3RfbmFtZSk6CiAgICAgICAgICIiIlJldHVybnMgdGVzdCB0aW1pbmcgZGF0YSAo
ZWxhcHNlZCB0aW1lKSBpbiBzZWNvbmQKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3JfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5w
eQkocmV2aXNpb24gNjQ2ODUpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMyBAQCBjbGFzcyBKU09OR2VuZXJhdG9yVGVz
dCh1bml0dGVzdC5UZXN0Q2FzCiAgICAgICAgIHNlbGYuYnVpbGRlcl9uYW1lID0gJ0RVTU1ZX0JV
SUxERVJfTkFNRScKICAgICAgICAgc2VsZi5idWlsZF9uYW1lID0gJ0RVTU1ZX0JVSUxEX05BTUUn
CiAgICAgICAgIHNlbGYuYnVpbGRfbnVtYmVyID0gJ0RVTU1ZX0JVSUxERVJfTlVNQkVSJworICAg
ICAgICBzZWxmLl9qc29uID0gTm9uZQorICAgICAgICBzZWxmLl9udW1fcnVucyA9IDAKKyAgICAg
ICAgc2VsZi5fdGVzdHNfbGlzdCA9IHNldChbXSkKKyAgICAgICAgc2VsZi5fdGVzdF90aW1pbmdz
ID0ge30KKyAgICAgICAgc2VsZi5fZmFpbGVkX3Rlc3RzID0ge30KKyAgICAgICAgc2VsZi5fcGFz
c2VkX3Rlc3RzID0gc2V0KFtdKQorICAgICAgICBzZWxmLl9za2lwcGVkX3Rlc3RzID0gc2V0KFtd
KQogCiAgICAgZGVmIF90ZXN0X2pzb25fZ2VuZXJhdGlvbihzZWxmLCBwYXNzZWRfdGVzdHMsIGZh
aWxlZF90ZXN0cywgc2tpcHBlZF90ZXN0cyk6CiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUg
c2V0cyAocmF0aGVyIHRoYW4gbGlzdHMpLgpAQCAtNTIsMTIgKzU5LDEzIEBAIGNsYXNzIEpTT05H
ZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXMKICAgICAgICAgc2tpcHBlZF90ZXN0cyA9IHNl
dChza2lwcGVkX3Rlc3RzKQogICAgICAgICB0ZXN0c19saXN0ID0gcGFzc2VkX3Rlc3RzIHwgc2V0
KGZhaWxlZF90ZXN0cy5rZXlzKCkpCiAgICAgICAgIHRlc3RfdGltaW5ncyA9IHt9CisgICAgICAg
IGkgPSAwCiAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzX2xpc3Q6Ci0gICAgICAgICAgICB0ZXN0
X3RpbWluZ3NbdGVzdF0gPSBmbG9hdChyYW5kb20ucmFuZGludCgxLCAxMCkpCisgICAgICAgICAg
ICB0ZXN0X3RpbWluZ3NbdGVzdF0gPSBmbG9hdChzZWxmLl9udW1fcnVucyAqIDEwMCArIGkpCisg
ICAgICAgICAgICBpICs9IDEKIAogICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KE5vbmUpCiAK
LSAgICAgICAgIyBHZW5lcmF0ZSBhIEpTT04gZmlsZS4KICAgICAgICAgZ2VuZXJhdG9yID0ganNv
bl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVyYXRvcihwb3J0X29iaiwKICAgICAg
ICAgICAgIHNlbGYuYnVpbGRlcl9uYW1lLCBzZWxmLmJ1aWxkX25hbWUsIHNlbGYuYnVpbGRfbnVt
YmVyLAogICAgICAgICAgICAgJycsCkBAIC02OCw4ICs3NiwzOSBAQCBjbGFzcyBKU09OR2VuZXJh
dG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzCiAgICAgICAgICAgICBza2lwcGVkX3Rlc3RzLAogICAg
ICAgICAgICAgdGVzdHNfbGlzdCkKIAotICAgICAgICBqc29uID0gZ2VuZXJhdG9yLmdldF9qc29u
KCkKKyAgICAgICAgIyBUZXN0IGluY3JlbWVudGFsIGpzb24gcmVzdWx0cworICAgICAgICBpbmNy
ZW1lbnRhbF9qc29uID0gZ2VuZXJhdG9yLmdldF9qc29uKGluY3JlbWVudGFsPVRydWUpCisgICAg
ICAgIHNlbGYuX3ZlcmlmeV9qc29uX3Jlc3VsdHMoCisgICAgICAgICAgICB0ZXN0c19saXN0LAor
ICAgICAgICAgICAgdGVzdF90aW1pbmdzLAorICAgICAgICAgICAgcGFzc2VkX3Rlc3RzLAorICAg
ICAgICAgICAgZmFpbGVkX3Rlc3RzLAorICAgICAgICAgICAgc2tpcHBlZF90ZXN0cywKKyAgICAg
ICAgICAgIGluY3JlbWVudGFsX2pzb24sCisgICAgICAgICAgICAxKQogCisgICAgICAgICMgVGVz
dCBhZ2dyZWdhdGVkIGpzb24gcmVzdWx0cworICAgICAgICBnZW5lcmF0b3Iuc2V0X2FyY2hpdmVk
X3Jlc3VsdHMoc2VsZi5fanNvbikKKyAgICAgICAganNvbiA9IGdlbmVyYXRvci5nZXRfanNvbihp
bmNyZW1lbnRhbD1GYWxzZSkKKyAgICAgICAgc2VsZi5fanNvbiA9IGpzb24KKyAgICAgICAgc2Vs
Zi5fbnVtX3J1bnMgKz0gMQorICAgICAgICBzZWxmLl90ZXN0c19saXN0IHw9IHRlc3RzX2xpc3QK
KyAgICAgICAgc2VsZi5fdGVzdF90aW1pbmdzLnVwZGF0ZSh0ZXN0X3RpbWluZ3MpCisgICAgICAg
IHNlbGYuX2ZhaWxlZF90ZXN0cy51cGRhdGUoZmFpbGVkX3Rlc3RzKQorICAgICAgICBzZWxmLl9w
YXNzZWRfdGVzdHMgfD0gcGFzc2VkX3Rlc3RzCisgICAgICAgIHNlbGYuX3NraXBwZWRfdGVzdHMg
fD0gc2tpcHBlZF90ZXN0cworICAgICAgICBzZWxmLl92ZXJpZnlfanNvbl9yZXN1bHRzKAorICAg
ICAgICAgICAgc2VsZi5fdGVzdHNfbGlzdCwKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfdGltaW5n
cywKKyAgICAgICAgICAgIHNlbGYuX3Bhc3NlZF90ZXN0cywKKyAgICAgICAgICAgIHNlbGYuX2Zh
aWxlZF90ZXN0cywKKyAgICAgICAgICAgIHNlbGYuX3NraXBwZWRfdGVzdHMsCisgICAgICAgICAg
ICBzZWxmLl9qc29uLAorICAgICAgICAgICAgc2VsZi5fbnVtX3J1bnMpCisKKyAgICBkZWYgX3Zl
cmlmeV9qc29uX3Jlc3VsdHMoc2VsZiwgdGVzdHNfbGlzdCwgdGVzdF90aW1pbmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWRfdGVzdHMsIGZhaWxlZF90ZXN0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZF90ZXN0cywganNvbiwgbnVtX3J1bnMpOgog
ICAgICAgICAjIEFsaWFzaW5nIHRvIGEgc2hvcnQgbmFtZSBmb3IgYmV0dGVyIGFjY2VzcyB0byBp
dHMgY29uc3RhbnRzLgogICAgICAgICBKUkcgPSBqc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLkpTT05S
ZXN1bHRzR2VuZXJhdG9yCiAKQEAgLTc5LDExICsxMTgsMTggQEAgY2xhc3MgSlNPTkdlbmVyYXRv
clRlc3QodW5pdHRlc3QuVGVzdENhcwogICAgICAgICBidWlsZGluZm8gPSBqc29uW3NlbGYuYnVp
bGRlcl9uYW1lXQogICAgICAgICBzZWxmLmFzc2VydFRydWUoSlJHLkZJWEFCTEUgaW4gYnVpbGRp
bmZvKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoSlJHLlRFU1RTIGluIGJ1aWxkaW5mbykKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihidWlsZGluZm9bSlJHLkJVSUxEX05VTUJFUlNdKSA9
PSAxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGJ1aWxkaW5mb1tKUkcuQlVJTERfTlVN
QkVSU10pID09IG51bV9ydW5zKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRpbmZvW0pS
Ry5CVUlMRF9OVU1CRVJTXVswXSA9PSBzZWxmLmJ1aWxkX251bWJlcikKIAotICAgICAgICBpZiB0
ZXN0c19saXN0ICBvciBza2lwcGVkX3Rlc3RzOgotICAgICAgICAgICAgZml4YWJsZSA9IGJ1aWxk
aW5mb1tKUkcuRklYQUJMRV1bMF0KKyAgICAgICAgaWYgdGVzdHNfbGlzdCBvciBza2lwcGVkX3Rl
c3RzOgorICAgICAgICAgICAgZml4YWJsZSA9IHt9CisgICAgICAgICAgICBmb3IgZCBpbiBidWls
ZGluZm9bSlJHLkZJWEFCTEVdOgorICAgICAgICAgICAgICAgIGZvciAoaywgdikgaW4gZC5pdGVy
aXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgayBpbiBmaXhhYmxlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgZml4YWJsZVtrXSA9IGZpeGFibGVba10gKyB2CisgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmaXhhYmxlW2tdID0gdgorCiAg
ICAgICAgICAgICBpZiBwYXNzZWRfdGVzdHM6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGZpeGFibGVbSlJHLlBBU1NfUkVTVUxUXSA9PSBsZW4ocGFzc2VkX3Rlc3RzKSkKICAgICAg
ICAgICAgIGVsc2U6CkBAIC0xMDAsMjYgKzE0NiwzNSBAQCBjbGFzcyBKU09OR2VuZXJhdG9yVGVz
dCh1bml0dGVzdC5UZXN0Q2FzCiAgICAgICAgICAgICBmb3IgdGVzdF9uYW1lLCBmYWlsdXJlIGlu
IGZhaWxlZF90ZXN0cy5pdGVyaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUodGVzdF9uYW1lIGluIHRlc3RzKQogICAgICAgICAgICAgICAgIHRlc3QgPSB0ZXN0c1t0ZXN0
X25hbWVdCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RbSlJHLlJFU1VMVFNd
WzBdWzBdID09IDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3RbSlJHLlJF
U1VMVFNdWzBdWzFdID09IEpSRy5GQUlMX1JFU1VMVCkKLSAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUodGVzdFtKUkcuVElNRVNdWzBdWzBdID09IDEpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHRlc3RbSlJHLlRJTUVTXVswXVsxXSA9PQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQodGVzdF90aW1pbmdzW3Rlc3RfbmFtZV0pKQorCisgICAgICAgICAg
ICAgICAgZmFpbGVkID0gMAorICAgICAgICAgICAgICAgIGZvciByIGluIHRlc3RbSlJHLlJFU1VM
VFNdOgorICAgICAgICAgICAgICAgICAgICBpZiByWzFdID09IEpSRy5GQUlMX1JFU1VMVDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZCA9IHJbMF0KKyAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoZmFpbGVkID09IDEpCisKKyAgICAgICAgICAgICAgICB0aW1pbmcgPSAwCisg
ICAgICAgICAgICAgICAgZm9yIHQgaW4gdGVzdFtKUkcuVElNRVNdOgorICAgICAgICAgICAgICAg
ICAgICBpZiB0WzFdID09IHRlc3RfdGltaW5nc1t0ZXN0X25hbWVdOgorICAgICAgICAgICAgICAg
ICAgICAgICAgdGltaW5nID0gdFswXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0
aW1pbmcgPT0gMSkKIAogICAgICAgICBmaXhhYmxlX2NvdW50ID0gbGVuKHNraXBwZWRfdGVzdHMp
ICsgbGVuKGZhaWxlZF90ZXN0cy5rZXlzKCkpCiAgICAgICAgIGlmIHNraXBwZWRfdGVzdHMgb3Ig
ZmFpbGVkX3Rlc3RzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkaW5mb1tKUkcu
RklYQUJMRV9DT1VOVF1bMF0gPT0gZml4YWJsZV9jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShzdW0oYnVpbGRpbmZvW0pSRy5GSVhBQkxFX0NPVU5UXSkgPT0gZml4YWJsZV9jb3Vu
dCkKIAogICAgIGRlZiB0ZXN0X2pzb25fZ2VuZXJhdGlvbihzZWxmKToKICAgICAgICAgcmVhc29u
ID0gdGVzdF9leHBlY3RhdGlvbnMuVEVYVAogCiAgICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5l
cmF0aW9uKFtdLCB7fSwgW10pCi0gICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0aW9uKFsn
QScsICdCJ10sIHt9LCBbXSkKLSAgICAgICAgc2VsZi5fdGVzdF9qc29uX2dlbmVyYXRpb24oW10s
IHsnQSc6IHJlYXNvbiwgJ0InOiByZWFzb259LCBbXSkKLSAgICAgICAgc2VsZi5fdGVzdF9qc29u
X2dlbmVyYXRpb24oW10sIHt9LCBbJ0EnLCAnQiddKQotICAgICAgICBzZWxmLl90ZXN0X2pzb25f
Z2VuZXJhdGlvbihbJ0EnXSwgeydCJzogcmVhc29uLCAnQyc6IHJlYXNvbn0sIFtdKQotICAgICAg
ICBzZWxmLl90ZXN0X2pzb25fZ2VuZXJhdGlvbihbXSwgeydBJzogcmVhc29uLCAnQic6IHJlYXNv
bn0sIFsnQycsICdEJ10pCi0gICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0aW9uKFsnQScs
ICdCJywgJ0MnXSwgeydEJzogcmVhc29ufSwgWydFJywgJ0YnXSkKKyAgICAgICAgc2VsZi5fdGVz
dF9qc29uX2dlbmVyYXRpb24oWydBMScsICdCMSddLCB7fSwgW10pCisgICAgICAgIHNlbGYuX3Rl
c3RfanNvbl9nZW5lcmF0aW9uKFtdLCB7J0EyJzogcmVhc29uLCAnQjInOiByZWFzb259LCBbXSkK
KyAgICAgICAgc2VsZi5fdGVzdF9qc29uX2dlbmVyYXRpb24oW10sIHt9LCBbJ0EzJywgJ0IzJ10p
CisgICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0aW9uKFsnQTQnXSwgeydCNCc6IHJlYXNv
biwgJ0M0JzogcmVhc29ufSwgW10pCisgICAgICAgIHNlbGYuX3Rlc3RfanNvbl9nZW5lcmF0aW9u
KAorICAgICAgICAgICAgW10sIHsnQTUnOiByZWFzb24sICdCNSc6IHJlYXNvbn0sIFsnQzUnLCAn
RDUnXSkKKyAgICAgICAgc2VsZi5fdGVzdF9qc29uX2dlbmVyYXRpb24oCisgICAgICAgICAgICBb
J0E2JywgJ0I2JywgJ0M2J10sIHsnRDYnOiByZWFzb259LCBbJ0U2JywgJ0Y2J10pCiAKIAogaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
</data>
<flag name="review"
          id="51879"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>