<?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>49626</bug_id>
          
          <creation_ts>2010-11-16 14:47:49 -0800</creation_ts>
          <short_desc>Rebaseline server: display test results</short_desc>
          <delta_ts>2010-11-16 18:37:42 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>47761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>309946</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-16 14:47:49 -0800</bug_when>
    <thetext>Rebaseline server: display test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309952</commentid>
    <comment_count>1</comment_count>
      <attachid>74043</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-16 14:52:13 -0800</bug_when>
    <thetext>Created attachment 74043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309955</commentid>
    <comment_count>2</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-16 14:53:56 -0800</bug_when>
    <thetext>Running at http://bearberry.mtv.corp.google.com:8127/ if you&apos;d like to see it in action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310031</commentid>
    <comment_count>3</comment_count>
      <attachid>74062</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-16 16:48:38 -0800</bug_when>
    <thetext>Created attachment 74062
Patch

Forgot util.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310047</commentid>
    <comment_count>4</comment_count>
      <attachid>74062</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-16 17:18:29 -0800</bug_when>
    <thetext>Comment on attachment 74062
Patch

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

&gt; WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:48
&gt; +          return;

Nit: 4 space indent

&gt; WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:53
&gt; +          case &apos;Left&apos;: event.preventDefault(); previousTest(); break;
&gt; +          case &apos;Right&apos;: event.preventDefault(); nextTest(); break;

Nit: 0 or 4 space indent

&gt; WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:79
&gt; +          testsByFailureType[failureType] = [];
&gt; +          failureTypes.push(failureType);

Nit: 4 space indent

&gt; WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver.py:117
&gt; +        (test_name, test_extension) = os.path.splitext(self.query[&apos;test&apos;][0])

