<?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>56835</bug_id>
          
          <creation_ts>2011-03-22 08:15:52 -0700</creation_ts>
          <short_desc>Web Inspector: Add tests for HeapSnapshot module</short_desc>
          <delta_ts>2011-03-25 00:30:02 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371394</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-22 08:15:52 -0700</bug_when>
    <thetext>The logic is non-trivial, and tests are required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371396</commentid>
    <comment_count>1</comment_count>
      <attachid>86463</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-22 08:21:34 -0700</bug_when>
    <thetext>Created attachment 86463
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372762</commentid>
    <comment_count>2</comment_count>
      <attachid>86761</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-24 06:01:35 -0700</bug_when>
    <thetext>Created attachment 86761
reuse more capabilities of test infrastructure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372952</commentid>
    <comment_count>3</comment_count>
      <attachid>86761</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-24 11:12:55 -0700</bug_when>
    <thetext>Comment on attachment 86761
reuse more capabilities of test infrastructure

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

&gt; LayoutTests/http/tests/inspector/heap-snapshot-test.js:1
&gt; +var initialize_HeapSnapshotTest = function() {

You should place your utility test into inspector/profiler since you don&apos;t have tests that require network interaction / serving off http

&gt; LayoutTests/inspector/profiler/heap-snapshot-expected.txt:4
&gt; +Running: heapSnapshotNodeSimpleTest

It would be nice if your tests were printing something to make sure something is happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373374</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-25 00:25:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 86761 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86761&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/inspector/heap-snapshot-test.js:1
&gt; &gt; +var initialize_HeapSnapshotTest = function() {
&gt; 
&gt; You should place your utility test into inspector/profiler since you don&apos;t have tests that require network interaction / serving off http

Moved.

&gt; 
&gt; &gt; LayoutTests/inspector/profiler/heap-snapshot-expected.txt:4
&gt; &gt; +Running: heapSnapshotNodeSimpleTest
&gt; 
&gt; It would be nice if your tests were printing something to make sure something is happening.

They will scream if something is wrong. I think it&apos;s enough that the framework prints the name of the test currently running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373380</commentid>
    <comment_count>5</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-03-25 00:30:02 -0700</bug_when>
    <thetext>Manually committed http://trac.webkit.org/changeset/81946


2011-03-24  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Pavel Feldman.

        Web Inspector: Add tests for HeapSnapshot module.
        https://bugs.webkit.org/show_bug.cgi?id=56835

        * http/tests/inspector/heap-snapshot-test.js: Added.
        (initialize_HeapSnapshotTest.InspectorTest.createHeapSnapshotMockObject):
        (initialize_HeapSnapshotTest.InspectorTest.createHeapSnapshotMock):
        (initialize_HeapSnapshotTest):
        * inspector/profiler/heap-snapshot-expected.txt: Added.
        * inspector/profiler/heap-snapshot.html: Added.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86463</attachid>
            <date>2011-03-22 08:21:34 -0700</date>
            <delta_ts>2011-03-24 06:01:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-568355</filename>
            <type>text/plain</type>
            <size>19162</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZWYzYzZlLi5lMjI3YjgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMt
MjIgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQg
dGVzdHMgZm9yIEhlYXBTbmFwc2hvdCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODM1CisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmls
ZXMvY3B1LXByb2ZpbGVyLXByb2ZpbGluZy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3B1LXByb2ZpbGVyLXByb2ZpbGluZy1leHBlY3RlZC50eHQuCisg
ICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVzL2NwdS1wcm9maWxlci1wcm9maWxpbmcuaHRtbDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci9jcHUtcHJvZmlsZXItcHJvZmlsaW5n
Lmh0bWwuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVzL2hlYXAtc25hcHNob3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXMvaGVhcC1zbmFwc2hv
dC5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0yMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jcHUtcHJvZmlsZXItcHJvZmlsaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jcHUtcHJvZmlsZXItcHJvZmlsaW5n
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFjY2M2Mi4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3B1LXByb2ZpbGVyLXByb2ZpbGluZy1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRlc3RzIHRoYXQgQ1BV
IHByb2ZpbGluZyB3b3Jrcy4gQnVnIDUyNjM0LgotCi1mb3VuZCBwYWdlRnVuY3Rpb24KLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NwdS1wcm9maWxlci1wcm9maWxpbmcuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jcHUtcHJvZmlsZXItcHJvZmlsaW5nLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OGFmOGMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NwdS1wcm9maWxlci1wcm9maWxpbmcuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDYzICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gIDxzY3JpcHQgc3JjPSIuLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
Ci1mdW5jdGlvbiBwYWdlRnVuY3Rpb24oKSB7Ci0gICAgY29uc29sZS5wcm9maWxlKCJvdXRlciIp
OwotICAgIGNvbnNvbGUucHJvZmlsZSgiaW5uZXIiKTsgIC8vIFtDaHJvbWl1bV0gTWFrZSBzdXJl
IHdlIGNhcHR1cmUgdGhlIGN1cnJlbnQgY2FsbHN0YWNrLgotICAgIGNvbnNvbGUucHJvZmlsZUVu
ZCgib3V0ZXIiKTsKLSAgICBjb25zb2xlLnByb2ZpbGVFbmQoImlubmVyIik7Ci19Ci0KLWZ1bmN0
aW9uIGluaXRpYWxpemVfUHJvZmlsZXJUZXN0cygpCi17Ci0gICAgdmFyIG9sZEFkZFByb2ZpbGVI
ZWFkZXIgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9hZGRQcm9maWxlSGVhZGVyOwot
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX2FkZFByb2ZpbGVIZWFkZXIgPSBmdW5j
dGlvbihwcm9maWxlKQotICAgIHsKLSAgICAgICAgb2xkQWRkUHJvZmlsZUhlYWRlci5jYWxsKHRo
aXMsIHByb2ZpbGUpOwotICAgICAgICBpZiAocHJvZmlsZS50aXRsZSA9PT0gImlubmVyIikgewot
ICAgICAgICAgICAgdGhpcy5zaG93UHJvZmlsZShwcm9maWxlKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHZhciBvbGRSZWZyZXNoID0gV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5yZWZyZXNoOwotICAgIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUu
cmVmcmVzaCA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIG9sZFJlZnJlc2guY2FsbCh0aGlz
KTsKLSAgICAgICAgaWYgKHRoaXMucHJvZmlsZS50aXRsZSA9PT0gImlubmVyIikgewotICAgICAg
ICAgICAgdmFyIHRyZWUgPSB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWU7Ci0gICAgICAgICAgICBp
ZiAoIXRyZWUpCi0gICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJubyB0
cmVlIik7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHRyZWUuY2hpbGRyZW5bMF07Ci0gICAgICAg
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJubyBub2RlIik7Ci0gICAgICAgICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICAgICAgICAg
IGlmIChub2RlLmZ1bmN0aW9uTmFtZS5pbmRleE9mKCJwYWdlRnVuY3Rpb24iKSAhPT0gLTEpIHsK
LSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoImZvdW5kIHBhZ2VG
dW5jdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUudHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCBudWxs
LCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInByb2ZpbGVzIik7Ci0gICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5wcm9maWxlcy5fZW5hYmxlUHJvZmlsaW5nKCk7Ci0gICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluQ29uc29sZSgicGFnZUZ1bmN0aW9uKCkiLCBmdW5jdGlvbiBkb25lKCkge30pOwotfQot
Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPgotVGVz
dHMgdGhhdCBDUFUgcHJvZmlsaW5nIHdvcmtzLgotCi08YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2MzQiPkJ1ZyA1MjYzNC48L2E+Ci08L3A+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXMv
Y3B1LXByb2ZpbGVyLXByb2ZpbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXMvY3B1LXByb2ZpbGVyLXByb2ZpbGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFjY2M2MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlcy9jcHUtcHJvZmlsZXItcHJvZmlsaW5nLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIHRoYXQgQ1BVIHByb2ZpbGluZyB3b3Jrcy4g
QnVnIDUyNjM0LgorCitmb3VuZCBwYWdlRnVuY3Rpb24KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVzL2NwdS1wcm9maWxlci1wcm9maWxpbmcuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlcy9jcHUtcHJvZmlsZXItcHJvZmlsaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwNTE3NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlcy9jcHUtcHJvZmlsZXItcHJvZmlsaW5n
Lmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIHBhZ2VGdW5jdGlvbigpIHsKKyAgICBjb25zb2xlLnByb2ZpbGUo
Im91dGVyIik7CisgICAgY29uc29sZS5wcm9maWxlKCJpbm5lciIpOyAgLy8gW0Nocm9taXVtXSBN
YWtlIHN1cmUgd2UgY2FwdHVyZSB0aGUgY3VycmVudCBjYWxsc3RhY2suCisgICAgY29uc29sZS5w
cm9maWxlRW5kKCJvdXRlciIpOworICAgIGNvbnNvbGUucHJvZmlsZUVuZCgiaW5uZXIiKTsKK30K
KworZnVuY3Rpb24gaW5pdGlhbGl6ZV9Qcm9maWxlclRlc3RzKCkKK3sKKyAgICB2YXIgb2xkQWRk
UHJvZmlsZUhlYWRlciA9IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX2FkZFByb2ZpbGVI
ZWFkZXI7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5fYWRkUHJvZmlsZUhlYWRl
ciA9IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICBvbGRBZGRQcm9maWxlSGVhZGVy
LmNhbGwodGhpcywgcHJvZmlsZSk7CisgICAgICAgIGlmIChwcm9maWxlLnRpdGxlID09PSAiaW5u
ZXIiKSB7CisgICAgICAgICAgICB0aGlzLnNob3dQcm9maWxlKHByb2ZpbGUpOworICAgICAgICB9
CisgICAgfQorCisgICAgdmFyIG9sZFJlZnJlc2ggPSBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZp
ZXcucHJvdG90eXBlLnJlZnJlc2g7CisgICAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnBy
b3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgb2xkUmVmcmVzaC5j
YWxsKHRoaXMpOworICAgICAgICBpZiAodGhpcy5wcm9maWxlLnRpdGxlID09PSAiaW5uZXIiKSB7
CisgICAgICAgICAgICB2YXIgdHJlZSA9IHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZTsKKyAgICAg
ICAgICAgIGlmICghdHJlZSkKKyAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIm5vIHRyZWUiKTsKKyAgICAgICAgICAgIHZhciBub2RlID0gdHJlZS5jaGlsZHJlblswXTsK
KyAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIm5vIG5vZGUiKTsKKyAgICAgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUuZnVuY3Rpb25OYW1lLmluZGV4T2YoInBhZ2VGdW5jdGlvbiIpICE9
PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZm91
bmQgcGFnZUZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2RlKHRy
dWUsIG51bGwsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicHJvZmlsZXMiKTsKKyAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzLl9lbmFibGVQcm9maWxpbmcoKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJwYWdlRnVuY3Rpb24oKSIsIGZ1bmN0aW9uIGRvbmUoKSB7
fSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
PHA+CitUZXN0cyB0aGF0IENQVSBwcm9maWxpbmcgd29ya3MuCisKKzxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYzNCI+QnVnIDUyNjM0LjwvYT4KKzwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlcy9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlcy9oZWFwLXNuYXBzaG90LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40ZGRlMDBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVzL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NzUgQEAKK1RoaXMgdGVzdCBjaGVja3MgSGVhcFNuYXBzaG90cyBtb2R1bGUuCisKK1BBU1M6IHJv
b3QgbmFtZQorUEFTUzogcm9vdCB0eXBlCitQQVNTOiByb290IGVkZ2VzCitQQVNTOiBFIG5hbWUK
K1BBU1M6IEUgdHlwZQorUEFTUzogRSBlZGdlcworUEFTUzogbm9kZSBpdGVyYXRvcgorUEFTUzog
cmF3RWRnZXMgbGVuZ3RoCitQQVNTOiBlZGdlIHR5cGUKK1BBU1M6IGVkZ2UgbmFtZQorUEFTUzog
ZWRnZSBub2RlIG5hbWUKK1BBU1M6IGVkZ2UgaXRlcmF0b3IKK1BBU1M6IGVtcHR5IGVkZ2UgaXRl
cmF0b3IKK1BBU1M6IG1vY2sgdHJhdmVyc2FsCitQQVNTOiBzbmFwc2hvdCB0cmF2ZXJzYWwKK1BB
U1M6IG5vZGVzIGNvdW50CitQQVNTOiB0b3RhbCBzaXplCitQQVNTOiBoYXMgaWQgMAorUEFTUzog
aGFzIGlkIDEKK1BBU1M6IGhhcyBpZCAyCitQQVNTOiBoYXMgaWQgMworUEFTUzogaGFzIGlkIDQK
K1BBU1M6IGhhcyBpZCA1CitQQVNTOiBoYXMgaWQgNgorUEFTUzogaGFzIGlkIDcKK1BBU1M6IGhh
cyBpZCAxMDAKK1BBU1M6IHJldGFpbmVycyBvZiAiIgorUEFTUzogcmV0YWluZXJzIG9mICJBIgor
UEFTUzogcmV0YWluZXJzIG9mICJCIgorUEFTUzogcmV0YWluZXJzIG9mICJDIgorUEFTUzogcmV0
YWluZXJzIG9mICJEIgorUEFTUzogcmV0YWluZXJzIG9mICJFIgorUEFTUzogcGFyYW1ldGVyIGNv
dW50IG9mICJBIgorUEFTUzogcGFyYW1ldGVyIHNlbGYgb2YgIkEiCitQQVNTOiBwYXJhbWV0ZXIg
bWF4UmV0IG9mICJBIgorUEFTUzogcGFyYW1ldGVyIHR5cGUgb2YgIkEiCitQQVNTOiBwYXJhbWV0
ZXIgbmFtZSBvZiAiQSIKK1BBU1M6IHBhcmFtZXRlciBjb3VudCBvZiAiQiIKK1BBU1M6IHBhcmFt
ZXRlciBzZWxmIG9mICJCIgorUEFTUzogcGFyYW1ldGVyIG1heFJldCBvZiAiQiIKK1BBU1M6IHBh
cmFtZXRlciB0eXBlIG9mICJCIgorUEFTUzogcGFyYW1ldGVyIG5hbWUgb2YgIkIiCitQQVNTOiBw
YXJhbWV0ZXIgY291bnQgb2YgIkMiCitQQVNTOiBwYXJhbWV0ZXIgc2VsZiBvZiAiQyIKK1BBU1M6
IHBhcmFtZXRlciBtYXhSZXQgb2YgIkMiCitQQVNTOiBwYXJhbWV0ZXIgdHlwZSBvZiAiQyIKK1BB
U1M6IHBhcmFtZXRlciBuYW1lIG9mICJDIgorUEFTUzogcGFyYW1ldGVyIGNvdW50IG9mICJEIgor
UEFTUzogcGFyYW1ldGVyIHNlbGYgb2YgIkQiCitQQVNTOiBwYXJhbWV0ZXIgbWF4UmV0IG9mICJE
IgorUEFTUzogcGFyYW1ldGVyIHR5cGUgb2YgIkQiCitQQVNTOiBwYXJhbWV0ZXIgbmFtZSBvZiAi
RCIKK1BBU1M6IHBhcmFtZXRlciBjb3VudCBvZiAiRSIKK1BBU1M6IHBhcmFtZXRlciBzZWxmIG9m
ICJFIgorUEFTUzogcGFyYW1ldGVyIG1heFJldCBvZiAiRSIKK1BBU1M6IHBhcmFtZXRlciB0eXBl
IG9mICJFIgorUEFTUzogcGFyYW1ldGVyIG5hbWUgb2YgIkUiCitQQVNTOiBpbmRleGVzIG9mICJB
IgorUEFTUzogaW5kZXhlcyBvZiAiQiIKK1BBU1M6IGluZGV4ZXMgb2YgIkMiCitQQVNTOiBpbmRl
eGVzIG9mICJEIgorUEFTUzogaW5kZXhlcyBvZiAiRSIKK1BBU1M6IG5vZGVzIHByb3ZpZGVyIGxl
bmd0aAorUEFTUzogbm9kZXMgcHJvdmlkZXIgbmFtZXMKK1BBU1M6IGVkZ2VzIHByb3ZpZGVyIGxl
bmd0aAorUEFTUzogZWRnZXMgcHJvdmlkZXIgbmFtZXMKK1BBU1M6IHBhdGhzIHRvICIiCitQQVNT
OiBwYXRocyB0byAiQSIKK1BBU1M6IHBhdGhzIHRvICJCIgorUEFTUzogcGF0aHMgdG8gIkMiCitQ
QVNTOiBwYXRocyB0byAiRCIKK1BBU1M6IHBhdGhzIHRvICJFIgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXMvaGVhcC1zbmFwc2hvdC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVzL2hlYXAtc25hcHNob3QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kNjE2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVzL2hlYXAtc25hcHNob3QuaHRtbApAQCAtMCwwICsxLDMwMiBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKworZnVuY3Rpb24gY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCgpCit7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgX3Jvb3ROb2RlSW5kZXg6IDAsCisgICAgICAgIF9ub2RlVHlwZU9m
ZnNldDogMCwKKyAgICAgICAgX25vZGVOYW1lT2Zmc2V0OiAxLAorICAgICAgICBfZWRnZXNDb3Vu
dE9mZnNldDogMiwKKyAgICAgICAgX2ZpcnN0RWRnZU9mZnNldDogMywKKyAgICAgICAgX2VkZ2VG
aWVsZHNDb3VudDogMywKKyAgICAgICAgX2VkZ2VUeXBlT2Zmc2V0OiAwLAorICAgICAgICBfZWRn
ZU5hbWVPZmZzZXQ6IDEsCisgICAgICAgIF9lZGdlVG9Ob2RlT2Zmc2V0OiAyLAorICAgICAgICBf
bm9kZVR5cGVzOiBbImhpZGRlbiIsICJvYmplY3QiXSwKKyAgICAgICAgX2VkZ2VUeXBlczogWyJl
bGVtZW50IiwgInByb3BlcnR5Il0sCisgICAgICAgIF9lZGdlU2hvcnRjdXRUeXBlOiAtMSwKKyAg
ICAgICAgX2VkZ2VIaWRkZW5UeXBlOiAtMSwKKyAgICAgICAgX2VkZ2VFbGVtZW50VHlwZTogMCwK
KyAgICAgICAgLy8gUmVwcmVzZW50cyB0aGUgZm9sbG93aW5nIGdyYXBoOgorICAgICAgICAvLyAg
IChudW1iZXJzIGluIHBhcmVudGhlc2VzIGluZGljYXRlIG5vZGUgb2Zmc2V0KQorICAgICAgICAv
LyAKKyAgICAgICAgLy8gICAgICAgICBBICg5KSAtLWFjLSBDICgyNykgLWNlLSBFKDM2KQorICAg
ICAgICAvLyAgICAgICBhL3wgICAgICAgICAvCisgICAgICAgIC8vICAiIiAoMCkgMSAgICAgIGJj
CisgICAgICAgIC8vICAgICAgIGJcdiAgICAvCisgICAgICAgIC8vICAgICAgICAgQiAoMTgpIC1i
ZC0gRCAoMzMpCisgICAgICAgIC8vCisgICAgICAgIF9ub2RlczogWworICAgICAgICAgICAgMCwg
MCwgMiwgMSwgIDYsICA5LCAxLCAgNywgMTgsCisgICAgICAgICAgICAxLCAxLCAyLCAwLCAgMSwg
MTgsIDEsICA4LCAyNywKKyAgICAgICAgICAgIDEsIDIsIDIsIDEsICA5LCAyNywgMSwgMTAsIDMz
LAorICAgICAgICAgICAgMSwgMywgMSwgMSwgMTEsIDM2LAorICAgICAgICAgICAgMSwgNCwgMCwK
KyAgICAgICAgICAgIDEsIDUsIDBdLAorICAgICAgICBfc3RyaW5nczogWyIiLCAiQSIsICJCIiwg
IkMiLCAiRCIsICJFIiwgImEiLCAiYiIsICJhYyIsICJiYyIsICJiZCIsICJjZSJdCisgICAgfTsK
K30KKworZnVuY3Rpb24gQ0hFQ0tfRVEoZXhwZWN0ZWQsIGFjdHVhbCwgbGFiZWwpCit7CisgICAg
aWYgKGV4cGVjdGVkID09PSBhY3R1YWwpCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJQQVNTOiAiICsgbGFiZWwpOworICAgIGVsc2UKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoU3RyaW5nLnZzcHJpbnRmKCJGQUlMOiAlcyBleHBlY3RlZCAlcyBhY3R1YWwgJXMiLCBb
bGFiZWwsIGV4cGVjdGVkLCBhY3R1YWxdKSk7Cit9CisKKyhmdW5jdGlvbiBoZWFwU25hcHNob3RO
b2RlU2ltcGxlVGVzdCgpCit7CisgICAgdmFyIHNuYXBzaG90ID0gY3JlYXRlSGVhcFNuYXBzaG90
TW9ja09iamVjdCgpOworICAgIHZhciBub2RlUm9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZShzbmFwc2hvdCwgc25hcHNob3QuX3Jvb3ROb2RlSW5kZXgpOworICAgIENIRUNL
X0VRKCIiLCBub2RlUm9vdC5uYW1lLCAicm9vdCBuYW1lIik7CisgICAgQ0hFQ0tfRVEoImhpZGRl
biIsIG5vZGVSb290LnR5cGUsICJyb290IHR5cGUiKTsKKyAgICBDSEVDS19FUSgyLCBub2RlUm9v
dC5lZGdlc0NvdW50LCAicm9vdCBlZGdlcyIpOworICAgIHZhciBub2RlRSA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hvdCwgMzYpOworICAgIENIRUNLX0VRKCJFIiwg
bm9kZUUubmFtZSwgIkUgbmFtZSIpOworICAgIENIRUNLX0VRKCJvYmplY3QiLCBub2RlRS50eXBl
LCAiRSB0eXBlIik7CisgICAgQ0hFQ0tfRVEoMCwgbm9kZUUuZWRnZXNDb3VudCwgIkUgZWRnZXMi
KTsKK30pKCk7CisKKyhmdW5jdGlvbiBoZWFwU25hcHNob3ROb2RlSXRlcmF0b3JUZXN0KCkKK3sK
KyAgICB2YXIgc25hcHNob3QgPSBjcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0KCk7CisgICAg
dmFyIG5vZGVSb290ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHNuYXBzaG90
LCBzbmFwc2hvdC5fcm9vdE5vZGVJbmRleCk7CisgICAgdmFyIGl0ZXJhdG9yID0gbmV3IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3ROb2RlSXRlcmF0b3Iobm9kZVJvb3QpOworICAgIHZhciBuYW1l
cyA9IFtdOworICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOyBp
dGVyYXRvci5uZXh0KCkpCisgICAgICAgIG5hbWVzLnB1c2goaXRlcmF0b3IuaXRlbS5uYW1lKTsK
KyAgICBDSEVDS19FUSgiLEEsQixDLEQsRSIsIG5hbWVzLmpvaW4oIiwiKSwgIm5vZGUgaXRlcmF0
b3IiKTsKK30pKCk7CisKKyhmdW5jdGlvbiBoZWFwU25hcHNob3RFZGdlU2ltcGxlVGVzdCgpCit7
CisgICAgdmFyIHNuYXBzaG90ID0gY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCgpOworICAg
IHZhciBub2RlUm9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hv
dCwgc25hcHNob3QuX3Jvb3ROb2RlSW5kZXgpOworICAgIHZhciBlZGdlc1Jvb3QgPSBub2RlUm9v
dC5yYXdFZGdlczsKKyAgICBDSEVDS19FUShub2RlUm9vdC5lZGdlc0NvdW50ICogc25hcHNob3Qu
X2VkZ2VGaWVsZHNDb3VudCwgZWRnZXNSb290Lmxlbmd0aCwgInJhd0VkZ2VzIGxlbmd0aCIpOwor
ICAgIHZhciBlZGdlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlKHNuYXBzaG90
LCBlZGdlc1Jvb3QpOworICAgIENIRUNLX0VRKCJwcm9wZXJ0eSIsIGVkZ2UudHlwZSwgImVkZ2Ug
dHlwZSIpOworICAgIENIRUNLX0VRKCJhIiwgZWRnZS5uYW1lLCAiZWRnZSBuYW1lIik7CisgICAg
Q0hFQ0tfRVEoIkEiLCBlZGdlLm5vZGUubmFtZSwgImVkZ2Ugbm9kZSBuYW1lIik7Cit9KSgpOwor
CisoZnVuY3Rpb24gaGVhcFNuYXBzaG90RWRnZUl0ZXJhdG9yVGVzdCgpCit7CisgICAgdmFyIHNu
YXBzaG90ID0gY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCgpOworICAgIHZhciBub2RlUm9v
dCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hvdCwgc25hcHNob3Qu
X3Jvb3ROb2RlSW5kZXgpOworICAgIHZhciBuYW1lcyA9IFtdOworICAgIHZhciBpdGVyYXRvciA9
IG5vZGVSb290LmVkZ2VzOworICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0b3IuaGFz
TmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpCisgICAgICAgIG5hbWVzLnB1c2goaXRlcmF0b3IuaXRl
bS5uYW1lKTsKKyAgICBDSEVDS19FUSgiYSxiIiwgbmFtZXMuam9pbigiLCIpLCAiZWRnZSBpdGVy
YXRvciIpOworICAgIHZhciBub2RlRSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9k
ZShzbmFwc2hvdCwgMzYpOworICAgIENIRUNLX0VRKGZhbHNlLCBub2RlRS5lZGdlcy5oYXNOZXh0
KCksICJlbXB0eSBlZGdlIGl0ZXJhdG9yIik7Cit9KSgpOworCitmdW5jdGlvbiBjcmVhdGVIZWFw
U25hcHNob3RNb2NrKCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBub2RlczogWworICAgICAg
ICAgICAgeyBmaWVsZHM6IFsidHlwZSIsICJuYW1lIiwgImlkIiwgInNlbGZfc2l6ZSIsICJyZXRh
aW5lZF9zaXplIiwgImRvbWluYXRvciIsICJjaGlsZHJlbl9jb3VudCIsICJjaGlsZHJlbiJdLAor
ICAgICAgICAgICAgICB0eXBlczogW1siaGlkZGVuIiwgIm9iamVjdCJdLCAiIiwgIiIsICIiLCAi
IiwgIiIsICIiLCB7IGZpZWxkczogWyJ0eXBlIiwgIm5hbWVfb3JfaW5kZXgiLCAidG9fbm9kZSJd
LCB0eXBlczogW1siZWxlbWVudCIsICJwcm9wZXJ0eSJdLCAiIiwgIiJdIH1dIH0sCisgICAgICAg
ICAgICAvLyBFZmZlY3RpdmVseSB0aGUgc2FtZSBncmFwaCBhcyBpbiBjcmVhdGVIZWFwU25hcHNo
b3RNb2NrT2JqZWN0LAorICAgICAgICAgICAgLy8gYnV0IGhhdmluZyBmdWxsIHNldCBvZiBmaWVs
ZHMuCisgICAgICAgICAgICAvLyAKKyAgICAgICAgICAgIC8vIEEgdHJpcGxlIGluIHBhcmVudGhl
c2VzIGluZGljYXRlcyBub2RlIGluZGV4LCBzZWxmIHNpemUgYW5kCisgICAgICAgICAgICAvLyBy
ZXRhaW5lZCBzaXplLgorICAgICAgICAgICAgLy8gCisgICAgICAgICAgICAvLyAgICAgICAgICAt
LS0gQSAoMTQsMiwyKSAtLWFjLSBDICg0MCw0LDEwKSAtY2UtIEUoNTcsNiw2KQorICAgICAgICAg
ICAgLy8gICAgICAgICAvICAgIHwgICAgICAgICAgICAgICAgLworICAgICAgICAgICAgLy8gICIi
ICgxLDAsMjApIDEgICAgICAgLS1iYy0tLS0tCisgICAgICAgICAgICAvLyAgICAgICAgIFwgICAg
diAgICAgIC8KKyAgICAgICAgICAgIC8vICAgICAgICAgIC0tLSBCICgyNywzLDgpIC0tYmQtIEQg
KDUwLDUsNSkKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAwLCAwLCAxLCAwLCAyMCwgIDEs
IDIsIDEsICA2LCAxNCwgMSwgIDcsIDI3LAorICAgICAgICAgICAgMSwgMSwgMiwgMiwgIDIsICAx
LCAyLCAwLCAgMSwgMjcsIDEsICA4LCA0MCwKKyAgICAgICAgICAgIDEsIDIsIDMsIDMsICA4LCAg
MSwgMiwgMSwgIDksIDQwLCAxLCAxMCwgNTAsCisgICAgICAgICAgICAxLCAzLCA0LCA0LCAxMCwg
IDEsIDEsIDEsIDExLCA1NywKKyAgICAgICAgICAgIDEsIDQsIDUsIDUsICA1LCAyNywgMCwKKyAg
ICAgICAgICAgIDEsIDUsIDYsIDYsICA2LCA0MCwgMF0sCisgICAgICAgIHN0cmluZ3M6IFsiIiwg
IkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJhIiwgImIiLCAiYWMiLCAiYmMiLCAiYmQiLCAiY2Ui
XQorICAgIH07Cit9CisKKyhmdW5jdGlvbiBoZWFwU25hcHNob3ROb2RlQW5kRWRnZVRlc3QoKQor
eworICAgIHZhciBzbmFwc2hvdE1vY2sgPSBjcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0KCk7
CisgICAgdmFyIG5vZGVSb290ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHNu
YXBzaG90TW9jaywgc25hcHNob3RNb2NrLl9yb290Tm9kZUluZGV4KTsKKyAgICB2YXIgbmFtZXMg
PSBbXTsKKyAgICAKKyAgICBmdW5jdGlvbiBkZXB0aEZpcnN0VHJhdmVyc2FsKG5vZGUpCisgICAg
eworICAgICAgICBuYW1lcy5wdXNoKG5vZGUubmFtZSk7CisgICAgICAgIGZvciAodmFyIGVkZ2Vz
ID0gbm9kZS5lZGdlczsgZWRnZXMuaGFzTmV4dCgpOyBlZGdlcy5uZXh0KCkpIHsKKyAgICAgICAg
ICAgIG5hbWVzLnB1c2goZWRnZXMuaXRlbS5uYW1lKTsKKyAgICAgICAgICAgIGRlcHRoRmlyc3RU
cmF2ZXJzYWwoZWRnZXMuaXRlbS5ub2RlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRlcHRo
Rmlyc3RUcmF2ZXJzYWwobm9kZVJvb3QpOworICAgIHZhciByZWZlcmVuY2UgPSAiLGEsQSwxLEIs
YmMsQyxjZSxFLGJkLEQsYWMsQyxjZSxFLGIsQixiYyxDLGNlLEUsYmQsRCI7CisgICAgQ0hFQ0tf
RVEocmVmZXJlbmNlLCBuYW1lcy5qb2luKCIsIiksICJtb2NrIHRyYXZlcnNhbCIpOworCisgICAg
Ly8gTm93IGNoZWNrIGFnYWluc3QgYSByZWFsIEhlYXBTbmFwc2hvdCBpbnN0YW5jZS4KKyAgICBu
YW1lcyA9IFtdOworICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90KGNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgZGVwdGhGaXJzdFRyYXZlcnNhbChz
bmFwc2hvdC5yb290Tm9kZSk7CisgICAgQ0hFQ0tfRVEocmVmZXJlbmNlLCBuYW1lcy5qb2luKCIs
IiksICJzbmFwc2hvdCB0cmF2ZXJzYWwiKTsKK30pKCk7CisKKyhmdW5jdGlvbiBoZWFwU25hcHNo
b3RTaW1wbGVUZXN0KCkKK3sKKyAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgIENIRUNLX0VRKDYsIHNu
YXBzaG90Lm5vZGVzQ291bnQsICJub2RlcyBjb3VudCIpOworICAgIENIRUNLX0VRKDIwLCBzbmFw
c2hvdC50b3RhbFNpemUsICJ0b3RhbCBzaXplIik7Cit9KSgpOworCisoZnVuY3Rpb24gaGVhcFNu
YXBzaG90SWRzVGVzdCgpCit7CisgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICBDSEVDS19FUShmYWxz
ZSwgc25hcHNob3QuaGFzSWQoMCksICJoYXMgaWQgMCIpOworICAgIGZvciAodmFyIGkgPSAxOyBp
IDw9IDY7ICsraSkKKyAgICAgICAgQ0hFQ0tfRVEodHJ1ZSwgc25hcHNob3QuaGFzSWQoaSksICJo
YXMgaWQgIiArIGkpOworICAgIENIRUNLX0VRKGZhbHNlLCBzbmFwc2hvdC5oYXNJZCg3KSwgImhh
cyBpZCA3Iik7CisgICAgQ0hFQ0tfRVEoZmFsc2UsIHNuYXBzaG90Lmhhc0lkKDEwMCksICJoYXMg
aWQgMTAwIik7Cit9KSgpOworCisoZnVuY3Rpb24gaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdCgp
Cit7CisgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoY3Jl
YXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICB2YXIgZXhwZWN0ZWRSZXRhaW5lcnMgPSB7Cisg
ICAgICAgICIiOiBbXSwKKyAgICAgICAgIkEiOiBbIiJdLAorICAgICAgICAiQiI6IFsiIiwgIkEi
XSwKKyAgICAgICAgIkMiOiBbIkEiLCAiQiJdLAorICAgICAgICAiRCI6IFsiQiJdLAorICAgICAg
ICAiRSI6IFsiQyJdfTsKKyAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90LmFsbE5vZGVzOyBu
b2Rlcy5oYXNOZXh0KCk7IG5vZGVzLm5leHQoKSkgeworICAgICAgICB2YXIgbmFtZXMgPSBbXTsK
KyAgICAgICAgZm9yICh2YXIgcmV0YWluZXJzID0gbm9kZXMuaXRlbS5yZXRhaW5lcnM7IHJldGFp
bmVycy5oYXNOZXh0KCk7IHJldGFpbmVycy5uZXh0KCkpCisgICAgICAgICAgICBuYW1lcy5wdXNo
KHJldGFpbmVycy5pdGVtLm5vZGUubmFtZSk7CisgICAgICAgIG5hbWVzLnNvcnQoKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoZXhwZWN0ZWRSZXRhaW5lcnNbbm9kZXMuaXRlbS5uYW1lXS5qb2luKCIsIiks
IG5hbWVzLmpvaW4oIiwiKSwgInJldGFpbmVycyBvZiBcIiIgKyBub2Rlcy5pdGVtLm5hbWUgKyAi
XCIiKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gaGVhcFNuYXBzaG90QWdncmVnYXRlc1Rl
c3QoKQoreworICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
KGNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgdmFyIGV4cGVjdGVkQWdncmVnYXRlcyA9
IHsKKyAgICAgICAgIkEiOiB7IGNvdW50OiAxLCBzZWxmOiAyLCBtYXhSZXQ6IDIsIHR5cGU6ICJv
YmplY3QiLCBuYW1lOiAiQSIgfSwKKyAgICAgICAgIkIiOiB7IGNvdW50OiAxLCBzZWxmOiAzLCBt
YXhSZXQ6IDgsIHR5cGU6ICJvYmplY3QiLCBuYW1lOiAiQiIgfSwKKyAgICAgICAgIkMiOiB7IGNv
dW50OiAxLCBzZWxmOiA0LCBtYXhSZXQ6IDEwLCB0eXBlOiAib2JqZWN0IiwgbmFtZTogIkMiIH0s
CisgICAgICAgICJEIjogeyBjb3VudDogMSwgc2VsZjogNSwgbWF4UmV0OiA1LCB0eXBlOiAib2Jq
ZWN0IiwgbmFtZTogIkQiIH0sCisgICAgICAgICJFIjogeyBjb3VudDogMSwgc2VsZjogNiwgbWF4
UmV0OiA2LCB0eXBlOiAib2JqZWN0IiwgbmFtZTogIkUiIH0KKyAgICB9OworICAgIHZhciBhZ2dy
ZWdhdGVzID0gc25hcHNob3QuYWdncmVnYXRlcyhmYWxzZSk7CisgICAgZm9yICh2YXIgbmFtZSBp
biBhZ2dyZWdhdGVzKSB7CisgICAgICAgIHZhciBhZ2dyZWdhdGUgPSBhZ2dyZWdhdGVzW25hbWVd
OworICAgICAgICB2YXIgZXhwZWN0ZWRBZ2dyZWdhdGUgPSBleHBlY3RlZEFnZ3JlZ2F0ZXNbbmFt
ZV07CisgICAgICAgIGZvciAodmFyIHBhcmFtZXRlciBpbiBleHBlY3RlZEFnZ3JlZ2F0ZSkKKyAg
ICAgICAgICAgIENIRUNLX0VRKGV4cGVjdGVkQWdncmVnYXRlW3BhcmFtZXRlcl0sIGFnZ3JlZ2F0
ZVtwYXJhbWV0ZXJdLCAicGFyYW1ldGVyICIgKyBwYXJhbWV0ZXIgKyAiIG9mIFwiIiArIG5hbWUg
KyAiXCIiKTsKKyAgICB9CisgICAgdmFyIGV4cGVjdGVkSW5kZXhlcyA9IHsKKyAgICAgICAiQSI6
IFsxNF0sCisgICAgICAgIkIiOiBbMjddLAorICAgICAgICJDIjogWzQwXSwKKyAgICAgICAiRCI6
IFs1MF0sCisgICAgICAgIkUiOiBbNTddCisgICAgfTsKKyAgICB2YXIgaW5kZXhlcyA9IHNuYXBz
aG90LmFnZ3JlZ2F0ZXModHJ1ZSk7CisgICAgZm9yICh2YXIgbmFtZSBpbiBhZ2dyZWdhdGVzKSB7
CisgICAgICAgIHZhciBhZ2dyZWdhdGUgPSBhZ2dyZWdhdGVzW25hbWVdOworICAgICAgICB2YXIg
ZXhwZWN0ZWRJbmRleCA9IGV4cGVjdGVkSW5kZXhlc1tuYW1lXTsKKyAgICAgICAgQ0hFQ0tfRVEo
ZXhwZWN0ZWRJbmRleC5qb2luKCIsIiksIGFnZ3JlZ2F0ZS5pZHhzLmpvaW4oIiwiKSwgImluZGV4
ZXMgb2YgXCIiICsgbmFtZSArICJcIiIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBoZWFw
U25hcHNob3ROb2Rlc1Byb3ZpZGVyVGVzdCgpCit7CisgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QoY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAK
KyAgICBmdW5jdGlvbiBub2RlRmlsdGVyKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9k
ZS50eXBlID09PSAib2JqZWN0IiAmJiBub2RlLm5hbWUgIT09ICJCIiAmJiBub2RlLm5hbWUgIT09
ICJEIjsKKyAgICB9CisKKyAgICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVzUHJvdmlkZXIoc25hcHNob3QsIHNuYXBzaG90LmFsbE5vZGVzLCBub2RlRmls
dGVyKTsKKyAgICAvLyBTb3J0IGJ5IG5hbWVzIGluIHJldmVyc2Ugb3JkZXIuCisgICAgcHJvdmlk
ZXIuc29ydChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3Iu
cHJvdG90eXBlLmNyZWF0ZUNvbXBhcmF0b3IoWyJuYW1lIiwgZmFsc2UsICJpZCIsIGZhbHNlXSkp
OworICAgIENIRUNLX0VRKDMsIHByb3ZpZGVyLmxlbmd0aCwgIm5vZGVzIHByb3ZpZGVyIGxlbmd0
aCIpOworICAgIHZhciBuYW1lcyA9IFtdOworICAgIGZvciAocHJvdmlkZXIuZmlyc3QoKTsgcHJv
dmlkZXIuaGFzTmV4dCgpOyBwcm92aWRlci5uZXh0KCkpCisgICAgICAgIG5hbWVzLnB1c2gocHJv
dmlkZXIuaXRlbS5uYW1lKTsKKyAgICBDSEVDS19FUSgiRSxDLEEiLCBuYW1lcy5qb2luKCIsIiks
ICJub2RlcyBwcm92aWRlciBuYW1lcyIpOworfSkoKTsKKworKGZ1bmN0aW9uIGhlYXBTbmFwc2hv
dEVkZ2VzUHJvdmlkZXJUZXN0KCkKK3sKKyAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdChjcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworCisgICAgZnVuY3Rp
b24gZWRnZUZpbHRlcihlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVkZ2UubmFtZSA9PT0g
ImIiOworICAgIH0KKworICAgIHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZXNQcm92aWRlcihzbmFwc2hvdCwgc25hcHNob3Qucm9vdE5vZGUucmF3RWRnZXMs
IGVkZ2VGaWx0ZXIpOworICAgIHByb3ZpZGVyLnNvcnQoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9yKFsiIWVk
Z2VOYW1lIiwgZmFsc2UsICJpZCIsIGZhbHNlXSkpOworICAgIENIRUNLX0VRKDEsIHByb3ZpZGVy
Lmxlbmd0aCwgImVkZ2VzIHByb3ZpZGVyIGxlbmd0aCIpOworICAgIHZhciBuYW1lcyA9IFtdOwor
ICAgIGZvciAocHJvdmlkZXIuZmlyc3QoKTsgcHJvdmlkZXIuaGFzTmV4dCgpOyBwcm92aWRlci5u
ZXh0KCkpCisgICAgICAgIG5hbWVzLnB1c2gocHJvdmlkZXIuaXRlbS5uYW1lKTsKKyAgICBDSEVD
S19FUSgiYiIsIG5hbWVzLmpvaW4oIiwiKSwgImVkZ2VzIHByb3ZpZGVyIG5hbWVzIik7Cit9KSgp
OworCisoZnVuY3Rpb24gaGVhcFNuYXBzaG90UGF0aEZpbmRlclRlc3QoKQoreworICAgIHZhciBz
bmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KGNyZWF0ZUhlYXBTbmFwc2hv
dE1vY2soKSk7CisgICAgdmFyIGV4cGVjdGVkUGF0aHMgPSB7CisgICAgICAgICAxOiBbXSwKKyAg
ICAgICAgMTQ6IFtdLAorICAgICAgICAyNzogWyJBQDJbMV0iXSwKKyAgICAgICAgNDA6IFsiQUAy
LmFjIiwgIkFAMlsxXS5iYyIsICJCQDMuYmMiXSwKKyAgICAgICAgNTA6IFsiQUAyWzFdLmJkIiwg
IkJAMy5iZCJdLAorICAgICAgICA1NzogWyJBQDIuYWMuY2UiLCAiQUAyWzFdLmJjLmNlIiwgIkJA
My5iYy5jZSJdCisgICAgfTsKKyAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90LmFsbE5vZGVz
OyBub2Rlcy5oYXNOZXh0KCk7IG5vZGVzLm5leHQoKSkgeworICAgICAgICB2YXIgcGF0aEZpbmRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UGF0aEZpbmRlcihzbmFwc2hvdCwgbm9k
ZXMuaW5kZXgpOworICAgICAgICB2YXIgcGF0aHMgPSBbXTsKKyAgICAgICAgdmFyIHBhdGg7Cisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBwYXRoID0gcGF0aEZpbmRlci5maW5k
TmV4dCgpOworICAgICAgICAgICAgaWYgKHBhdGggPT09IG51bGwpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBlbHNlIGlmIChwYXRoICE9PSBmYWxzZSkKKyAgICAgICAgICAg
ICAgICBwYXRocy5wdXNoKHBhdGgucGF0aCk7CisgICAgICAgIH0gCisgICAgICAgIHBhdGhzLnNv
cnQoKTsKKyAgICAgICAgQ0hFQ0tfRVEoZXhwZWN0ZWRQYXRoc1tub2Rlcy5pbmRleF0uam9pbigi
OyIpLCBwYXRocy5qb2luKCI7IiksICJwYXRocyB0byBcIiIgKyBub2Rlcy5pdGVtLm5hbWUgKyAi
XCIiKTsgCisgICAgfQorfSkoKTsKKworSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKwor
fQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
CitUaGlzIHRlc3QgY2hlY2tzIEhlYXBTbmFwc2hvdHMgbW9kdWxlLgorPC9wPgorCis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="78738"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86761</attachid>
            <date>2011-03-24 06:01:35 -0700</date>
            <delta_ts>2011-03-24 11:12:55 -0700</delta_ts>
            <desc>reuse more capabilities of test infrastructure</desc>
            <filename>patch-568355</filename>
            <type>text/plain</type>
            <size>15635</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZWY0ZWYzLi5kZTQ5NjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDMt
MjQgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQg
dGVzdHMgZm9yIEhlYXBTbmFwc2hvdCBtb2R1bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjgzNQorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaGVhcC1zbmFwc2hvdC10ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGluaXRpYWxpemVf
SGVhcFNuYXBzaG90VGVzdC5JbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmpl
Y3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFwU25hcHNob3RUZXN0Lkluc3BlY3RvclRlc3Qu
Y3JlYXRlSGVhcFNuYXBzaG90TW9jayk6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hv
dFRlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNo
b3QuaHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMjIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBCZXRoIERha2luLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC10ZXN0
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaGVhcC1zbmFwc2hvdC10ZXN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNjk1YzYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBzaG90
LXRlc3QuanMKQEAgLTAsMCArMSw2OCBAQAordmFyIGluaXRpYWxpemVfSGVhcFNuYXBzaG90VGVz
dCA9IGZ1bmN0aW9uKCkgeworCitJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tP
YmplY3QgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgX3Jvb3ROb2RlSW5k
ZXg6IDAsCisgICAgICAgIF9ub2RlVHlwZU9mZnNldDogMCwKKyAgICAgICAgX25vZGVOYW1lT2Zm
c2V0OiAxLAorICAgICAgICBfZWRnZXNDb3VudE9mZnNldDogMiwKKyAgICAgICAgX2ZpcnN0RWRn
ZU9mZnNldDogMywKKyAgICAgICAgX2VkZ2VGaWVsZHNDb3VudDogMywKKyAgICAgICAgX2VkZ2VU
eXBlT2Zmc2V0OiAwLAorICAgICAgICBfZWRnZU5hbWVPZmZzZXQ6IDEsCisgICAgICAgIF9lZGdl
VG9Ob2RlT2Zmc2V0OiAyLAorICAgICAgICBfbm9kZVR5cGVzOiBbImhpZGRlbiIsICJvYmplY3Qi
XSwKKyAgICAgICAgX2VkZ2VUeXBlczogWyJlbGVtZW50IiwgInByb3BlcnR5Il0sCisgICAgICAg
IF9lZGdlU2hvcnRjdXRUeXBlOiAtMSwKKyAgICAgICAgX2VkZ2VIaWRkZW5UeXBlOiAtMSwKKyAg
ICAgICAgX2VkZ2VFbGVtZW50VHlwZTogMCwKKyAgICAgICAgLy8gUmVwcmVzZW50cyB0aGUgZm9s
bG93aW5nIGdyYXBoOgorICAgICAgICAvLyAgIChudW1iZXJzIGluIHBhcmVudGhlc2VzIGluZGlj
YXRlIG5vZGUgb2Zmc2V0KQorICAgICAgICAvLyAKKyAgICAgICAgLy8gICAgICAgICBBICg5KSAt
LWFjLSBDICgyNykgLWNlLSBFKDM2KQorICAgICAgICAvLyAgICAgICBhL3wgICAgICAgICAvCisg
ICAgICAgIC8vICAiIiAoMCkgMSAgICAgIGJjCisgICAgICAgIC8vICAgICAgIGJcdiAgICAvCisg
ICAgICAgIC8vICAgICAgICAgQiAoMTgpIC1iZC0gRCAoMzMpCisgICAgICAgIC8vCisgICAgICAg
IF9ub2RlczogWworICAgICAgICAgICAgMCwgMCwgMiwgMSwgIDYsICA5LCAxLCAgNywgMTgsCisg
ICAgICAgICAgICAxLCAxLCAyLCAwLCAgMSwgMTgsIDEsICA4LCAyNywKKyAgICAgICAgICAgIDEs
IDIsIDIsIDEsICA5LCAyNywgMSwgMTAsIDMzLAorICAgICAgICAgICAgMSwgMywgMSwgMSwgMTEs
IDM2LAorICAgICAgICAgICAgMSwgNCwgMCwKKyAgICAgICAgICAgIDEsIDUsIDBdLAorICAgICAg
ICBfc3RyaW5nczogWyIiLCAiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgImEiLCAiYiIsICJhYyIs
ICJiYyIsICJiZCIsICJjZSJdCisgICAgfTsKK307CisKK0luc3BlY3RvclRlc3QuY3JlYXRlSGVh
cFNuYXBzaG90TW9jayA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBub2Rl
czogWworICAgICAgICAgICAgeyBmaWVsZHM6IFsidHlwZSIsICJuYW1lIiwgImlkIiwgInNlbGZf
c2l6ZSIsICJyZXRhaW5lZF9zaXplIiwgImRvbWluYXRvciIsICJjaGlsZHJlbl9jb3VudCIsICJj
aGlsZHJlbiJdLAorICAgICAgICAgICAgICB0eXBlczogW1siaGlkZGVuIiwgIm9iamVjdCJdLCAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCB7IGZpZWxkczogWyJ0eXBlIiwgIm5hbWVfb3JfaW5kZXgi
LCAidG9fbm9kZSJdLCB0eXBlczogW1siZWxlbWVudCIsICJwcm9wZXJ0eSJdLCAiIiwgIiJdIH1d
IH0sCisgICAgICAgICAgICAvLyBFZmZlY3RpdmVseSB0aGUgc2FtZSBncmFwaCBhcyBpbiBjcmVh
dGVIZWFwU25hcHNob3RNb2NrT2JqZWN0LAorICAgICAgICAgICAgLy8gYnV0IGhhdmluZyBmdWxs
IHNldCBvZiBmaWVsZHMuCisgICAgICAgICAgICAvLyAKKyAgICAgICAgICAgIC8vIEEgdHJpcGxl
IGluIHBhcmVudGhlc2VzIGluZGljYXRlcyBub2RlIGluZGV4LCBzZWxmIHNpemUgYW5kCisgICAg
ICAgICAgICAvLyByZXRhaW5lZCBzaXplLgorICAgICAgICAgICAgLy8gCisgICAgICAgICAgICAv
LyAgICAgICAgICAtLS0gQSAoMTQsMiwyKSAtLWFjLSBDICg0MCw0LDEwKSAtY2UtIEUoNTcsNiw2
KQorICAgICAgICAgICAgLy8gICAgICAgICAvICAgIHwgICAgICAgICAgICAgICAgLworICAgICAg
ICAgICAgLy8gICIiICgxLDAsMjApIDEgICAgICAgLS1iYy0tLS0tCisgICAgICAgICAgICAvLyAg
ICAgICAgIFwgICAgdiAgICAgIC8KKyAgICAgICAgICAgIC8vICAgICAgICAgIC0tLSBCICgyNywz
LDgpIC0tYmQtIEQgKDUwLDUsNSkKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAwLCAwLCAx
LCAwLCAyMCwgIDEsIDIsIDEsICA2LCAxNCwgMSwgIDcsIDI3LAorICAgICAgICAgICAgMSwgMSwg
MiwgMiwgIDIsICAxLCAyLCAwLCAgMSwgMjcsIDEsICA4LCA0MCwKKyAgICAgICAgICAgIDEsIDIs
IDMsIDMsICA4LCAgMSwgMiwgMSwgIDksIDQwLCAxLCAxMCwgNTAsCisgICAgICAgICAgICAxLCAz
LCA0LCA0LCAxMCwgIDEsIDEsIDEsIDExLCA1NywKKyAgICAgICAgICAgIDEsIDQsIDUsIDUsICA1
LCAyNywgMCwKKyAgICAgICAgICAgIDEsIDUsIDYsIDYsICA2LCA0MCwgMF0sCisgICAgICAgIHN0
cmluZ3M6IFsiIiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJhIiwgImIiLCAiYWMiLCAiYmMi
LCAiYmQiLCAiY2UiXQorICAgIH07Cit9OworCit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNDFlMTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyBIZWFwU25hcHNob3RzIG1vZHVsZS4K
KworCitSdW5uaW5nOiBoZWFwU25hcHNob3ROb2RlU2ltcGxlVGVzdAorCitSdW5uaW5nOiBoZWFw
U25hcHNob3ROb2RlSXRlcmF0b3JUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdEVkZ2VTaW1w
bGVUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdEVkZ2VJdGVyYXRvclRlc3QKKworUnVubmlu
ZzogaGVhcFNuYXBzaG90Tm9kZUFuZEVkZ2VUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdFNp
bXBsZVRlc3QKKworUnVubmluZzogaGVhcFNuYXBzaG90SWRzVGVzdAorCitSdW5uaW5nOiBoZWFw
U25hcHNob3RSZXRhaW5lcnNUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdEFnZ3JlZ2F0ZXNU
ZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXJUZXN0CisKK1J1bm5pbmc6
IGhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXJUZXN0CisKK1J1bm5pbmc6IGhlYXBTbmFwc2hvdFBh
dGhGaW5kZXJUZXN0CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NGI1
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC5odG1sCkBAIC0wLDAgKzEsMjQwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9oZWFwLXNuYXBz
aG90LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiBoZWFwU25h
cHNob3ROb2RlU2ltcGxlVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc25h
cHNob3QgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QoKTsKKyAg
ICAgICAgICAgIHZhciBub2RlUm9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9k
ZShzbmFwc2hvdCwgc25hcHNob3QuX3Jvb3ROb2RlSW5kZXgpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoIiIsIG5vZGVSb290Lm5hbWUsICJyb290IG5hbWUiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJoaWRkZW4iLCBub2RlUm9vdC50
eXBlLCAicm9vdCB0eXBlIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygyLCBub2RlUm9vdC5lZGdlc0NvdW50LCAicm9vdCBlZGdlcyIpOworICAgICAgICAgICAgdmFy
IG5vZGVFID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlKHNuYXBzaG90LCAzNik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiRSIsIG5vZGVFLm5hbWUs
ICJFIG5hbWUiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJvYmpl
Y3QiLCBub2RlRS50eXBlLCAiRSB0eXBlIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygwLCBub2RlRS5lZGdlc0NvdW50LCAiRSBlZGdlcyIpOworICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdE5vZGVJ
dGVyYXRvclRlc3QobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0KCk7CisgICAgICAgICAg
ICB2YXIgbm9kZVJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNo
b3QsIHNuYXBzaG90Ll9yb290Tm9kZUluZGV4KTsKKyAgICAgICAgICAgIHZhciBpdGVyYXRvciA9
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yKG5vZGVSb290KTsKKyAg
ICAgICAgICAgIHZhciBuYW1lcyA9IFtdOworICAgICAgICAgICAgZm9yIChpdGVyYXRvci5maXJz
dCgpOyBpdGVyYXRvci5oYXNOZXh0KCk7IGl0ZXJhdG9yLm5leHQoKSkKKyAgICAgICAgICAgICAg
ICBuYW1lcy5wdXNoKGl0ZXJhdG9yLml0ZW0ubmFtZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscygiLEEsQixDLEQsRSIsIG5hbWVzLmpvaW4oIiwiKSwgIm5vZGUgaXRl
cmF0b3IiKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbiBoZWFwU25hcHNob3RFZGdlU2ltcGxlVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgc25hcHNob3QgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tP
YmplY3QoKTsKKyAgICAgICAgICAgIHZhciBub2RlUm9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Tm9kZShzbmFwc2hvdCwgc25hcHNob3QuX3Jvb3ROb2RlSW5kZXgpOworICAgICAg
ICAgICAgdmFyIGVkZ2VzUm9vdCA9IG5vZGVSb290LnJhd0VkZ2VzOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobm9kZVJvb3QuZWRnZXNDb3VudCAqIHNuYXBzaG90Ll9l
ZGdlRmllbGRzQ291bnQsIGVkZ2VzUm9vdC5sZW5ndGgsICJyYXdFZGdlcyBsZW5ndGgiKTsKKyAg
ICAgICAgICAgIHZhciBlZGdlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlKHNu
YXBzaG90LCBlZGdlc1Jvb3QpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoInByb3BlcnR5IiwgZWRnZS50eXBlLCAiZWRnZSB0eXBlIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscygiYSIsIGVkZ2UubmFtZSwgImVkZ2UgbmFtZSIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIkEiLCBlZGdlLm5vZGUubmFtZSwg
ImVkZ2Ugbm9kZSBuYW1lIik7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90RWRnZUl0ZXJhdG9yVGVzdChuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBT
bmFwc2hvdE1vY2tPYmplY3QoKTsKKyAgICAgICAgICAgIHZhciBub2RlUm9vdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hvdCwgc25hcHNob3QuX3Jvb3ROb2RlSW5k
ZXgpOworICAgICAgICAgICAgdmFyIG5hbWVzID0gW107CisgICAgICAgICAgICB2YXIgaXRlcmF0
b3IgPSBub2RlUm9vdC5lZGdlczsKKyAgICAgICAgICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsg
aXRlcmF0b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpCisgICAgICAgICAgICAgICAgbmFt
ZXMucHVzaChpdGVyYXRvci5pdGVtLm5hbWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoImEsYiIsIG5hbWVzLmpvaW4oIiwiKSwgImVkZ2UgaXRlcmF0b3IiKTsKKyAg
ICAgICAgICAgIHZhciBub2RlRSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShz
bmFwc2hvdCwgMzYpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFs
c2UsIG5vZGVFLmVkZ2VzLmhhc05leHQoKSwgImVtcHR5IGVkZ2UgaXRlcmF0b3IiKTsKKyAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNo
b3ROb2RlQW5kRWRnZVRlc3QobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNuYXBz
aG90TW9jayA9IEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCgpOwor
ICAgICAgICAgICAgdmFyIG5vZGVSb290ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2RlKHNuYXBzaG90TW9jaywgc25hcHNob3RNb2NrLl9yb290Tm9kZUluZGV4KTsKKyAgICAgICAg
ICAgIHZhciBuYW1lcyA9IFtdOworICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBk
ZXB0aEZpcnN0VHJhdmVyc2FsKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
bmFtZXMucHVzaChub2RlLm5hbWUpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGVkZ2VzID0g
bm9kZS5lZGdlczsgZWRnZXMuaGFzTmV4dCgpOyBlZGdlcy5uZXh0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZXMucHVzaChlZGdlcy5pdGVtLm5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBkZXB0aEZpcnN0VHJhdmVyc2FsKGVkZ2VzLml0ZW0ubm9kZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgCisgICAgICAgICAgICBkZXB0aEZpcnN0VHJhdmVy
c2FsKG5vZGVSb290KTsKKyAgICAgICAgICAgIHZhciByZWZlcmVuY2UgPSAiLGEsQSwxLEIsYmMs
QyxjZSxFLGJkLEQsYWMsQyxjZSxFLGIsQixiYyxDLGNlLEUsYmQsRCI7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhyZWZlcmVuY2UsIG5hbWVzLmpvaW4oIiwiKSwgIm1v
Y2sgdHJhdmVyc2FsIik7CisgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5vdyBjaGVjayBhZ2Fp
bnN0IGEgcmVhbCBIZWFwU25hcHNob3QgaW5zdGFuY2UuCisgICAgICAgICAgICBuYW1lcyA9IFtd
OworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAgICAg
ZGVwdGhGaXJzdFRyYXZlcnNhbChzbmFwc2hvdC5yb290Tm9kZSk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhyZWZlcmVuY2UsIG5hbWVzLmpvaW4oIiwiKSwgInNuYXBz
aG90IHRyYXZlcnNhbCIpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdFNpbXBsZVRlc3QobmV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5z
cGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoNiwgc25hcHNob3Qubm9kZXNDb3VudCwgIm5vZGVzIGNvdW50
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyMCwgc25hcHNob3Qu
dG90YWxTaXplLCAidG90YWwgc2l6ZSIpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9
LAorCisgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdElkc1Rlc3QobmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsIHNuYXBzaG90Lmhhc0lkKDApLCAiaGFz
IGlkIDAiKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDY7ICsraSkKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBzbmFwc2hvdC5oYXNJ
ZChpKSwgImhhcyBpZCAiICsgaSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhmYWxzZSwgc25hcHNob3QuaGFzSWQoNyksICJoYXMgaWQgNyIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsIHNuYXBzaG90Lmhhc0lkKDEwMCksICJo
YXMgaWQgMTAwIik7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24gaGVhcFNuYXBzaG90UmV0YWluZXJzVGVzdChuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNw
ZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRSZXRhaW5lcnMgPSB7CisgICAgICAgICAgICAgICAgIiI6IFtdLAorICAgICAgICAgICAg
ICAgICJBIjogWyIiXSwKKyAgICAgICAgICAgICAgICAiQiI6IFsiIiwgIkEiXSwKKyAgICAgICAg
ICAgICAgICAiQyI6IFsiQSIsICJCIl0sCisgICAgICAgICAgICAgICAgIkQiOiBbIkIiXSwKKyAg
ICAgICAgICAgICAgICAiRSI6IFsiQyJdfTsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGVzID0g
c25hcHNob3QuYWxsTm9kZXM7IG5vZGVzLmhhc05leHQoKTsgbm9kZXMubmV4dCgpKSB7CisgICAg
ICAgICAgICAgICAgdmFyIG5hbWVzID0gW107CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcmV0
YWluZXJzID0gbm9kZXMuaXRlbS5yZXRhaW5lcnM7IHJldGFpbmVycy5oYXNOZXh0KCk7IHJldGFp
bmVycy5uZXh0KCkpCisgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2gocmV0YWluZXJzLml0
ZW0ubm9kZS5uYW1lKTsKKyAgICAgICAgICAgICAgICBuYW1lcy5zb3J0KCk7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRSZXRhaW5lcnNbbm9kZXMu
aXRlbS5uYW1lXS5qb2luKCIsIiksIG5hbWVzLmpvaW4oIiwiKSwgInJldGFpbmVycyBvZiBcIiIg
KyBub2Rlcy5pdGVtLm5hbWUgKyAiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RBZ2dyZWdh
dGVzVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hv
dE1vY2soKSk7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRBZ2dyZWdhdGVzID0geworICAgICAg
ICAgICAgICAgICJBIjogeyBjb3VudDogMSwgc2VsZjogMiwgbWF4UmV0OiAyLCB0eXBlOiAib2Jq
ZWN0IiwgbmFtZTogIkEiIH0sCisgICAgICAgICAgICAgICAgIkIiOiB7IGNvdW50OiAxLCBzZWxm
OiAzLCBtYXhSZXQ6IDgsIHR5cGU6ICJvYmplY3QiLCBuYW1lOiAiQiIgfSwKKyAgICAgICAgICAg
ICAgICAiQyI6IHsgY291bnQ6IDEsIHNlbGY6IDQsIG1heFJldDogMTAsIHR5cGU6ICJvYmplY3Qi
LCBuYW1lOiAiQyIgfSwKKyAgICAgICAgICAgICAgICAiRCI6IHsgY291bnQ6IDEsIHNlbGY6IDUs
IG1heFJldDogNSwgdHlwZTogIm9iamVjdCIsIG5hbWU6ICJEIiB9LAorICAgICAgICAgICAgICAg
ICJFIjogeyBjb3VudDogMSwgc2VsZjogNiwgbWF4UmV0OiA2LCB0eXBlOiAib2JqZWN0IiwgbmFt
ZTogIkUiIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB2YXIgYWdncmVnYXRlcyA9IHNu
YXBzaG90LmFnZ3JlZ2F0ZXMoZmFsc2UpOworICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBh
Z2dyZWdhdGVzKSB7CisgICAgICAgICAgICAgICAgdmFyIGFnZ3JlZ2F0ZSA9IGFnZ3JlZ2F0ZXNb
bmFtZV07CisgICAgICAgICAgICAgICAgdmFyIGV4cGVjdGVkQWdncmVnYXRlID0gZXhwZWN0ZWRB
Z2dyZWdhdGVzW25hbWVdOworICAgICAgICAgICAgICAgIGZvciAodmFyIHBhcmFtZXRlciBpbiBl
eHBlY3RlZEFnZ3JlZ2F0ZSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWRBZ2dyZWdhdGVbcGFyYW1ldGVyXSwgYWdncmVnYXRlW3BhcmFtZXRl
cl0sICJwYXJhbWV0ZXIgIiArIHBhcmFtZXRlciArICIgb2YgXCIiICsgbmFtZSArICJcIiIpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGV4cGVjdGVkSW5kZXhlcyA9IHsKKyAgICAg
ICAgICAgICAgICJBIjogWzE0XSwKKyAgICAgICAgICAgICAgICJCIjogWzI3XSwKKyAgICAgICAg
ICAgICAgICJDIjogWzQwXSwKKyAgICAgICAgICAgICAgICJEIjogWzUwXSwKKyAgICAgICAgICAg
ICAgICJFIjogWzU3XQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHZhciBpbmRleGVzID0g
c25hcHNob3QuYWdncmVnYXRlcyh0cnVlKTsKKyAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4g
YWdncmVnYXRlcykgeworICAgICAgICAgICAgICAgIHZhciBhZ2dyZWdhdGUgPSBhZ2dyZWdhdGVz
W25hbWVdOworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZEluZGV4ID0gZXhwZWN0ZWRJbmRl
eGVzW25hbWVdOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGV4
cGVjdGVkSW5kZXguam9pbigiLCIpLCBhZ2dyZWdhdGUuaWR4cy5qb2luKCIsIiksICJpbmRleGVz
IG9mIFwiIiArIG5hbWUgKyAiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5leHQo
KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3ROb2Rlc1Byb3Zp
ZGVyVGVzdChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hv
dE1vY2soKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5vZGVGaWx0ZXIo
bm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS50eXBlID09
PSAib2JqZWN0IiAmJiBub2RlLm5hbWUgIT09ICJCIiAmJiBub2RlLm5hbWUgIT09ICJEIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyKHNuYXBzaG90LCBzbmFwc2hvdC5h
bGxOb2Rlcywgbm9kZUZpbHRlcik7CisgICAgICAgICAgICAvLyBTb3J0IGJ5IG5hbWVzIGluIHJl
dmVyc2Ugb3JkZXIuCisgICAgICAgICAgICBwcm92aWRlci5zb3J0KFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuY3JlYXRlQ29tcGFyYXRv
cihbIm5hbWUiLCBmYWxzZSwgImlkIiwgZmFsc2VdKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscygzLCBwcm92aWRlci5sZW5ndGgsICJub2RlcyBwcm92aWRlciBsZW5n
dGgiKTsKKyAgICAgICAgICAgIHZhciBuYW1lcyA9IFtdOworICAgICAgICAgICAgZm9yIChwcm92
aWRlci5maXJzdCgpOyBwcm92aWRlci5oYXNOZXh0KCk7IHByb3ZpZGVyLm5leHQoKSkKKyAgICAg
ICAgICAgICAgICBuYW1lcy5wdXNoKHByb3ZpZGVyLml0ZW0ubmFtZSk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiRSxDLEEiLCBuYW1lcy5qb2luKCIsIiksICJub2Rl
cyBwcm92aWRlciBuYW1lcyIpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXJUZXN0KG5leHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gZWRnZUZpbHRlcihlZGdlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBlZGdlLm5hbWUgPT09ICJiIjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgIAorICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyKHNuYXBzaG90LCBzbmFwc2hvdC5yb290Tm9kZS5yYXdF
ZGdlcywgZWRnZUZpbHRlcik7CisgICAgICAgICAgICBwcm92aWRlci5zb3J0KFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuY3JlYXRlQ29t
cGFyYXRvcihbIiFlZGdlTmFtZSIsIGZhbHNlLCAiaWQiLCBmYWxzZV0pKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHByb3ZpZGVyLmxlbmd0aCwgImVkZ2VzIHBy
b3ZpZGVyIGxlbmd0aCIpOworICAgICAgICAgICAgdmFyIG5hbWVzID0gW107CisgICAgICAgICAg
ICBmb3IgKHByb3ZpZGVyLmZpcnN0KCk7IHByb3ZpZGVyLmhhc05leHQoKTsgcHJvdmlkZXIubmV4
dCgpKQorICAgICAgICAgICAgICAgIG5hbWVzLnB1c2gocHJvdmlkZXIuaXRlbS5uYW1lKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJiIiwgbmFtZXMuam9pbigiLCIp
LCAiZWRnZXMgcHJvdmlkZXIgbmFtZXMiKTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RQYXRoRmluZGVyVGVzdChuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQYXRocyA9IHsKKyAgICAgICAgICAgICAgICAgMTogW10sCisg
ICAgICAgICAgICAgICAgMTQ6IFtdLAorICAgICAgICAgICAgICAgIDI3OiBbIkFAMlsxXSJdLAor
ICAgICAgICAgICAgICAgIDQwOiBbIkFAMi5hYyIsICJBQDJbMV0uYmMiLCAiQkAzLmJjIl0sCisg
ICAgICAgICAgICAgICAgNTA6IFsiQUAyWzFdLmJkIiwgIkJAMy5iZCJdLAorICAgICAgICAgICAg
ICAgIDU3OiBbIkFAMi5hYy5jZSIsICJBQDJbMV0uYmMuY2UiLCAiQkAzLmJjLmNlIl0KKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBmb3IgKHZhciBub2RlcyA9IHNuYXBzaG90LmFsbE5vZGVz
OyBub2Rlcy5oYXNOZXh0KCk7IG5vZGVzLm5leHQoKSkgeworICAgICAgICAgICAgICAgIHZhciBw
YXRoRmluZGVyID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQYXRoRmluZGVyKHNuYXBz
aG90LCBub2Rlcy5pbmRleCk7CisgICAgICAgICAgICAgICAgdmFyIHBhdGhzID0gW107CisgICAg
ICAgICAgICAgICAgdmFyIHBhdGg7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhGaW5kZXIuZmluZE5leHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhdGggPT09IG51bGwpCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocGF0aCAhPT0gZmFsc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKHBhdGgucGF0aCk7CisgICAgICAgICAgICAg
ICAgfSAKKyAgICAgICAgICAgICAgICBwYXRocy5zb3J0KCk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRQYXRoc1tub2Rlcy5pbmRleF0uam9pbigi
OyIpLCBwYXRocy5qb2luKCI7IiksICJwYXRocyB0byBcIiIgKyBub2Rlcy5pdGVtLm5hbWUgKyAi
XCIiKTsgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0KKyAg
ICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPgorVGhpcyB0ZXN0IGNoZWNrcyBIZWFwU25hcHNob3RzIG1vZHVsZS4KKzwvcD4KKwor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="79087"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="79088"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>