Nit: you don&apos;t need the ()s on the left side of the =.  Also, unused variables are normally just called _. E.g.:
  test_name, _ = os.path.splitext(...

&gt; WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver.py:189
&gt; +        results_json_file = file(results_json_path)
&gt; +        results_json = simplejson.load(results_json_file)
&gt; +        results_json_file.close()

You could use &apos;with&apos; here to close the file implicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310077</commentid>
    <comment_count>5</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-16 18:35:32 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 74062 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74062&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:48
&gt; &gt; +          return;
&gt; 
&gt; Nit: 4 space indent

Fixed.

&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:53
&gt; &gt; +          case &apos;Left&apos;: event.preventDefault(); previousTest(); break;
&gt; &gt; +          case &apos;Right&apos;: event.preventDefault(); nextTest(); break;
&gt; 
&gt; Nit: 0 or 4 space indent

Switched to WebKit style (0-space)

&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:79
&gt; &gt; +          testsByFailureType[failureType] = [];
&gt; &gt; +          failureTypes.push(failureType);
&gt; 
&gt; Nit: 4 space indent

Fixed.

&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver.py:117
&gt; &gt; +        (test_name, test_extension) = os.path.splitext(self.query[&apos;test&apos;][0])
&gt; 
&gt; Nit: you don&apos;t need the ()s on the left side of the =.  Also, unused variables are normally just called _. E.g.:
&gt;   test_name, _ = os.path.splitext(...

Fixed.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/tool/commands/rebaselineserver.py:189
&gt; &gt; +        results_json_file = file(results_json_path)
&gt; &gt; +        results_json = simplejson.load(results_json_file)
&gt; &gt; +        results_json_file.close()
&gt; 
&gt; You could use &apos;with&apos; here to close the file implicitly.

Done.

Will land with the above changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310079</commentid>
    <comment_count>6</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-16 18:37:42 -0800</bug_when>
    <thetext>Committed r72157: &lt;http://trac.webkit.org/changeset/72157&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74043</attachid>
            <date>2010-11-16 14:52:13 -0800</date>
            <delta_ts>2010-11-16 16:48:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49626-20101116145212.patch</filename>
            <type>text/plain</type>
            <size>19031</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxZWY5NzhiMThiM2ZjNjkwMDc5MTFhNzQ3YzFmODRjMWI0MmEyMjRkLi42NjhjZmI4
MmJlZTAxMzI2YTljZGViYjFlZWVjNTI5Y2FlNDExY2NlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTEtMTYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBz
ZXJ2ZXI6IGRpc3BsYXkgdGVzdCByZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTYyNgorICAgICAgICAKKyAgICAgICAgQWRkcyBiYXNpYyBy
ZXN1bHQgZGlzcGxheSB0byB0aGUgcmViYXNlbGluZSBzZXJ2ZXIuIE9uIHRoZSBQeXRob24gc2lk
ZQorICAgICAgICB0aGlzIGludm9sdmVzOgorICAgICAgICAtIFBhcnNpbmcgdGhlIHVuZXhwZWN0
ZWRfcmVzdWx0cy5qc29uIGludG8gYSBkaWN0aW9uYXJ5LgorICAgICAgICAtIFNlcnZpbmcgaXQg
YXMgSlNPTiB1bmRlciAvcmVzdWx0cy5qc29uLgorICAgICAgICAodGhlIEpTT04gLT4gZGljdCAt
PiBKU09OIHRyYW5zZm9ybSBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgcmlnaHQgbm93LAorICAg
ICAgICBidXQgSSdsbCBuZWVkIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBwYXJzZWQgcmVzdWx0cyBv
biB0aGUgUHl0aG9uIHNpZGUKKyAgICAgICAgZm9yIGZvbGxvdy11cCBjaGFuZ2VzKS4KKyAgICAg
ICAgCisgICAgICAgIE9uIHRoZSB3ZWIgVUkgc2lkZSB0aGlzIGFkZHM6CisgICAgICAgIC0gTWFy
a3VwIGZvciBkaXNwbGF5IGltYWdlIGFuZCB0ZXh0IHJlc3VsdHMgKGV4cGVjdGVkLCBhY3R1YWws
IGRpZmYpLAorICAgICAgICAgIGFuZCBKUyBmb3IgcG9wdWxhdGluZyBpdC4KKyAgICAgICAgLSBN
YXJrdXAgZm9yIGJyZWFraW5nIGRvd24gdGVzdCByZXN1bHRzIGJ5IGZhaWx1cmUgdHlwZSBhbmQg
ZGlyZWN0b3J5LAorICAgICAgICAgIGFuZCBKUyBmb3IgcG9wdWxhdGluZyBpdC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIv
aW5kZXguaHRtbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0
YS9yZWJhc2VsaW5lc2VydmVyL21haW4uY3NzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5qczoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weToKKwogMjAx
MC0xMS0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvaW5k
ZXguaHRtbCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRh
L3JlYmFzZWxpbmVzZXJ2ZXIvaW5kZXguaHRtbAppbmRleCA1NjY3Y2QyYWYyNzRkN2UwMmU5MmUz
YmE3NThlN2I3ZWE3ODY2MjlhLi4xNDJlMTY0NDdjODIxNDYwYTZkOGY3MjJjOWJkYzEyZjg3NWI0
MDRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL2luZGV4Lmh0bWwKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9pbmRleC5o
dG1sCkBAIC0xLDExICsxLDExIEBACiA8IURPQ1RZUEUgaHRtbD4KIDwhLS0KICAgQ29weXJpZ2h0
IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gIAorCiAgIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgIG1ldDoKLSAgCisKICAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQpAQCAtMTUsNyArMTUsNyBAQAogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAgCisKICAg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTMyLDkgKzMyLDczIEBA
CiA8aGVhZD4KICAgPHRpdGxlPkxheW91dCBUZXN0IFJlYmFzZWxpbmUgU2VydmVyPC90aXRsZT4K
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvbWFpbi5jc3MiIHR5cGU9InRleHQvY3Nz
Ij4KKyAgPHNjcmlwdCBzcmM9Ii91dGlsLmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCBzcmM9Ii9t
YWluLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IGNsYXNzPSJsb2FkaW5nIj4KKworPGRp
diBpZD0iaGVhZGVyIj4KKyAgPGRpdiBpZD0iY29udHJvbHMiPgorICAgIDwhLS0gQWRkIGEgZHVt
bXkgPHNlbGVjdD4gbm9kZSBzbyB0aGF0IHRoaXMgbGluZXMgdXAgd2l0aCB0aGUgdGV4dCBvbiB0
aGUgbGVmdCAtLT4KKyAgICA8c2VsZWN0IHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW4iPjwvc2Vs
ZWN0PgogICAgIDxhIGhyZWY9Ii9xdWl0cXVpdHF1aXQiPkV4aXQ8L2E+CisgIDwvZGl2PgorCisg
IDxzcGFuIGlkPSJzZWxlY3RvcnMiPgorICAgIDxsYWJlbD4KKyAgICAgIEZhaWx1cmUgdHlwZToK
KyAgICAgIDxzZWxlY3QgaWQ9ImZhaWx1cmUtdHlwZS1zZWxlY3RvciI+PC9zZWxlY3Q+CisgICAg
PC9sYWJlbD4KKworICAgIDxsYWJlbD4KKyAgICAgIERpcmVjdG9yeToKKyAgICAgIDxzZWxlY3Qg
aWQ9ImRpcmVjdG9yeS1zZWxlY3RvciI+PC9zZWxlY3Q+CisgICAgPC9sYWJlbD4KKworICAgIDxs
YWJlbD4KKyAgICAgIFRlc3Q6CisgICAgICA8c2VsZWN0IGlkPSJ0ZXN0LXNlbGVjdG9yIj48L3Nl
bGVjdD4KKyAgICA8L2xhYmVsPgorICA8L3NwYW4+CisKKyAgPGEgaWQ9InRlc3QtbGluayI+Vmll
dyB0ZXN0PC9hPgorCisgIDxzcGFuIGlkPSJuYXYtYnV0dG9ucyI+CisgICAgPGJ1dHRvbiBpZD0i
cHJldmlvdXMtdGVzdCI+JmxhcXVvOzwvYnV0dG9uPgorICAgIDxzcGFuIGlkPSJ0ZXN0LWluZGV4
Ij48L3NwYW4+IG9mIDxzcGFuIGlkPSJ0ZXN0LWNvdW50Ij48L3NwYW4+CisgICAgPGJ1dHRvbiBp
ZD0ibmV4dC10ZXN0Ij4mcmFxdW87PC9idXR0b24+CisgIDwvc3Bhbj4KKzwvZGl2PgorCis8dGFi
bGUgaWQ9InRlc3Qtb3V0cHV0Ij4KKyAgPHRoZWFkIGlkPSJsYWJlbHMiPgorICAgIDx0cj4KKyAg
ICAgIDx0aD5FeHBlY3RlZDwvdGg+CisgICAgICA8dGg+QWN0dWFsPC90aD4KKyAgICAgIDx0aD5E
aWZmPC90aD4KKyAgICA8L3RyPgorICA8L3RoZWFkPgorICA8dGJvZHkgaWQ9ImltYWdlLW91dHB1
dHMiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4KKyAgICA8dHI+CisgICAgICA8dGQgY29sc3Bhbj0i
MyI+PGgyPkltYWdlPC9oMj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPjxp
bWcgaWQ9ImV4cGVjdGVkLWltYWdlIj48L3RkPgorICAgICAgPHRkPjxpbWcgaWQ9ImFjdHVhbC1p
bWFnZSI+PC90ZD4KKyAgICAgIDx0ZD48aW1nIGlkPSJkaWZmLWltYWdlIj48L3RkPgorICAgIDwv
dHI+CisgIDwvdGJvZHk+CisgIDx0Ym9keSBpZD0idGV4dC1vdXRwdXRzIiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+CisgICAgPHRyPgorICAgICAgPHRkIGNvbHNwYW49IjMiPjxoMj5UZXh0PC9oMj48
L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkPjxwcmUgaWQ9ImV4cGVjdGVkLXRl
eHQiPjwvcHJlPjwvdGQ+CisgICAgICA8dGQ+PHByZSBpZD0iYWN0dWFsLXRleHQiPjwvcHJlPjwv
dGQ+CisgICAgICA8dGQ+PHByZSBpZD0iZGlmZi10ZXh0Ij48cHJlPjwvdGQ+CisgICAgPC90cj4K
KyAgPC90Ym9keT4KKzwvdGFibGU+CisKIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVz
ZXJ2ZXIvbWFpbi5jc3MgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL21haW4uY3NzCmluZGV4IDM1YmQ2YTVhZDFjOWY5YmIz
YjU4MTk2MzI1NjgxNWFjZWEwZTE3YjIuLjMyOWY5NWY0NGY2ZjVlN2MxOTg5NTdlZmVkNmIxN2Yw
YTkwYzUwODIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5jc3MKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWlu
LmNzcwpAQCAtNDYsNyArNDYsNyBAQCBkaXYgewogYSwgLmxpbmsgewogICBjb2xvcjogI2FhZjsK
ICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci0gIGN1cnNvcjogcG9pbnRlcjsgICAgICAK
KyAgY3Vyc29yOiBwb2ludGVyOwogfQogCiAubGluay5zZWxlY3RlZCB7CkBAIC01NCwzICs1NCw5
MSBAQCBhLCAubGluayB7CiAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICB0ZXh0LWRlY29yYXRpb246
IG5vbmU7CiB9CisKKyNoZWFkZXIgeworICBwYWRkaW5nOiAuNWVtIDFlbTsKKyAgYmFja2dyb3Vu
ZDogIzMzMzsKKyAgY29sb3I6ICNmZmY7CisgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggNXB4
IHJnYmEoMCwgMCwgMCwgMC41KTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisjaGVhZGVy
IGxhYmVsIHsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICBjb2xvcjogI2NjYzsKK30KKworI3Rl
c3QtbGluayB7CisgIG1hcmdpbi1yaWdodDogMWVtOworfQorCisjaGVhZGVyIGxhYmVsIHNwYW4g
eworICBjb2xvcjogI2ZmZjsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKyNuYXYtYnV0dG9u
cyB7CisgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKyNuYXYtYnV0dG9ucyBidXR0b24gewor
ICBiYWNrZ3JvdW5kOiAjZmZmOworICBib3JkZXI6IDA7CisgIGJvcmRlci1yYWRpdXM6IDEwcHg7
Cit9CisKKyNuYXYtYnV0dG9ucyBidXR0b246YWN0aXZlIHsKKyAgLXdlYmtpdC1ib3gtc2hhZG93
OiAwIDAgNXB4ICMzM2YgaW5zZXQ7CisgIGJhY2tncm91bmQ6ICNhYWE7Cit9CisKKyNuYXYtYnV0
dG9ucyBidXR0b25bZGlzYWJsZWRdIHsKKyAgb3BhY2l0eTogLjU7Cit9CisKKyNjb250cm9scyB7
CisgIGZsb2F0OiByaWdodDsKK30KKworI3Rlc3Qtb3V0cHV0IHsKKyAgYm9yZGVyLXNwYWNpbmc6
IDA7CisgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CisgIG1hcmdpbjogMCBhdXRvOworICB3
aWR0aDogMTAwJTsKK30KKworI3Rlc3Qtb3V0cHV0IHRkLAorI3Rlc3Qtb3V0cHV0IHRoIHsKKyAg
cGFkZGluZzogMDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworI2ltYWdlLW91dHB1dHMg
aW1nIHsKKyAgd2lkdGg6IDgwMHB4OworICBoZWlnaHQ6IDYwMHB4OworICBib3JkZXI6IHNvbGlk
IDFweCAjZGRkOworICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAtd2Via2l0LXVzZXIt
ZHJhZzogbm9uZTsKK30KKworI2ltYWdlLW91dHB1dHMgI2FjdHVhbC1pbWFnZSB7CisgIG1hcmdp
bjogMCAxZW07Cit9CisKKyN0ZXN0LW91dHB1dCAjbGFiZWxzIHRoIHsKKyAgdGV4dC1hbGlnbjog
Y2VudGVyOworICBjb2xvcjogIzY2NjsKK30KKworI3RleHQtb3V0cHV0cyBwcmUgeworICBoZWln
aHQ6IDYwMHB4OworICB3aWR0aDogODAwcHg7CisgIG92ZXJmbG93OiBhdXRvOworfQorCisjdGVz
dC1vdXRwdXQgaDIgeworICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2NjYzsKKyAgZm9udC13
ZWlnaHQ6IGJvbGQ7CisgIG1hcmdpbjogMDsKKyAgYmFja2dyb3VuZDogI2VlZTsKK30KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3Jl
YmFzZWxpbmVzZXJ2ZXIvbWFpbi5qcyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5qcwppbmRleCA1NWYxOWE0ZjNl
Mjk3MDljZTNmMTNkZDJlOWQ4ZDExNzRkZTJmNDFhLi4yZDIyZDkyM2NlNTk2YjRhMzc0NzY2MWUy
MzUyOTBhNTNkMDNiMmZmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL21haW4uanMKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZl
ci9tYWluLmpzCkBAIC0yOCw5ICsyOCwyNjIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAordmFy
IEFMTF9ESVJFQ1RPUllfUEFUSCA9ICdbYWxsXSc7CisKK3ZhciByZXN1bHRzOwordmFyIHRlc3Rz
QnlGYWlsdXJlVHlwZSA9IHt9OwordmFyIHRlc3RzQnlEaXJlY3RvcnkgPSB7fTsKK3ZhciBzZWxl
Y3RlZFRlc3RzID0gW107CisKIGZ1bmN0aW9uIG1haW4oKQogeworICAgICQoJ2ZhaWx1cmUtdHlw
ZS1zZWxlY3RvcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHNlbGVjdEZhaWx1cmVUeXBl
KTsKKyAgICAkKCdkaXJlY3Rvcnktc2VsZWN0b3InKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2Un
LCBzZWxlY3REaXJlY3RvcnkpOworICAgICQoJ3Rlc3Qtc2VsZWN0b3InKS5hZGRFdmVudExpc3Rl
bmVyKCdjaGFuZ2UnLCBzZWxlY3RUZXN0KTsKKyAgICAkKCduZXh0LXRlc3QnKS5hZGRFdmVudExp
c3RlbmVyKCdjbGljaycsIG5leHRUZXN0KTsKKyAgICAkKCdwcmV2aW91cy10ZXN0JykuYWRkRXZl
bnRMaXN0ZW5lcignY2xpY2snLCBwcmV2aW91c1Rlc3QpOworCisgICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGlmIChldmVu
dC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LnNoaWZ0
S2V5KSB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChl
dmVudC5rZXlJZGVudGlmaWVyKSB7CisgICAgICAgICAgY2FzZSAnTGVmdCc6IGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7IHByZXZpb3VzVGVzdCgpOyBicmVhazsKKyAgICAgICAgICBjYXNlICdSaWdo
dCc6IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG5leHRUZXN0KCk7IGJyZWFrOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBsb2FkVGV4dCgnL3Jlc3VsdHMuanNvbicsIGZ1bmN0aW9uKHRleHQp
IHsKKyAgICAgICAgcmVzdWx0cyA9IEpTT04ucGFyc2UodGV4dCk7CisgICAgICAgIGRpc3BsYXlS
ZXN1bHRzKCk7CisgICAgfSk7Cit9CisKKy8qKgorICogR3JvdXBzIHRlc3QgcmVzdWx0cyBieSBm
YWlsdXJlIHR5cGUuCisgKi8KK2Z1bmN0aW9uIGRpc3BsYXlSZXN1bHRzKCkKK3sKKyAgICB2YXIg
ZmFpbHVyZVR5cGVTZWxlY3RvciA9ICQoJ2ZhaWx1cmUtdHlwZS1zZWxlY3RvcicpOworICAgIHZh
ciBmYWlsdXJlVHlwZXMgPSBbXTsKKworICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHJlc3VsdHMu
dGVzdHMpIHsKKyAgICAgICAgdmFyIHRlc3QgPSByZXN1bHRzLnRlc3RzW3Rlc3ROYW1lXTsKKyAg
ICAgICAgaWYgKHRlc3QuYWN0dWFsID09ICdQQVNTJykgeworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgdmFyIGZhaWx1cmVUeXBlID0gdGVzdC5hY3R1YWwgKyAnIChl
eHBlY3RlZCAnICsgdGVzdC5leHBlY3RlZCArICcpJzsKKyAgICAgICAgaWYgKCEoZmFpbHVyZVR5
cGUgaW4gdGVzdHNCeUZhaWx1cmVUeXBlKSkgeworICAgICAgICAgIHRlc3RzQnlGYWlsdXJlVHlw
ZVtmYWlsdXJlVHlwZV0gPSBbXTsKKyAgICAgICAgICBmYWlsdXJlVHlwZXMucHVzaChmYWlsdXJl
VHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgdGVzdHNCeUZhaWx1cmVUeXBlW2ZhaWx1cmVUeXBl
XS5wdXNoKHRlc3ROYW1lKTsKKyAgICB9CisKKyAgICAvLyBTb3J0IGJ5IG51bWJlciBvZiBmYWls
dXJlcworICAgIGZhaWx1cmVUeXBlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgcmV0
dXJuIHRlc3RzQnlGYWlsdXJlVHlwZVtiXS5sZW5ndGggLSB0ZXN0c0J5RmFpbHVyZVR5cGVbYV0u
bGVuZ3RoOworICAgIH0pOworCisgICAgZm9yICh2YXIgaSA9IDAsIGZhaWx1cmVUeXBlOyBmYWls
dXJlVHlwZSA9IGZhaWx1cmVUeXBlc1tpXTsgaSsrKSB7CisgICAgICAgIHZhciBmYWlsdXJlVHlw
ZU9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOworICAgICAgICBmYWls
dXJlVHlwZU9wdGlvbi52YWx1ZSA9IGZhaWx1cmVUeXBlOworICAgICAgICBmYWlsdXJlVHlwZU9w
dGlvbi50ZXh0Q29udGVudCA9IGZhaWx1cmVUeXBlICsgJyAtICcgKyB0ZXN0c0J5RmFpbHVyZVR5
cGVbZmFpbHVyZVR5cGVdLmxlbmd0aCArICcgdGVzdHMnOworICAgICAgICBmYWlsdXJlVHlwZVNl
bGVjdG9yLmFwcGVuZENoaWxkKGZhaWx1cmVUeXBlT3B0aW9uKTsKKyAgICB9CisKKyAgICBzZWxl
Y3RGYWlsdXJlVHlwZSgpOworCiAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCds
b2FkaW5nJyk7CiB9CiAKLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVk
JywgbWFpbik7CisvKioKKyAqIEZvciBhIGdpdmVuIGZhaWx1cmUgdHlwZSwgZ2V0cyBhbGwgdGhl
IHRlc3RzIGFuZCBncm91cHMgdGhlbSBieSBkaXJlY3RvcnkKKyAqIChwb3B1bGF0aW5nIHRoZSBk
aXJlY3Rvcnkgc2VsZWN0b3Igd2l0aCB0aGVtKS4KKyAqLworZnVuY3Rpb24gc2VsZWN0RmFpbHVy
ZVR5cGUoKQoreworICAgIHZhciBzZWxlY3RlZEZhaWx1cmVUeXBlID0gZ2V0U2VsZWN0VmFsdWUo
J2ZhaWx1cmUtdHlwZS1zZWxlY3RvcicpOworICAgIHZhciB0ZXN0cyA9IHRlc3RzQnlGYWlsdXJl
VHlwZVtzZWxlY3RlZEZhaWx1cmVUeXBlXTsKKworICAgIHRlc3RzQnlEaXJlY3RvcnkgPSB7fQor
ICAgIHZhciBkaXNwbGF5RGlyZWN0b3J5TmFtZXNCeURpcmVjdG9yeSA9IHt9OworICAgIHZhciBk
aXJlY3RvcmllcyA9IFtdOworCisgICAgLy8gSW5jbHVkZSBhIHNwZWNpYWwgb3B0aW9uIGZvciBh
bGwgdGVzdHMKKyAgICB0ZXN0c0J5RGlyZWN0b3J5W0FMTF9ESVJFQ1RPUllfUEFUSF0gPSB0ZXN0
czsKKyAgICBkaXNwbGF5RGlyZWN0b3J5TmFtZXNCeURpcmVjdG9yeVtBTExfRElSRUNUT1JZX1BB
VEhdID0gJ2FsbCc7CisgICAgZGlyZWN0b3JpZXMucHVzaChBTExfRElSRUNUT1JZX1BBVEgpOwor
CisgICAgLy8gUm9sbCB1cCB0ZXN0cyBieSBhbmNlc3RvciBkaXJlY3RvcmllcworICAgIHRlc3Rz
LmZvckVhY2goZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcGF0aFBpZWNlcyA9IHRlc3Qu
c3BsaXQoJy8nKTsKKyAgICAgICAgdmFyIHBhdGhEaXJlY3RvcmllcyA9IHBhdGhQaWVjZXMuc2xp
Y2UoMCwgcGF0aFBpZWNlcy5sZW5ndGggLTEpOworICAgICAgICB2YXIgYW5jZXN0b3JEaXJlY3Rv
cnkgPSAnJzsKKworICAgICAgICBwYXRoRGlyZWN0b3JpZXMuZm9yRWFjaChmdW5jdGlvbihwYXRo
RGlyZWN0b3J5LCBpbmRleCkgeworICAgICAgICAgICAgYW5jZXN0b3JEaXJlY3RvcnkgKz0gcGF0
aERpcmVjdG9yeSArICcvJzsKKyAgICAgICAgICAgIGlmICghKGFuY2VzdG9yRGlyZWN0b3J5IGlu
IHRlc3RzQnlEaXJlY3RvcnkpKSB7CisgICAgICAgICAgICAgICAgdGVzdHNCeURpcmVjdG9yeVth
bmNlc3RvckRpcmVjdG9yeV0gPSBbXTsKKyAgICAgICAgICAgICAgICB2YXIgZGlzcGxheURpcmVj
dG9yeU5hbWUgPSBuZXcgQXJyYXkoaW5kZXggKiA2KS5qb2luKCcmbmJzcDsnKSArIHBhdGhEaXJl
Y3Rvcnk7CisgICAgICAgICAgICAgICAgZGlzcGxheURpcmVjdG9yeU5hbWVzQnlEaXJlY3Rvcnlb
YW5jZXN0b3JEaXJlY3RvcnldID0gZGlzcGxheURpcmVjdG9yeU5hbWU7CisgICAgICAgICAgICAg
ICAgZGlyZWN0b3JpZXMucHVzaChhbmNlc3RvckRpcmVjdG9yeSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRlc3RzQnlEaXJlY3RvcnlbYW5jZXN0b3JEaXJlY3RvcnldLnB1c2godGVz
dCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGlyZWN0b3JpZXMuc29ydCgpOworCisg
ICAgdmFyIGRpcmVjdG9yeVNlbGVjdG9yID0gJCgnZGlyZWN0b3J5LXNlbGVjdG9yJyk7CisgICAg
ZGlyZWN0b3J5U2VsZWN0b3IuaW5uZXJIVE1MID0gJyc7CisKKyAgICBkaXJlY3Rvcmllcy5mb3JF
YWNoKGZ1bmN0aW9uKGRpcmVjdG9yeSkgeworICAgICAgICB2YXIgZGlyZWN0b3J5T3B0aW9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CisgICAgICAgIGRpcmVjdG9yeU9wdGlv
bi52YWx1ZSA9IGRpcmVjdG9yeTsKKyAgICAgICAgZGlyZWN0b3J5T3B0aW9uLmlubmVySFRNTCA9
CisgICAgICAgICAgICBkaXNwbGF5RGlyZWN0b3J5TmFtZXNCeURpcmVjdG9yeVtkaXJlY3Rvcnld
ICsgJyAtICcgKworICAgICAgICAgICAgdGVzdHNCeURpcmVjdG9yeVtkaXJlY3RvcnldLmxlbmd0
aCArICcgdGVzdHMnOworICAgICAgICBkaXJlY3RvcnlTZWxlY3Rvci5hcHBlbmRDaGlsZChkaXJl
Y3RvcnlPcHRpb24pOworICAgIH0pOworCisgICAgc2VsZWN0RGlyZWN0b3J5KCk7Cit9CisKKy8q
KgorICogRm9yIGEgZ2l2ZW4gZmFpbHVyZSB0eXBlIGFuZCBkaXJlY3RvcnkgYW5kIGZhaWx1cmUg
dHlwZSwgZ2V0cyBhbGwgdGhlIHRlc3RzCisgKiBpbiB0aGF0IGRpcmVjdG9yeSBhbmQgcG9wdWxh
dGVzdCB0aGUgdGVzdCBzZWxlY3RvciB3aXRoIHRoZW0uCisgKi8KK2Z1bmN0aW9uIHNlbGVjdERp
cmVjdG9yeSgpCit7CisgICAgdmFyIHNlbGVjdGVkRGlyZWN0b3J5ID0gZ2V0U2VsZWN0VmFsdWUo
J2RpcmVjdG9yeS1zZWxlY3RvcicpOworICAgIHNlbGVjdGVkVGVzdHMgPSB0ZXN0c0J5RGlyZWN0
b3J5W3NlbGVjdGVkRGlyZWN0b3J5XTsKKworICAgIHNlbGVjdGVkVGVzdHMuc29ydCgpOworCisg
ICAgdmFyIHRlc3RTZWxlY3RvciA9ICQoJ3Rlc3Qtc2VsZWN0b3InKTsKKyAgICB0ZXN0U2VsZWN0
b3IuaW5uZXJIVE1MID0gJyc7CisKKyAgICBzZWxlY3RlZFRlc3RzLmZvckVhY2goZnVuY3Rpb24o
dGVzdE5hbWUpIHsKKyAgICAgICAgdmFyIHRlc3RPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdvcHRpb24nKTsKKyAgICAgICAgdGVzdE9wdGlvbi52YWx1ZSA9IHRlc3ROYW1lOworICAg
ICAgICB2YXIgdGVzdERpc3BsYXlOYW1lID0gdGVzdE5hbWU7CisgICAgICAgIGlmICh0ZXN0TmFt
ZS5sYXN0SW5kZXhPZihzZWxlY3RlZERpcmVjdG9yeSkgPT0gMCkgeworICAgICAgICAgICAgdGVz
dERpc3BsYXlOYW1lID0gdGVzdE5hbWUuc3Vic3RyaW5nKHNlbGVjdGVkRGlyZWN0b3J5Lmxlbmd0
aCk7CisgICAgICAgIH0KKyAgICAgICAgdGVzdE9wdGlvbi5pbm5lckhUTUwgPSAnJm5ic3A7Jm5i
c3A7JyArIHRlc3REaXNwbGF5TmFtZTsKKyAgICAgICAgdGVzdFNlbGVjdG9yLmFwcGVuZENoaWxk
KHRlc3RPcHRpb24pOworICAgIH0pOworCisgICAgc2VsZWN0VGVzdCgpOworfQorCitmdW5jdGlv
biBnZXRTZWxlY3RlZFRlc3QoKQoreworICAgIHJldHVybiBnZXRTZWxlY3RWYWx1ZSgndGVzdC1z
ZWxlY3RvcicpOworfQorCitmdW5jdGlvbiBzZWxlY3RUZXN0KCkKK3sKKyAgICB2YXIgc2VsZWN0
ZWRUZXN0ID0gZ2V0U2VsZWN0ZWRUZXN0KCk7CisKKyAgICBpZiAocmVzdWx0cy50ZXN0c1tzZWxl
Y3RlZFRlc3RdLmFjdHVhbC5pbmRleE9mKCdJTUFHRScpICE9IC0xKSB7CisgICAgICAgICQoJ2lt
YWdlLW91dHB1dHMnKS5zdHlsZS5kaXNwbGF5ID0gJyc7CisgICAgICAgIGRpc3BsYXlJbWFnZVJl
c3VsdHMoc2VsZWN0ZWRUZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICAkKCdpbWFnZS1vdXRw
dXRzJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0cy50
ZXN0c1tzZWxlY3RlZFRlc3RdLmFjdHVhbC5pbmRleE9mKCdURVhUJykgIT0gLTEpIHsKKyAgICAg
ICAgJCgndGV4dC1vdXRwdXRzJykuc3R5bGUuZGlzcGxheSA9ICcnOworICAgICAgICBkaXNwbGF5
VGV4dFJlc3VsdHMoc2VsZWN0ZWRUZXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICAkKCd0ZXh0
LW91dHB1dHMnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIH0KKworICAgIHVwZGF0ZVN0
YXRlKCk7Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZVN0YXRlKCkKK3sKKyAgICB2YXIgdGVzdE5hbWUg
PSBnZXRTZWxlY3RlZFRlc3QoKTsKKyAgICB2YXIgdGVzdEluZGV4ID0gc2VsZWN0ZWRUZXN0cy5p
bmRleE9mKHRlc3ROYW1lKTsKKyAgICB2YXIgdGVzdENvdW50ID0gc2VsZWN0ZWRUZXN0cy5sZW5n
dGgKKyAgICAkKCd0ZXN0LWluZGV4JykudGV4dENvbnRlbnQgPSB0ZXN0SW5kZXggKyAxOworICAg
ICQoJ3Rlc3QtY291bnQnKS50ZXh0Q29udGVudCA9IHRlc3RDb3VudDsKKworICAgICQoJ25leHQt
dGVzdCcpLmRpc2FibGVkID0gdGVzdEluZGV4ID09IHRlc3RDb3VudCAtIDE7CisgICAgJCgncHJl
dmlvdXMtdGVzdCcpLmRpc2FibGVkID0gdGVzdEluZGV4ID09IDA7CisKKyAgICAkKCd0ZXN0LWxp
bmsnKS5ocmVmID0KKyAgICAgICAgJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVu
ay9MYXlvdXRUZXN0cy8nICsgdGVzdE5hbWU7Cit9CisKK2Z1bmN0aW9uIGdldFRlc3RSZXN1bHRV
cmwodGVzdE5hbWUsIG1vZGUpCit7CisgICAgcmV0dXJuICcvdGVzdF9yZXN1bHQ/dGVzdD0nICsg
dGVzdE5hbWUgKyAnJm1vZGU9JyArIG1vZGU7Cit9CisKK2Z1bmN0aW9uIGRpc3BsYXlJbWFnZVJl
c3VsdHModGVzdE5hbWUpCit7CisgICAgZnVuY3Rpb24gZGlzcGxheUltYWdlUmVzdWx0KG1vZGUp
IHsKKyAgICAgICAgJChtb2RlKS5zcmMgPSBnZXRUZXN0UmVzdWx0VXJsKHRlc3ROYW1lLCBtb2Rl
KTsKKyAgICB9CisKKyAgICBkaXNwbGF5SW1hZ2VSZXN1bHQoJ2V4cGVjdGVkLWltYWdlJyk7Cisg
ICAgZGlzcGxheUltYWdlUmVzdWx0KCdhY3R1YWwtaW1hZ2UnKTsKKyAgICBkaXNwbGF5SW1hZ2VS
ZXN1bHQoJ2RpZmYtaW1hZ2UnKTsKK30KKworZnVuY3Rpb24gZGlzcGxheVRleHRSZXN1bHRzKHRl
c3ROYW1lKQoreworICAgIGZ1bmN0aW9uIGxvYWRUZXh0UmVzdWx0KG1vZGUpIHsKKyAgICAgICAg
bG9hZFRleHQoZ2V0VGVzdFJlc3VsdFVybCh0ZXN0TmFtZSwgbW9kZSksIGZ1bmN0aW9uKHRleHQp
IHsKKyAgICAgICAgICAgICQobW9kZSkudGV4dENvbnRlbnQgPSB0ZXh0OworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBsb2FkVGV4dFJlc3VsdCgnZXhwZWN0ZWQtdGV4dCcpOworICAgIGxvYWRU
ZXh0UmVzdWx0KCdhY3R1YWwtdGV4dCcpOworICAgIGxvYWRUZXh0UmVzdWx0KCdkaWZmLXRleHQn
KTsKK30KKworZnVuY3Rpb24gbmV4dFRlc3QoKQoreworICAgIHZhciB0ZXN0U2VsZWN0b3IgPSAk
KCd0ZXN0LXNlbGVjdG9yJyk7CisgICAgdmFyIG5leHRUZXN0SW5kZXggPSB0ZXN0U2VsZWN0b3Iu
c2VsZWN0ZWRJbmRleCArIDE7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKG5leHRU
ZXN0SW5kZXggPT0gdGVzdFNlbGVjdG9yLm9wdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlc3RTZWxlY3Rvci5vcHRpb25zW25leHRU
ZXN0SW5kZXhdLmRpc2FibGVkKSB7CisgICAgICAgICAgICBuZXh0VGVzdEluZGV4Kys7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ZXN0U2VsZWN0b3Iuc2VsZWN0ZWRJbmRleCA9IG5l
eHRUZXN0SW5kZXg7CisgICAgICAgICAgICBzZWxlY3RUZXN0KCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIHByZXZpb3VzVGVzdCgpCit7Cisg
ICAgdmFyIHRlc3RTZWxlY3RvciA9ICQoJ3Rlc3Qtc2VsZWN0b3InKTsKKyAgICB2YXIgcHJldmlv
dXNUZXN0SW5kZXggPSB0ZXN0U2VsZWN0b3Iuc2VsZWN0ZWRJbmRleCAtIDE7CisgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgaWYgKHByZXZpb3VzVGVzdEluZGV4ID09IC0xKSB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlc3RTZWxlY3Rvci5vcHRpb25z
W3ByZXZpb3VzVGVzdEluZGV4XS5kaXNhYmxlZCkgeworICAgICAgICAgICAgcHJldmlvdXNUZXN0
SW5kZXgtLTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RTZWxlY3Rvci5zZWxl
Y3RlZEluZGV4ID0gcHJldmlvdXNUZXN0SW5kZXg7CisgICAgICAgICAgICBzZWxlY3RUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgfQorICAgIH0KK30KKword2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBtYWluKTsKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5CmluZGV4IDBhMzc2NzdiMzA5ZDE2
ZTZkNTUxZjBiMDQ5NTc1YzE2ZmE2ZDIzZTIuLjJhNmNjMWY4Yjk3MjBlZjYxOTFiZTYyZGUyZGNj
Njc3NTg4OGU3NDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lc2VydmVyLnB5CkBAIC00NiwxMiArNDYs
MTMgQEAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KIGZyb20gd3NnaXJlZi5oYW5k
bGVycyBpbXBvcnQgZm9ybWF0X2RhdGVfdGltZQogCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGlj
b21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKLQoraW1wb3J0IHdl
YmtpdHB5LnRoaXJkcGFydHkuc2ltcGxlanNvbiBhcyBzaW1wbGVqc29uCiAKIGNsYXNzIFJlYmFz
ZWxpbmVIVFRQU2VydmVyKEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBodHRwZF9wb3J0LCByZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGh0dHBkX3BvcnQsIHJlc3VsdHNfZGlyZWN0b3J5LCByZXN1bHRzX2pzb24pOgog
ICAgICAgICBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyLl9faW5pdF9fKHNlbGYsICgiIiwgaHR0
cGRfcG9ydCksIFJlYmFzZWxpbmVIVFRQUmVxdWVzdEhhbmRsZXIpCiAgICAgICAgIHNlbGYucmVz
dWx0c19kaXJlY3RvcnkgPSByZXN1bHRzX2RpcmVjdG9yeQorICAgICAgICBzZWxmLnJlc3VsdHNf
anNvbiA9IHJlc3VsdHNfanNvbgogCiAKIGNsYXNzIFJlYmFzZWxpbmVIVFRQUmVxdWVzdEhhbmRs
ZXIoQmFzZUhUVFBTZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC01OSw2ICs2MCw3
IEBAIGNsYXNzIFJlYmFzZWxpbmVIVFRQUmVxdWVzdEhhbmRsZXIoQmFzZUhUVFBTZXJ2ZXIuQmFz
ZUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgICJpbmRleC5odG1sIiwKICAgICAgICAgIm1h
aW4uanMiLAogICAgICAgICAibWFpbi5jc3MiLAorICAgICAgICAidXRpbC5qcyIsCiAgICAgXSkK
IAogICAgIFNUQVRJQ19GSUxFX0RJUkVDVE9SWSA9IG9zLnBhdGguam9pbigKQEAgLTExMSw2ICsx
MTMsMzggQEAgY2xhc3MgUmViYXNlbGluZUhUVFBSZXF1ZXN0SGFuZGxlcihCYXNlSFRUUFNlcnZl
ci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgIyBvdGhlcndpc2UgdGhlcmUncyBh
IGRlYWRsb2NrCiAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogc2VsZi5z
ZXJ2ZXIuc2h1dGRvd24oKSkuc3RhcnQoKQogCisgICAgZGVmIHRlc3RfcmVzdWx0KHNlbGYpOgor
ICAgICAgICAodGVzdF9uYW1lLCB0ZXN0X2V4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KHNl
bGYucXVlcnlbJ3Rlc3QnXVswXSkKKyAgICAgICAgbW9kZSA9IHNlbGYucXVlcnlbJ21vZGUnXVsw
XQorICAgICAgICBpZiBtb2RlID09ICdleHBlY3RlZC1pbWFnZSc6CisgICAgICAgICAgICBmaWxl
X25hbWUgPSB0ZXN0X25hbWUgKyAnLWV4cGVjdGVkLnBuZycKKyAgICAgICAgZWxpZiBtb2RlID09
ICdhY3R1YWwtaW1hZ2UnOgorICAgICAgICAgICAgZmlsZV9uYW1lID0gdGVzdF9uYW1lICsgJy1h
Y3R1YWwucG5nJworICAgICAgICBpZiBtb2RlID09ICdleHBlY3RlZC1jaGVja3N1bSc6CisgICAg
ICAgICAgICBmaWxlX25hbWUgPSB0ZXN0X25hbWUgKyAnLWV4cGVjdGVkLmNoZWNrc3VtJworICAg
ICAgICBlbGlmIG1vZGUgPT0gJ2FjdHVhbC1jaGVja3N1bSc6CisgICAgICAgICAgICBmaWxlX25h
bWUgPSB0ZXN0X25hbWUgKyAnLWFjdHVhbC5jaGVja3N1bScKKyAgICAgICAgZWxpZiBtb2RlID09
ICdkaWZmLWltYWdlJzoKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9IHRlc3RfbmFtZSArICctZGlm
Zi5wbmcnCisgICAgICAgIGlmIG1vZGUgPT0gJ2V4cGVjdGVkLXRleHQnOgorICAgICAgICAgICAg
ZmlsZV9uYW1lID0gdGVzdF9uYW1lICsgJy1leHBlY3RlZC50eHQnCisgICAgICAgIGVsaWYgbW9k
ZSA9PSAnYWN0dWFsLXRleHQnOgorICAgICAgICAgICAgZmlsZV9uYW1lID0gdGVzdF9uYW1lICsg
Jy1hY3R1YWwudHh0JworICAgICAgICBlbGlmIG1vZGUgPT0gJ2RpZmYtdGV4dCc6CisgICAgICAg
ICAgICBmaWxlX25hbWUgPSB0ZXN0X25hbWUgKyAnLWRpZmYudHh0JworCisgICAgICAgIGZpbGVf
cGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnNlcnZlci5yZXN1bHRzX2RpcmVjdG9yeSwgZmlsZV9u
YW1lKQorCisgICAgICAgICMgTGV0IHJlc3VsdHMgYmUgY2FjaGVkIGZvciA2MCBzZWNvbmRzLCBz
byB0aGF0IHRoZXkgY2FuIGJlIHByZS1mZXRjaGVkCisgICAgICAgICMgYnkgdGhlIFVJCisgICAg
ICAgIHNlbGYuX3NlcnZlX2ZpbGUoZmlsZV9wYXRoLCBjYWNoZWFibGVfc2Vjb25kcz02MCkKKwor
ICAgIGRlZiByZXN1bHRzX2pzb24oc2VsZik6CisgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgy
MDApCisgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlv
bi9qc29uJykKKyAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCisgICAgICAgIHNpbXBsZWpzb24u
ZHVtcChzZWxmLnNlcnZlci5yZXN1bHRzX2pzb24sIHNlbGYud2ZpbGUpCisKICAgICBkZWYgX3Nl
cnZlX2ZpbGUoc2VsZiwgZmlsZV9wYXRoLCBjYWNoZWFibGVfc2Vjb25kcz0wKToKICAgICAgICAg
aWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLnNlbmRf
ZXJyb3IoNDA0LCAiRmlsZSBub3QgZm91bmQiKQpAQCAtMTQ3LDExICsxODEsMTkgQEAgY2xhc3Mg
UmViYXNlbGluZVNlcnZlcihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgZGVmIGV4
ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHJlc3VsdHNfZGlyZWN0
b3J5ID0gYXJnc1swXQogCisgICAgICAgIHByaW50ICdQYXJzaW5nIHVuZXhwZWN0ZWRfcmVzdWx0
cy5qc29uLi4uJworICAgICAgICByZXN1bHRzX2pzb25fcGF0aCA9IG9zLnBhdGguam9pbigKKyAg
ICAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5LCAndW5leHBlY3RlZF9yZXN1bHRzLmpzb24nKQor
ICAgICAgICByZXN1bHRzX2pzb25fZmlsZSA9IGZpbGUocmVzdWx0c19qc29uX3BhdGgpCisgICAg
ICAgIHJlc3VsdHNfanNvbiA9IHNpbXBsZWpzb24ubG9hZChyZXN1bHRzX2pzb25fZmlsZSkKKyAg
ICAgICAgcmVzdWx0c19qc29uX2ZpbGUuY2xvc2UoKQorCiAgICAgICAgIHByaW50ICJTdGFydGlu
ZyBzZXJ2ZXIgYXQgaHR0cDovL2xvY2FsaG9zdDolZC8iICUgb3B0aW9ucy5odHRwZF9wb3J0CiAg
ICAgICAgIHByaW50ICgiVXNlIHRoZSAnRXhpdCcgbGluayBpbiB0aGUgVUksIGh0dHA6Ly9sb2Nh
bGhvc3Q6JWQvIgogICAgICAgICAgICAgInF1aXRxdWl0cXVpdCBvciBDdHJsLUMgdG8gc3RvcCIp
ICUgb3B0aW9ucy5odHRwZF9wb3J0CiAKICAgICAgICAgaHR0cGQgPSBSZWJhc2VsaW5lSFRUUFNl
cnZlcigKICAgICAgICAgICAgIGh0dHBkX3BvcnQ9b3B0aW9ucy5odHRwZF9wb3J0LAotICAgICAg
ICAgICAgcmVzdWx0c19kaXJlY3Rvcnk9cmVzdWx0c19kaXJlY3RvcnkpCisgICAgICAgICAgICBy
ZXN1bHRzX2RpcmVjdG9yeT1yZXN1bHRzX2RpcmVjdG9yeSwKKyAgICAgICAgICAgIHJlc3VsdHNf
anNvbj1yZXN1bHRzX2pzb24pCiAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74062</attachid>
            <date>2010-11-16 16:48:38 -0800</date>
            <delta_ts>2010-11-16 17:18:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49626-20101116164837.patch</filename>
            <type>text/plain</type>
            <size>21603</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxZWY5NzhiMThiM2ZjNjkwMDc5MTFhNzQ3YzFmODRjMWI0MmEyMjRkLi44ZGY5M2Uw
NDFjMDg4MWFlMDYyNDM3N2E0MmI5MDlmMzJmNWI1ZDc3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMTEtMTYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBz
ZXJ2ZXI6IGRpc3BsYXkgdGVzdCByZXN1bHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTYyNgorICAgICAgICAKKyAgICAgICAgQWRkcyBiYXNpYyBy
ZXN1bHQgZGlzcGxheSB0byB0aGUgcmViYXNlbGluZSBzZXJ2ZXIuIE9uIHRoZSBQeXRob24gc2lk
ZQorICAgICAgICB0aGlzIGludm9sdmVzOgorICAgICAgICAtIFBhcnNpbmcgdGhlIHVuZXhwZWN0
ZWRfcmVzdWx0cy5qc29uIGludG8gYSBkaWN0aW9uYXJ5LgorICAgICAgICAtIFNlcnZpbmcgaXQg
YXMgSlNPTiB1bmRlciAvcmVzdWx0cy5qc29uLgorICAgICAgICAodGhlIEpTT04gLT4gZGljdCAt
PiBKU09OIHRyYW5zZm9ybSBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgcmlnaHQgbm93LAorICAg
ICAgICBidXQgSSdsbCBuZWVkIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBwYXJzZWQgcmVzdWx0cyBv
biB0aGUgUHl0aG9uIHNpZGUKKyAgICAgICAgZm9yIGZvbGxvdy11cCBjaGFuZ2VzKS4KKyAgICAg
ICAgCisgICAgICAgIE9uIHRoZSB3ZWIgVUkgc2lkZSB0aGlzIGFkZHM6CisgICAgICAgIC0gTWFy
a3VwIGZvciBkaXNwbGF5IGltYWdlIGFuZCB0ZXh0IHJlc3VsdHMgKGV4cGVjdGVkLCBhY3R1YWws
IGRpZmYpLAorICAgICAgICAgIGFuZCBKUyBmb3IgcG9wdWxhdGluZyBpdC4KKyAgICAgICAgLSBN
YXJrdXAgZm9yIGJyZWFraW5nIGRvd24gdGVzdCByZXN1bHRzIGJ5IGZhaWx1cmUgdHlwZSBhbmQg
ZGlyZWN0b3J5LAorICAgICAgICAgIGFuZCBKUyBmb3IgcG9wdWxhdGluZyBpdC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIv
aW5kZXguaHRtbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0
YS9yZWJhc2VsaW5lc2VydmVyL21haW4uY3NzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5qczoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL3V0aWwu
anM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJh
c2VsaW5lc2VydmVyLnB5OgorCiAyMDEwLTExLTE2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhh
dXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rh
dGEvcmViYXNlbGluZXNlcnZlci9pbmRleC5odG1sIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9pbmRleC5odG1sCmluZGV4
IDU2NjdjZDJhZjI3NGQ3ZTAyZTkyZTNiYTc1OGU3YjdlYTc4NjYyOWEuLjE0MmUxNjQ0N2M4MjE0
NjBhNmQ4ZjcyMmM5YmRjMTJmODc1YjQwNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvaW5kZXguaHRt
bAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9y
ZWJhc2VsaW5lc2VydmVyL2luZGV4Lmh0bWwKQEAgLTEsMTEgKzEsMTEgQEAKIDwhRE9DVFlQRSBo
dG1sPgogPCEtLQogICBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAgCisKICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAgbWV0OgotICAK
KwogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICAKKwogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgpAQCAtMzIsOSArMzIsNzMgQEAKIDxoZWFkPgogICA8dGl0bGU+TGF5b3V0IFRlc3QgUmVi
YXNlbGluZSBTZXJ2ZXI8L3RpdGxlPgogICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9t
YWluLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorICA8c2NyaXB0IHNyYz0iL3V0aWwuanMiPjwvc2Ny
aXB0PgogICA8c2NyaXB0IHNyYz0iL21haW4uanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkg
Y2xhc3M9ImxvYWRpbmciPgorCis8ZGl2IGlkPSJoZWFkZXIiPgorICA8ZGl2IGlkPSJjb250cm9s
cyI+CisgICAgPCEtLSBBZGQgYSBkdW1teSA8c2VsZWN0PiBub2RlIHNvIHRoYXQgdGhpcyBsaW5l
cyB1cCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBsZWZ0IC0tPgorICAgIDxzZWxlY3Qgc3R5bGU9InZp
c2liaWxpdHk6IGhpZGRlbiI+PC9zZWxlY3Q+CiAgICAgPGEgaHJlZj0iL3F1aXRxdWl0cXVpdCI+
RXhpdDwvYT4KKyAgPC9kaXY+CisKKyAgPHNwYW4gaWQ9InNlbGVjdG9ycyI+CisgICAgPGxhYmVs
PgorICAgICAgRmFpbHVyZSB0eXBlOgorICAgICAgPHNlbGVjdCBpZD0iZmFpbHVyZS10eXBlLXNl
bGVjdG9yIj48L3NlbGVjdD4KKyAgICA8L2xhYmVsPgorCisgICAgPGxhYmVsPgorICAgICAgRGly
ZWN0b3J5OgorICAgICAgPHNlbGVjdCBpZD0iZGlyZWN0b3J5LXNlbGVjdG9yIj48L3NlbGVjdD4K
KyAgICA8L2xhYmVsPgorCisgICAgPGxhYmVsPgorICAgICAgVGVzdDoKKyAgICAgIDxzZWxlY3Qg
aWQ9InRlc3Qtc2VsZWN0b3IiPjwvc2VsZWN0PgorICAgIDwvbGFiZWw+CisgIDwvc3Bhbj4KKwor
ICA8YSBpZD0idGVzdC1saW5rIj5WaWV3IHRlc3Q8L2E+CisKKyAgPHNwYW4gaWQ9Im5hdi1idXR0
b25zIj4KKyAgICA8YnV0dG9uIGlkPSJwcmV2aW91cy10ZXN0Ij4mbGFxdW87PC9idXR0b24+Cisg
ICAgPHNwYW4gaWQ9InRlc3QtaW5kZXgiPjwvc3Bhbj4gb2YgPHNwYW4gaWQ9InRlc3QtY291bnQi
Pjwvc3Bhbj4KKyAgICA8YnV0dG9uIGlkPSJuZXh0LXRlc3QiPiZyYXF1bzs8L2J1dHRvbj4KKyAg
PC9zcGFuPgorPC9kaXY+CisKKzx0YWJsZSBpZD0idGVzdC1vdXRwdXQiPgorICA8dGhlYWQgaWQ9
ImxhYmVscyI+CisgICAgPHRyPgorICAgICAgPHRoPkV4cGVjdGVkPC90aD4KKyAgICAgIDx0aD5B
Y3R1YWw8L3RoPgorICAgICAgPHRoPkRpZmY8L3RoPgorICAgIDwvdHI+CisgIDwvdGhlYWQ+Cisg
IDx0Ym9keSBpZD0iaW1hZ2Utb3V0cHV0cyIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgIDx0
cj4KKyAgICAgIDx0ZCBjb2xzcGFuPSIzIj48aDI+SW1hZ2U8L2gyPjwvdGQ+CisgICAgPC90cj4K
KyAgICA8dHI+CisgICAgICA8dGQ+PGltZyBpZD0iZXhwZWN0ZWQtaW1hZ2UiPjwvdGQ+CisgICAg
ICA8dGQ+PGltZyBpZD0iYWN0dWFsLWltYWdlIj48L3RkPgorICAgICAgPHRkPjxpbWcgaWQ9ImRp
ZmYtaW1hZ2UiPjwvdGQ+CisgICAgPC90cj4KKyAgPC90Ym9keT4KKyAgPHRib2R5IGlkPSJ0ZXh0
LW91dHB1dHMiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4KKyAgICA8dHI+CisgICAgICA8dGQgY29s
c3Bhbj0iMyI+PGgyPlRleHQ8L2gyPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8
dGQ+PHByZSBpZD0iZXhwZWN0ZWQtdGV4dCI+PC9wcmU+PC90ZD4KKyAgICAgIDx0ZD48cHJlIGlk
PSJhY3R1YWwtdGV4dCI+PC9wcmU+PC90ZD4KKyAgICAgIDx0ZD48cHJlIGlkPSJkaWZmLXRleHQi
PjxwcmU+PC90ZD4KKyAgICA8L3RyPgorICA8L3Rib2R5PgorPC90YWJsZT4KKwogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmNzcyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvbWFpbi5jc3MK
aW5kZXggMzViZDZhNWFkMWM5ZjliYjNiNTgxOTYzMjU2ODE1YWNlYTBlMTdiMi4uMzI5Zjk1ZjQ0
ZjZmNWU3YzE5ODk1N2VmZWQ2YjE3ZjBhOTBjNTA4MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWlu
LmNzcworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0
YS9yZWJhc2VsaW5lc2VydmVyL21haW4uY3NzCkBAIC00Niw3ICs0Niw3IEBAIGRpdiB7CiBhLCAu
bGluayB7CiAgIGNvbG9yOiAjYWFmOwogICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKLSAg
Y3Vyc29yOiBwb2ludGVyOyAgICAgIAorICBjdXJzb3I6IHBvaW50ZXI7CiB9CiAKIC5saW5rLnNl
bGVjdGVkIHsKQEAgLTU0LDMgKzU0LDkxIEBAIGEsIC5saW5rIHsKICAgZm9udC13ZWlnaHQ6IGJv
bGQ7CiAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKIH0KKworI2hlYWRlciB7CisgIHBhZGRpbmc6
IC41ZW0gMWVtOworICBiYWNrZ3JvdW5kOiAjMzMzOworICBjb2xvcjogI2ZmZjsKKyAgLXdlYmtp
dC1ib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjUpOworICBtYXJnaW4tYm90
dG9tOiAxZW07Cit9CisKKyNoZWFkZXIgbGFiZWwgeworICBwYWRkaW5nLXJpZ2h0OiAxZW07Cisg
IGNvbG9yOiAjY2NjOworfQorCisjdGVzdC1saW5rIHsKKyAgbWFyZ2luLXJpZ2h0OiAxZW07Cit9
CisKKyNoZWFkZXIgbGFiZWwgc3BhbiB7CisgIGNvbG9yOiAjZmZmOworICBmb250LXdlaWdodDog
Ym9sZDsKK30KKworI25hdi1idXR0b25zIHsKKyAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKwor
I25hdi1idXR0b25zIGJ1dHRvbiB7CisgIGJhY2tncm91bmQ6ICNmZmY7CisgIGJvcmRlcjogMDsK
KyAgYm9yZGVyLXJhZGl1czogMTBweDsKK30KKworI25hdi1idXR0b25zIGJ1dHRvbjphY3RpdmUg
eworICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1cHggIzMzZiBpbnNldDsKKyAgYmFja2dyb3Vu
ZDogI2FhYTsKK30KKworI25hdi1idXR0b25zIGJ1dHRvbltkaXNhYmxlZF0geworICBvcGFjaXR5
OiAuNTsKK30KKworI2NvbnRyb2xzIHsKKyAgZmxvYXQ6IHJpZ2h0OworfQorCisjdGVzdC1vdXRw
dXQgeworICBib3JkZXItc3BhY2luZzogMDsKKyAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsK
KyAgbWFyZ2luOiAwIGF1dG87CisgIHdpZHRoOiAxMDAlOworfQorCisjdGVzdC1vdXRwdXQgdGQs
CisjdGVzdC1vdXRwdXQgdGggeworICBwYWRkaW5nOiAwOworICB2ZXJ0aWNhbC1hbGlnbjogdG9w
OworfQorCisjaW1hZ2Utb3V0cHV0cyBpbWcgeworICB3aWR0aDogODAwcHg7CisgIGhlaWdodDog
NjAwcHg7CisgIGJvcmRlcjogc29saWQgMXB4ICNkZGQ7CisgIC13ZWJraXQtdXNlci1zZWxlY3Q6
IG5vbmU7CisgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOworfQorCisjaW1hZ2Utb3V0cHV0cyAj
YWN0dWFsLWltYWdlIHsKKyAgbWFyZ2luOiAwIDFlbTsKK30KKworI3Rlc3Qtb3V0cHV0ICNsYWJl
bHMgdGggeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGNvbG9yOiAjNjY2OworfQorCisjdGV4
dC1vdXRwdXRzIHByZSB7CisgIGhlaWdodDogNjAwcHg7CisgIHdpZHRoOiA4MDBweDsKKyAgb3Zl
cmZsb3c6IGF1dG87Cit9CisKKyN0ZXN0LW91dHB1dCBoMiB7CisgIGJvcmRlci1ib3R0b206IHNv
bGlkIDFweCAjY2NjOworICBmb250LXdlaWdodDogYm9sZDsKKyAgbWFyZ2luOiAwOworICBiYWNr
Z3JvdW5kOiAjZWVlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9tYWluLmpzIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2RhdGEvcmViYXNlbGluZXNlcnZlci9t
YWluLmpzCmluZGV4IDU1ZjE5YTRmM2UyOTcwOWNlM2YxM2RkMmU5ZDhkMTE3NGRlMmY0MWEuLjEw
OTg2NjcxYmExMjY2MDhhZmM0MTYyZWExMDc5YzljNWZjMzkwZTUgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kYXRhL3JlYmFzZWxpbmVzZXJ2
ZXIvbWFpbi5qcworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL21haW4uanMKQEAgLTI4LDkgKzI4LDI2MiBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCit2YXIgQUxMX0RJUkVDVE9SWV9QQVRIID0gJ1thbGxdJzsKKwor
dmFyIHJlc3VsdHM7Cit2YXIgdGVzdHNCeUZhaWx1cmVUeXBlID0ge307Cit2YXIgdGVzdHNCeURp
cmVjdG9yeSA9IHt9OwordmFyIHNlbGVjdGVkVGVzdHMgPSBbXTsKKwogZnVuY3Rpb24gbWFpbigp
CiB7CisgICAgJCgnZmFpbHVyZS10eXBlLXNlbGVjdG9yJykuYWRkRXZlbnRMaXN0ZW5lcignY2hh
bmdlJywgc2VsZWN0RmFpbHVyZVR5cGUpOworICAgICQoJ2RpcmVjdG9yeS1zZWxlY3RvcicpLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHNlbGVjdERpcmVjdG9yeSk7CisgICAgJCgndGVzdC1z
ZWxlY3RvcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHNlbGVjdFRlc3QpOworICAgICQo
J25leHQtdGVzdCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbmV4dFRlc3QpOworICAgICQo
J3ByZXZpb3VzLXRlc3QnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHByZXZpb3VzVGVzdCk7
CisKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50
Lm1ldGFLZXkgfHwgZXZlbnQuc2hpZnRLZXkpIHsKKyAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUlkZW50aWZpZXIpIHsKKyAgICAgICAgICBj
YXNlICdMZWZ0JzogZXZlbnQucHJldmVudERlZmF1bHQoKTsgcHJldmlvdXNUZXN0KCk7IGJyZWFr
OworICAgICAgICAgIGNhc2UgJ1JpZ2h0JzogZXZlbnQucHJldmVudERlZmF1bHQoKTsgbmV4dFRl
c3QoKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGxvYWRUZXh0KCcvcmVzdWx0
cy5qc29uJywgZnVuY3Rpb24odGV4dCkgeworICAgICAgICByZXN1bHRzID0gSlNPTi5wYXJzZSh0
ZXh0KTsKKyAgICAgICAgZGlzcGxheVJlc3VsdHMoKTsKKyAgICB9KTsKK30KKworLyoqCisgKiBH
cm91cHMgdGVzdCByZXN1bHRzIGJ5IGZhaWx1cmUgdHlwZS4KKyAqLworZnVuY3Rpb24gZGlzcGxh
eVJlc3VsdHMoKQoreworICAgIHZhciBmYWlsdXJlVHlwZVNlbGVjdG9yID0gJCgnZmFpbHVyZS10
eXBlLXNlbGVjdG9yJyk7CisgICAgdmFyIGZhaWx1cmVUeXBlcyA9IFtdOworCisgICAgZm9yICh2
YXIgdGVzdE5hbWUgaW4gcmVzdWx0cy50ZXN0cykgeworICAgICAgICB2YXIgdGVzdCA9IHJlc3Vs
dHMudGVzdHNbdGVzdE5hbWVdOworICAgICAgICBpZiAodGVzdC5hY3R1YWwgPT0gJ1BBU1MnKSB7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgZmFpbHVyZVR5
cGUgPSB0ZXN0LmFjdHVhbCArICcgKGV4cGVjdGVkICcgKyB0ZXN0LmV4cGVjdGVkICsgJyknOwor
ICAgICAgICBpZiAoIShmYWlsdXJlVHlwZSBpbiB0ZXN0c0J5RmFpbHVyZVR5cGUpKSB7CisgICAg
ICAgICAgdGVzdHNCeUZhaWx1cmVUeXBlW2ZhaWx1cmVUeXBlXSA9IFtdOworICAgICAgICAgIGZh
aWx1cmVUeXBlcy5wdXNoKGZhaWx1cmVUeXBlKTsKKyAgICAgICAgfQorICAgICAgICB0ZXN0c0J5
RmFpbHVyZVR5cGVbZmFpbHVyZVR5cGVdLnB1c2godGVzdE5hbWUpOworICAgIH0KKworICAgIC8v
IFNvcnQgYnkgbnVtYmVyIG9mIGZhaWx1cmVzCisgICAgZmFpbHVyZVR5cGVzLnNvcnQoZnVuY3Rp
b24oYSwgYikgeworICAgICAgICByZXR1cm4gdGVzdHNCeUZhaWx1cmVUeXBlW2JdLmxlbmd0aCAt
IHRlc3RzQnlGYWlsdXJlVHlwZVthXS5sZW5ndGg7CisgICAgfSk7CisKKyAgICBmb3IgKHZhciBp
ID0gMCwgZmFpbHVyZVR5cGU7IGZhaWx1cmVUeXBlID0gZmFpbHVyZVR5cGVzW2ldOyBpKyspIHsK
KyAgICAgICAgdmFyIGZhaWx1cmVUeXBlT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
b3B0aW9uJyk7CisgICAgICAgIGZhaWx1cmVUeXBlT3B0aW9uLnZhbHVlID0gZmFpbHVyZVR5cGU7
CisgICAgICAgIGZhaWx1cmVUeXBlT3B0aW9uLnRleHRDb250ZW50ID0gZmFpbHVyZVR5cGUgKyAn
IC0gJyArIHRlc3RzQnlGYWlsdXJlVHlwZVtmYWlsdXJlVHlwZV0ubGVuZ3RoICsgJyB0ZXN0cyc7
CisgICAgICAgIGZhaWx1cmVUeXBlU2VsZWN0b3IuYXBwZW5kQ2hpbGQoZmFpbHVyZVR5cGVPcHRp
b24pOworICAgIH0KKworICAgIHNlbGVjdEZhaWx1cmVUeXBlKCk7CisKICAgICBkb2N1bWVudC5i
b2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2xvYWRpbmcnKTsKIH0KIAorLyoqCisgKiBGb3IgYSBnaXZl
biBmYWlsdXJlIHR5cGUsIGdldHMgYWxsIHRoZSB0ZXN0cyBhbmQgZ3JvdXBzIHRoZW0gYnkgZGly
ZWN0b3J5CisgKiAocG9wdWxhdGluZyB0aGUgZGlyZWN0b3J5IHNlbGVjdG9yIHdpdGggdGhlbSku
CisgKi8KK2Z1bmN0aW9uIHNlbGVjdEZhaWx1cmVUeXBlKCkKK3sKKyAgICB2YXIgc2VsZWN0ZWRG
YWlsdXJlVHlwZSA9IGdldFNlbGVjdFZhbHVlKCdmYWlsdXJlLXR5cGUtc2VsZWN0b3InKTsKKyAg
ICB2YXIgdGVzdHMgPSB0ZXN0c0J5RmFpbHVyZVR5cGVbc2VsZWN0ZWRGYWlsdXJlVHlwZV07CisK
KyAgICB0ZXN0c0J5RGlyZWN0b3J5ID0ge30KKyAgICB2YXIgZGlzcGxheURpcmVjdG9yeU5hbWVz
QnlEaXJlY3RvcnkgPSB7fTsKKyAgICB2YXIgZGlyZWN0b3JpZXMgPSBbXTsKKworICAgIC8vIElu
Y2x1ZGUgYSBzcGVjaWFsIG9wdGlvbiBmb3IgYWxsIHRlc3RzCisgICAgdGVzdHNCeURpcmVjdG9y
eVtBTExfRElSRUNUT1JZX1BBVEhdID0gdGVzdHM7CisgICAgZGlzcGxheURpcmVjdG9yeU5hbWVz
QnlEaXJlY3RvcnlbQUxMX0RJUkVDVE9SWV9QQVRIXSA9ICdhbGwnOworICAgIGRpcmVjdG9yaWVz
LnB1c2goQUxMX0RJUkVDVE9SWV9QQVRIKTsKKworICAgIC8vIFJvbGwgdXAgdGVzdHMgYnkgYW5j
ZXN0b3IgZGlyZWN0b3JpZXMKKyAgICB0ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3QpIHsKKyAg
ICAgICAgdmFyIHBhdGhQaWVjZXMgPSB0ZXN0LnNwbGl0KCcvJyk7CisgICAgICAgIHZhciBwYXRo
RGlyZWN0b3JpZXMgPSBwYXRoUGllY2VzLnNsaWNlKDAsIHBhdGhQaWVjZXMubGVuZ3RoIC0xKTsK
KyAgICAgICAgdmFyIGFuY2VzdG9yRGlyZWN0b3J5ID0gJyc7CisKKyAgICAgICAgcGF0aERpcmVj
dG9yaWVzLmZvckVhY2goZnVuY3Rpb24ocGF0aERpcmVjdG9yeSwgaW5kZXgpIHsKKyAgICAgICAg
ICAgIGFuY2VzdG9yRGlyZWN0b3J5ICs9IHBhdGhEaXJlY3RvcnkgKyAnLyc7CisgICAgICAgICAg
ICBpZiAoIShhbmNlc3RvckRpcmVjdG9yeSBpbiB0ZXN0c0J5RGlyZWN0b3J5KSkgeworICAgICAg
ICAgICAgICAgIHRlc3RzQnlEaXJlY3RvcnlbYW5jZXN0b3JEaXJlY3RvcnldID0gW107CisgICAg
ICAgICAgICAgICAgdmFyIGRpc3BsYXlEaXJlY3RvcnlOYW1lID0gbmV3IEFycmF5KGluZGV4ICog
Nikuam9pbignJm5ic3A7JykgKyBwYXRoRGlyZWN0b3J5OworICAgICAgICAgICAgICAgIGRpc3Bs
YXlEaXJlY3RvcnlOYW1lc0J5RGlyZWN0b3J5W2FuY2VzdG9yRGlyZWN0b3J5XSA9IGRpc3BsYXlE
aXJlY3RvcnlOYW1lOworICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzLnB1c2goYW5jZXN0b3JE
aXJlY3RvcnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0c0J5RGlyZWN0b3J5
W2FuY2VzdG9yRGlyZWN0b3J5XS5wdXNoKHRlc3QpOworICAgICAgICB9KTsKKyAgICB9KTsKKwor
ICAgIGRpcmVjdG9yaWVzLnNvcnQoKTsKKworICAgIHZhciBkaXJlY3RvcnlTZWxlY3RvciA9ICQo
J2RpcmVjdG9yeS1zZWxlY3RvcicpOworICAgIGRpcmVjdG9yeVNlbGVjdG9yLmlubmVySFRNTCA9
ICcnOworCisgICAgZGlyZWN0b3JpZXMuZm9yRWFjaChmdW5jdGlvbihkaXJlY3RvcnkpIHsKKyAg
ICAgICAgdmFyIGRpcmVjdG9yeU9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlv
bicpOworICAgICAgICBkaXJlY3RvcnlPcHRpb24udmFsdWUgPSBkaXJlY3Rvcnk7CisgICAgICAg
IGRpcmVjdG9yeU9wdGlvbi5pbm5lckhUTUwgPQorICAgICAgICAgICAgZGlzcGxheURpcmVjdG9y
eU5hbWVzQnlEaXJlY3RvcnlbZGlyZWN0b3J5XSArICcgLSAnICsKKyAgICAgICAgICAgIHRlc3Rz
QnlEaXJlY3RvcnlbZGlyZWN0b3J5XS5sZW5ndGggKyAnIHRlc3RzJzsKKyAgICAgICAgZGlyZWN0
b3J5U2VsZWN0b3IuYXBwZW5kQ2hpbGQoZGlyZWN0b3J5T3B0aW9uKTsKKyAgICB9KTsKKworICAg
IHNlbGVjdERpcmVjdG9yeSgpOworfQorCisvKioKKyAqIEZvciBhIGdpdmVuIGZhaWx1cmUgdHlw
ZSBhbmQgZGlyZWN0b3J5IGFuZCBmYWlsdXJlIHR5cGUsIGdldHMgYWxsIHRoZSB0ZXN0cworICog
aW4gdGhhdCBkaXJlY3RvcnkgYW5kIHBvcHVsYXRlc3QgdGhlIHRlc3Qgc2VsZWN0b3Igd2l0aCB0
aGVtLgorICovCitmdW5jdGlvbiBzZWxlY3REaXJlY3RvcnkoKQoreworICAgIHZhciBzZWxlY3Rl
ZERpcmVjdG9yeSA9IGdldFNlbGVjdFZhbHVlKCdkaXJlY3Rvcnktc2VsZWN0b3InKTsKKyAgICBz
ZWxlY3RlZFRlc3RzID0gdGVzdHNCeURpcmVjdG9yeVtzZWxlY3RlZERpcmVjdG9yeV07CisKKyAg
ICBzZWxlY3RlZFRlc3RzLnNvcnQoKTsKKworICAgIHZhciB0ZXN0U2VsZWN0b3IgPSAkKCd0ZXN0
LXNlbGVjdG9yJyk7CisgICAgdGVzdFNlbGVjdG9yLmlubmVySFRNTCA9ICcnOworCisgICAgc2Vs
ZWN0ZWRUZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7CisgICAgICAgIHZhciB0ZXN0
T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CisgICAgICAgIHRlc3RP
cHRpb24udmFsdWUgPSB0ZXN0TmFtZTsKKyAgICAgICAgdmFyIHRlc3REaXNwbGF5TmFtZSA9IHRl
c3ROYW1lOworICAgICAgICBpZiAodGVzdE5hbWUubGFzdEluZGV4T2Yoc2VsZWN0ZWREaXJlY3Rv
cnkpID09IDApIHsKKyAgICAgICAgICAgIHRlc3REaXNwbGF5TmFtZSA9IHRlc3ROYW1lLnN1YnN0
cmluZyhzZWxlY3RlZERpcmVjdG9yeS5sZW5ndGgpOworICAgICAgICB9CisgICAgICAgIHRlc3RP
cHRpb24uaW5uZXJIVE1MID0gJyZuYnNwOyZuYnNwOycgKyB0ZXN0RGlzcGxheU5hbWU7CisgICAg
ICAgIHRlc3RTZWxlY3Rvci5hcHBlbmRDaGlsZCh0ZXN0T3B0aW9uKTsKKyAgICB9KTsKKworICAg
IHNlbGVjdFRlc3QoKTsKK30KKworZnVuY3Rpb24gZ2V0U2VsZWN0ZWRUZXN0KCkKK3sKKyAgICBy
ZXR1cm4gZ2V0U2VsZWN0VmFsdWUoJ3Rlc3Qtc2VsZWN0b3InKTsKK30KKworZnVuY3Rpb24gc2Vs
ZWN0VGVzdCgpCit7CisgICAgdmFyIHNlbGVjdGVkVGVzdCA9IGdldFNlbGVjdGVkVGVzdCgpOwor
CisgICAgaWYgKHJlc3VsdHMudGVzdHNbc2VsZWN0ZWRUZXN0XS5hY3R1YWwuaW5kZXhPZignSU1B
R0UnKSAhPSAtMSkgeworICAgICAgICAkKCdpbWFnZS1vdXRwdXRzJykuc3R5bGUuZGlzcGxheSA9
ICcnOworICAgICAgICBkaXNwbGF5SW1hZ2VSZXN1bHRzKHNlbGVjdGVkVGVzdCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgJCgnaW1hZ2Utb3V0cHV0cycpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CisgICAgfQorCisgICAgaWYgKHJlc3VsdHMudGVzdHNbc2VsZWN0ZWRUZXN0XS5hY3R1YWwuaW5k
ZXhPZignVEVYVCcpICE9IC0xKSB7CisgICAgICAgICQoJ3RleHQtb3V0cHV0cycpLnN0eWxlLmRp
c3BsYXkgPSAnJzsKKyAgICAgICAgZGlzcGxheVRleHRSZXN1bHRzKHNlbGVjdGVkVGVzdCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgJCgndGV4dC1vdXRwdXRzJykuc3R5bGUuZGlzcGxheSA9ICdu
b25lJzsKKyAgICB9CisKKyAgICB1cGRhdGVTdGF0ZSgpOworfQorCitmdW5jdGlvbiB1cGRhdGVT
dGF0ZSgpCit7CisgICAgdmFyIHRlc3ROYW1lID0gZ2V0U2VsZWN0ZWRUZXN0KCk7CisgICAgdmFy
IHRlc3RJbmRleCA9IHNlbGVjdGVkVGVzdHMuaW5kZXhPZih0ZXN0TmFtZSk7CisgICAgdmFyIHRl
c3RDb3VudCA9IHNlbGVjdGVkVGVzdHMubGVuZ3RoCisgICAgJCgndGVzdC1pbmRleCcpLnRleHRD
b250ZW50ID0gdGVzdEluZGV4ICsgMTsKKyAgICAkKCd0ZXN0LWNvdW50JykudGV4dENvbnRlbnQg
PSB0ZXN0Q291bnQ7CisKKyAgICAkKCduZXh0LXRlc3QnKS5kaXNhYmxlZCA9IHRlc3RJbmRleCA9
PSB0ZXN0Q291bnQgLSAxOworICAgICQoJ3ByZXZpb3VzLXRlc3QnKS5kaXNhYmxlZCA9IHRlc3RJ
bmRleCA9PSAwOworCisgICAgJCgndGVzdC1saW5rJykuaHJlZiA9CisgICAgICAgICdodHRwOi8v
dHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvJyArIHRlc3ROYW1lOwor
fQorCitmdW5jdGlvbiBnZXRUZXN0UmVzdWx0VXJsKHRlc3ROYW1lLCBtb2RlKQoreworICAgIHJl
dHVybiAnL3Rlc3RfcmVzdWx0P3Rlc3Q9JyArIHRlc3ROYW1lICsgJyZtb2RlPScgKyBtb2RlOwor
fQorCitmdW5jdGlvbiBkaXNwbGF5SW1hZ2VSZXN1bHRzKHRlc3ROYW1lKQoreworICAgIGZ1bmN0
aW9uIGRpc3BsYXlJbWFnZVJlc3VsdChtb2RlKSB7CisgICAgICAgICQobW9kZSkuc3JjID0gZ2V0
VGVzdFJlc3VsdFVybCh0ZXN0TmFtZSwgbW9kZSk7CisgICAgfQorCisgICAgZGlzcGxheUltYWdl
UmVzdWx0KCdleHBlY3RlZC1pbWFnZScpOworICAgIGRpc3BsYXlJbWFnZVJlc3VsdCgnYWN0dWFs
LWltYWdlJyk7CisgICAgZGlzcGxheUltYWdlUmVzdWx0KCdkaWZmLWltYWdlJyk7Cit9CisKK2Z1
bmN0aW9uIGRpc3BsYXlUZXh0UmVzdWx0cyh0ZXN0TmFtZSkKK3sKKyAgICBmdW5jdGlvbiBsb2Fk
VGV4dFJlc3VsdChtb2RlKSB7CisgICAgICAgIGxvYWRUZXh0KGdldFRlc3RSZXN1bHRVcmwodGVz
dE5hbWUsIG1vZGUpLCBmdW5jdGlvbih0ZXh0KSB7CisgICAgICAgICAgICAkKG1vZGUpLnRleHRD
b250ZW50ID0gdGV4dDsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgbG9hZFRleHRSZXN1bHQo
J2V4cGVjdGVkLXRleHQnKTsKKyAgICBsb2FkVGV4dFJlc3VsdCgnYWN0dWFsLXRleHQnKTsKKyAg
ICBsb2FkVGV4dFJlc3VsdCgnZGlmZi10ZXh0Jyk7Cit9CisKK2Z1bmN0aW9uIG5leHRUZXN0KCkK
K3sKKyAgICB2YXIgdGVzdFNlbGVjdG9yID0gJCgndGVzdC1zZWxlY3RvcicpOworICAgIHZhciBu
ZXh0VGVzdEluZGV4ID0gdGVzdFNlbGVjdG9yLnNlbGVjdGVkSW5kZXggKyAxOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIGlmIChuZXh0VGVzdEluZGV4ID09IHRlc3RTZWxlY3Rvci5vcHRp
b25zLmxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
ICh0ZXN0U2VsZWN0b3Iub3B0aW9uc1tuZXh0VGVzdEluZGV4XS5kaXNhYmxlZCkgeworICAgICAg
ICAgICAgbmV4dFRlc3RJbmRleCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGVz
dFNlbGVjdG9yLnNlbGVjdGVkSW5kZXggPSBuZXh0VGVzdEluZGV4OworICAgICAgICAgICAgc2Vs
ZWN0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiBwcmV2aW91c1Rlc3QoKQoreworICAgIHZhciB0ZXN0U2VsZWN0b3IgPSAkKCd0ZXN0
LXNlbGVjdG9yJyk7CisgICAgdmFyIHByZXZpb3VzVGVzdEluZGV4ID0gdGVzdFNlbGVjdG9yLnNl
bGVjdGVkSW5kZXggLSAxOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChwcmV2aW91
c1Rlc3RJbmRleCA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGlmICh0ZXN0U2VsZWN0b3Iub3B0aW9uc1twcmV2aW91c1Rlc3RJbmRleF0uZGlzYWJsZWQp
IHsKKyAgICAgICAgICAgIHByZXZpb3VzVGVzdEluZGV4LS07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0ZXN0U2VsZWN0b3Iuc2VsZWN0ZWRJbmRleCA9IHByZXZpb3VzVGVzdEluZGV4
OworICAgICAgICAgICAgc2VsZWN0VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IH0KKyAgICB9Cit9CisKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVk
JywgbWFpbik7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL3V0aWwuanMgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZGF0YS9yZWJhc2VsaW5lc2VydmVyL3V0aWwuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2JkNzQyN2YyOTQyMmQxYmUzYTM5NzVlNzFjZDY2MmIyNmM0MTQyMAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9kYXRhL3JlYmFzZWxpbmVzZXJ2ZXIvdXRpbC5qcwpAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordmFyIHJlc3Vs
dHM7Cit2YXIgdGVzdHNCeUZhaWx1cmVUeXBlID0ge307Cit2YXIgdGVzdHNCeURpcmVjdG9yeSA9
IHt9OwordmFyIHNlbGVjdGVkVGVzdHMgPSBbXTsKKworZnVuY3Rpb24gJChpZCkKK3sKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworfQorCitmdW5jdGlvbiBnZXRTZWxl
Y3RWYWx1ZShpZCkgCit7CisgICAgdmFyIHNlbGVjdCA9ICQoaWQpOworICAgIGlmIChzZWxlY3Qu
c2VsZWN0ZWRJbmRleCA9PSAtMSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9IGVsc2Ug
eworICAgICAgICByZXR1cm4gc2VsZWN0Lm9wdGlvbnNbc2VsZWN0LnNlbGVjdGVkSW5kZXhdLnZh
bHVlOworICAgIH0KK30KKworZnVuY3Rpb24gbG9hZFRleHQodXJsLCBjYWxsYmFjaykKK3sKKyAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oJ0dFVCcsIHVy
bCk7CisgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsgY2FsbGJh
Y2soeGhyLnJlc3BvbnNlVGV4dCk7IH0pOworICAgIHhoci5zZW5kKCk7Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVzZXJ2ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weQppbmRleCAwYTM3Njc3
YjMwOWQxNmU2ZDU1MWYwYjA0OTU3NWMxNmZhNmQyM2UyLi4yYTZjYzFmOGI5NzIwZWY2MTkxYmU2
MmRlMmRjYzY3NzU4ODhlNzQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZXNlcnZlci5weQpAQCAtNDYs
MTIgKzQ2LDEzIEBAIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiBmcm9tIHdzZ2ly
ZWYuaGFuZGxlcnMgaW1wb3J0IGZvcm1hdF9kYXRlX3RpbWUKIAogZnJvbSB3ZWJraXRweS50b29s
Lm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCi0KK2lt
cG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMgc2ltcGxlanNvbgogCiBjbGFz
cyBSZWJhc2VsaW5lSFRUUFNlcnZlcihCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgaHR0cGRfcG9ydCwgcmVzdWx0c19kaXJlY3RvcnkpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBodHRwZF9wb3J0LCByZXN1bHRzX2RpcmVjdG9yeSwgcmVzdWx0c19q
c29uKToKICAgICAgICAgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlci5fX2luaXRfXyhzZWxmLCAo
IiIsIGh0dHBkX3BvcnQpLCBSZWJhc2VsaW5lSFRUUFJlcXVlc3RIYW5kbGVyKQogICAgICAgICBz
ZWxmLnJlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKKyAgICAgICAgc2VsZi5y
ZXN1bHRzX2pzb24gPSByZXN1bHRzX2pzb24KIAogCiBjbGFzcyBSZWJhc2VsaW5lSFRUUFJlcXVl
c3RIYW5kbGVyKEJhc2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgpAQCAtNTks
NiArNjAsNyBAQCBjbGFzcyBSZWJhc2VsaW5lSFRUUFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQU2Vy
dmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAiaW5kZXguaHRtbCIsCiAgICAg
ICAgICJtYWluLmpzIiwKICAgICAgICAgIm1haW4uY3NzIiwKKyAgICAgICAgInV0aWwuanMiLAog
ICAgIF0pCiAKICAgICBTVEFUSUNfRklMRV9ESVJFQ1RPUlkgPSBvcy5wYXRoLmpvaW4oCkBAIC0x
MTEsNiArMTEzLDM4IEBAIGNsYXNzIFJlYmFzZWxpbmVIVFRQUmVxdWVzdEhhbmRsZXIoQmFzZUhU
VFBTZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgICMgb3RoZXJ3aXNlIHRo
ZXJlJ3MgYSBkZWFkbG9jawogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6
IHNlbGYuc2VydmVyLnNodXRkb3duKCkpLnN0YXJ0KCkKIAorICAgIGRlZiB0ZXN0X3Jlc3VsdChz
ZWxmKToKKyAgICAgICAgKHRlc3RfbmFtZSwgdGVzdF9leHRlbnNpb24pID0gb3MucGF0aC5zcGxp
dGV4dChzZWxmLnF1ZXJ5Wyd0ZXN0J11bMF0pCisgICAgICAgIG1vZGUgPSBzZWxmLnF1ZXJ5Wydt
b2RlJ11bMF0KKyAgICAgICAgaWYgbW9kZSA9PSAnZXhwZWN0ZWQtaW1hZ2UnOgorICAgICAgICAg
ICAgZmlsZV9uYW1lID0gdGVzdF9uYW1lICsgJy1leHBlY3RlZC5wbmcnCisgICAgICAgIGVsaWYg
bW9kZSA9PSAnYWN0dWFsLWltYWdlJzoKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9IHRlc3RfbmFt
ZSArICctYWN0dWFsLnBuZycKKyAgICAgICAgaWYgbW9kZSA9PSAnZXhwZWN0ZWQtY2hlY2tzdW0n
OgorICAgICAgICAgICAgZmlsZV9uYW1lID0gdGVzdF9uYW1lICsgJy1leHBlY3RlZC5jaGVja3N1
bScKKyAgICAgICAgZWxpZiBtb2RlID09ICdhY3R1YWwtY2hlY2tzdW0nOgorICAgICAgICAgICAg
ZmlsZV9uYW1lID0gdGVzdF9uYW1lICsgJy1hY3R1YWwuY2hlY2tzdW0nCisgICAgICAgIGVsaWYg
bW9kZSA9PSAnZGlmZi1pbWFnZSc6CisgICAgICAgICAgICBmaWxlX25hbWUgPSB0ZXN0X25hbWUg
KyAnLWRpZmYucG5nJworICAgICAgICBpZiBtb2RlID09ICdleHBlY3RlZC10ZXh0JzoKKyAgICAg
ICAgICAgIGZpbGVfbmFtZSA9IHRlc3RfbmFtZSArICctZXhwZWN0ZWQudHh0JworICAgICAgICBl
bGlmIG1vZGUgPT0gJ2FjdHVhbC10ZXh0JzoKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9IHRlc3Rf
bmFtZSArICctYWN0dWFsLnR4dCcKKyAgICAgICAgZWxpZiBtb2RlID09ICdkaWZmLXRleHQnOgor
ICAgICAgICAgICAgZmlsZV9uYW1lID0gdGVzdF9uYW1lICsgJy1kaWZmLnR4dCcKKworICAgICAg
ICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5zZXJ2ZXIucmVzdWx0c19kaXJlY3Rvcnks
IGZpbGVfbmFtZSkKKworICAgICAgICAjIExldCByZXN1bHRzIGJlIGNhY2hlZCBmb3IgNjAgc2Vj
b25kcywgc28gdGhhdCB0aGV5IGNhbiBiZSBwcmUtZmV0Y2hlZAorICAgICAgICAjIGJ5IHRoZSBV
SQorICAgICAgICBzZWxmLl9zZXJ2ZV9maWxlKGZpbGVfcGF0aCwgY2FjaGVhYmxlX3NlY29uZHM9
NjApCisKKyAgICBkZWYgcmVzdWx0c19qc29uKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRfcmVz
cG9uc2UoMjAwKQorICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBw
bGljYXRpb24vanNvbicpCisgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQorICAgICAgICBzaW1w
bGVqc29uLmR1bXAoc2VsZi5zZXJ2ZXIucmVzdWx0c19qc29uLCBzZWxmLndmaWxlKQorCiAgICAg
ZGVmIF9zZXJ2ZV9maWxlKHNlbGYsIGZpbGVfcGF0aCwgY2FjaGVhYmxlX3NlY29uZHM9MCk6CiAg
ICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpOgogICAgICAgICAgICAgc2Vs
Zi5zZW5kX2Vycm9yKDQwNCwgIkZpbGUgbm90IGZvdW5kIikKQEAgLTE0NywxMSArMTgxLDE5IEBA
IGNsYXNzIFJlYmFzZWxpbmVTZXJ2ZXIoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAg
IGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICByZXN1bHRz
X2RpcmVjdG9yeSA9IGFyZ3NbMF0KIAorICAgICAgICBwcmludCAnUGFyc2luZyB1bmV4cGVjdGVk
X3Jlc3VsdHMuanNvbi4uLicKKyAgICAgICAgcmVzdWx0c19qc29uX3BhdGggPSBvcy5wYXRoLmpv
aW4oCisgICAgICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSwgJ3VuZXhwZWN0ZWRfcmVzdWx0cy5q
c29uJykKKyAgICAgICAgcmVzdWx0c19qc29uX2ZpbGUgPSBmaWxlKHJlc3VsdHNfanNvbl9wYXRo
KQorICAgICAgICByZXN1bHRzX2pzb24gPSBzaW1wbGVqc29uLmxvYWQocmVzdWx0c19qc29uX2Zp
bGUpCisgICAgICAgIHJlc3VsdHNfanNvbl9maWxlLmNsb3NlKCkKKwogICAgICAgICBwcmludCAi
U3RhcnRpbmcgc2VydmVyIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6JWQvIiAlIG9wdGlvbnMuaHR0cGRf
cG9ydAogICAgICAgICBwcmludCAoIlVzZSB0aGUgJ0V4aXQnIGxpbmsgaW4gdGhlIFVJLCBodHRw
Oi8vbG9jYWxob3N0OiVkLyIKICAgICAgICAgICAgICJxdWl0cXVpdHF1aXQgb3IgQ3RybC1DIHRv
IHN0b3AiKSAlIG9wdGlvbnMuaHR0cGRfcG9ydAogCiAgICAgICAgIGh0dHBkID0gUmViYXNlbGlu
ZUhUVFBTZXJ2ZXIoCiAgICAgICAgICAgICBodHRwZF9wb3J0PW9wdGlvbnMuaHR0cGRfcG9ydCwK
LSAgICAgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5PXJlc3VsdHNfZGlyZWN0b3J5KQorICAgICAg
ICAgICAgcmVzdWx0c19kaXJlY3Rvcnk9cmVzdWx0c19kaXJlY3RvcnksCisgICAgICAgICAgICBy
ZXN1bHRzX2pzb249cmVzdWx0c19qc29uKQogICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkK
</data>
<flag name="review"
          id="64603"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>