<?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>78885</bug_id>
          
          <creation_ts>2012-02-17 02:00:31 -0800</creation_ts>
          <short_desc>perf-o-matic needs model unit tests</short_desc>
          <delta_ts>2012-02-17 10:47:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>morrita</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559047</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 02:00:31 -0800</bug_when>
    <thetext>We need some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559053</commentid>
    <comment_count>1</comment_count>
      <attachid>127554</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 02:05:34 -0800</bug_when>
    <thetext>Created attachment 127554
Adds some unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559316</commentid>
    <comment_count>2</comment_count>
      <attachid>127554</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 10:41:57 -0800</bug_when>
    <thetext>Comment on attachment 127554
Adds some unit tests

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

&gt; Websites/webkit-perf.appspot.com/models_unittest.py:272
&gt; +if __name__ == &apos;__main__&apos;:
&gt; +    unittest.main()

Is this test wired into test-webkitpy?  We have some tests from the QueueStatusServer wired in if you want to see how it&apos;s done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559318</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 10:43:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 127554 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127554&amp;action=review
&gt; 
&gt; &gt; Websites/webkit-perf.appspot.com/models_unittest.py:272
&gt; &gt; +if __name__ == &apos;__main__&apos;:
&gt; &gt; +    unittest.main()
&gt; 
&gt; Is this test wired into test-webkitpy?  We have some tests from the QueueStatusServer wired in if you want to see how it&apos;s done.

Not at the moment. I think we want to move the entire directory into Tools first if we&apos;re going to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559323</commentid>
    <comment_count>4</comment_count>
      <attachid>127554</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 10:47:09 -0800</bug_when>
    <thetext>Comment on attachment 127554
Adds some unit tests

Clearing flags on attachment: 127554

Committed r108094: &lt;http://trac.webkit.org/changeset/108094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559325</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 10:47:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127554</attachid>
            <date>2012-02-17 02:05:34 -0800</date>
            <delta_ts>2012-02-17 10:47:09 -0800</delta_ts>
            <desc>Adds some unit tests</desc>
            <filename>bug-78885-20120217020532.patch</filename>
            <type>text/plain</type>
            <size>24675</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwODA1
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEyLTAy
LTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIHBlcmYtby1t
YXRpYyBuZWVkcyBtb2RlbCB1bml0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03ODg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIHVuaXQgdGVzdHMgZm9yIG1vZGVscy5weS4KKworICAg
ICAgICBBbHNvIHJlbmFtZWQgbW9kZWxGcm9tTnVtZXJpY0lkIHRvIG1vZGVsX2Zyb21fbnVtZXJp
Y19pZCBhbmQgbW92ZWQgc2V0X3BlcnNpdGVudF9jYWNoZSBhbmQgZ2V0X3BlcnNpc3RlbnRfY2Fj
aGUKKyAgICAgICAgZnJvbSBjb250cm9sbGVyIHRvIFBlcnNpc3RlbnRDYWNoZS5zZXRfY2FjaGUg
YW5kIFBlcnNpc3RlbnRDYWhjZS5zZXRfY2FjaGUgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgICog
V2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vY29udHJvbGxlci5weToKKyAgICAgICAg
KGNhY2hlX21hbmlmZXN0KToKKyAgICAgICAgKENhY2hlZE1hbmlmZXN0SGFuZGxlci5nZXQpOgor
ICAgICAgICAoY2FjaGVfZGFzaGJvYXJkKToKKyAgICAgICAgKENhY2hlZERhc2hib2FyZEhhbmRs
ZXIuZ2V0KToKKyAgICAgICAgKGNhY2hlX3J1bnMpOgorICAgICAgICAoQ2FjaGVkUnVuc0hhbmRs
ZXIuZ2V0KToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9jcmVh
dGVfaGFuZGxlci5weToKKyAgICAgICAgKENyZWF0ZUhhbmRsZXIuX2NyZWF0ZV9idWlsZGVyKToK
KyAgICAgICAgKENyZWF0ZUhhbmRsZXIuX2NyZWF0ZV9idWlsZGVyLmV4ZWN1dGUpOgorICAgICAg
ICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVscy5weToKKyAgICAgICAg
KGNyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKToKKyAgICAgICAg
KG1vZGVsX2Zyb21fbnVtZXJpY19pZCk6CisgICAgICAgIChCdWlsZGVyKToKKyAgICAgICAgKEJ1
aWxkZXIuY3JlYXRlKToKKyAgICAgICAgKEJ1aWxkZXIudXBkYXRlX3Bhc3N3b3JkKToKKyAgICAg
ICAgKEJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCk6CisgICAgICAgIChUZXN0UmVzdWx0LmtleV9u
YW1lKToKKyAgICAgICAgKFJlcG9ydExvZy5nZXRfdmFsdWUpOgorICAgICAgICAoUmVwb3J0TG9n
Ll9pbnRlZ2VyX2luX3BheWxvYWQpOgorICAgICAgICAoUmVwb3J0TG9nKToKKyAgICAgICAgKFJl
cG9ydExvZy50aW1lc3RhbXApOgorICAgICAgICAoUGVyc2lzdGVudENhY2hlKToKKyAgICAgICAg
KFBlcnNpc3RlbnRDYWNoZS5zZXRfY2FjaGUpOgorICAgICAgICAoUGVyc2lzdGVudENhY2hlLnNl
dF9jYWNoZS5leGVjdXRlKToKKyAgICAgICAgKFBlcnNpc3RlbnRDYWNoZS5nZXRfY2FjaGUpOgor
ICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0dGVz
dC5weTogQWRkZWQuCisgICAgICAgIChIZWxwZXJUZXN0cyk6CisgICAgICAgIChIZWxwZXJUZXN0
cy5zZXRVcCk6CisgICAgICAgIChIZWxwZXJUZXN0cy50ZWFyRG93bik6CisgICAgICAgIChIZWxw
ZXJUZXN0cy5fYXNzZXJ0X3RoZXJlX2lzX2V4YWN0bHlfb25lX2lkX2hvbGRlcl9hbmRfbWF0Y2hl
cyk6CisgICAgICAgIChIZWxwZXJUZXN0cy50ZXN0X2NyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRo
X251bWVyaWNfaWRfaG9sZGVyKToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfY3JlYXRlX2lu
X3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIuZXhlY3V0ZSk6CisgICAgICAgIChI
ZWxwZXJUZXN0cy50ZXN0X2ZhaWxpbmdfaW5fY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVt
ZXJpY19pZF9ob2xkZXIpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9mYWlsaW5nX2luX2Ny
ZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyLmV4ZWN1dGUpOgorICAg
ICAgICAoSGVscGVyVGVzdHMudGVzdF9yYWlzaW5nX2luX2NyZWF0ZV9pbl90cmFuc2FjdGlvbl93
aXRoX251bWVyaWNfaWRfaG9sZGVyKToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfcmFpc2lu
Z19pbl9jcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlci5leGVjdXRl
KToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19p
ZF9ob2xkZXIpOgorICAgICAgICAoSGVscGVyVGVzdHMudGVzdF9kZWxldGVfbW9kZWxfd2l0aF9u
dW1lcmljX2lkX2hvbGRlci5leGVjdXRlKToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfbW9k
ZWxfZnJvbV9udW1lcmljX2lkKToKKyAgICAgICAgKEhlbHBlclRlc3RzLnRlc3RfbW9kZWxfZnJv
bV9udW1lcmljX2lkLmV4ZWN1dGUpOgorICAgICAgICAoQnVpbGRlclRlc3RzKToKKyAgICAgICAg
KEJ1aWxkZXJUZXN0cy5zZXRVcCk6CisgICAgICAgIChCdWlsZGVyVGVzdHMudGVhckRvd24pOgor
ICAgICAgICAoQnVpbGRlclRlc3RzLnRlc3RfY3JlYXRlKToKKyAgICAgICAgKEJ1aWxkZXJUZXN0
cy50ZXN0X3VwZGF0ZV9wYXNzd29yZCk6CisgICAgICAgIChCdWlsZGVyVGVzdHMudGVzdF9oYXNo
ZWRfcGFzc3dvcmQpOgorICAgICAgICAoQnVpbGRlclRlc3RzLnRlc3RfYXV0aGVudGljYXRlKToK
KyAgICAgICAgKFJlcG9ydExvZyk6CisgICAgICAgIChSZXBvcnRMb2cuc2V0VXApOgorICAgICAg
ICAoUmVwb3J0TG9nLnRlYXJEb3duKToKKyAgICAgICAgKFJlcG9ydExvZy5fY3JlYXRlX2xvZ193
aXRoX3BheWxvYWQpOgorICAgICAgICAoUmVwb3J0TG9nLnRlc3RfcGFyc2VkX3BheWxvYWQpOgor
ICAgICAgICAoUmVwb3J0TG9nLnRlc3RfZ2V0X3ZhbHVlKToKKyAgICAgICAgKFJlcG9ydExvZy50
ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoUmVwb3J0TG9nLnRlc3RfYnVpbGRlcik6CisgICAgICAg
IChSZXBvcnRMb2cudGVzdF9idWlsZF9udW1iZXIpOgorICAgICAgICAoUmVwb3J0TG9nLnRlc3Rf
d2Via2l0X3JldmlzaW9uKToKKyAgICAgICAgKFJlcG9ydExvZy5jaHJvbWl1bV9yZXZpc2lvbik6
CisgICAgICAgIChQZXJzaXN0ZW50Q2FjaGVUZXN0cyk6CisgICAgICAgIChQZXJzaXN0ZW50Q2Fj
aGVUZXN0cy5zZXRVcCk6CisgICAgICAgIChQZXJzaXN0ZW50Q2FjaGVUZXN0cy50ZWFyRG93bik6
CisgICAgICAgIChQZXJzaXN0ZW50Q2FjaGVUZXN0cy5fYXNzZXJ0X3BlcnNpc3RlbnRfY2FjaGUp
OgorICAgICAgICAoUGVyc2lzdGVudENhY2hlVGVzdHMudGVzdF9zZXQpOgorICAgICAgICAoUGVy
c2lzdGVudENhY2hlVGVzdHMudGVzdF9nZXQpOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1w
ZXJmLmFwcHNwb3QuY29tL3J1bnNfaGFuZGxlci5weToKKyAgICAgICAgKFJ1bnNIYW5kbGVyLnBv
c3QpOgorCiAyMDEyLTAyLTE2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KIAogICAgICAgICBbUXRdIE1vdmUgZXZlbnQgY29udmVyc2lvbiBmdW5jdGlvbnMgZnJv
bSBXZWJDb3JlIHRvIFdlYktpdApJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5j
b20vY29udHJvbGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBz
cG90LmNvbS9jb250cm9sbGVyLnB5CShyZXZpc2lvbiAxMDgwMDgpCisrKyBXZWJzaXRlcy93ZWJr
aXQtcGVyZi5hcHBzcG90LmNvbS9jb250cm9sbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw2IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCB3ZWJhcHAyCi1mcm9tIGdvb2dsZS5h
cHBlbmdpbmUuYXBpIGltcG9ydCBtZW1jYWNoZQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBp
bXBvcnQgdGFza3F1ZXVlCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBkYgogCkBA
IC0zNiwzMSArMzUsOCBAQCBmcm9tIG1vZGVscyBpbXBvcnQgVGVzdAogZnJvbSBtb2RlbHMgaW1w
b3J0IFBlcnNpc3RlbnRDYWNoZQogCiAKLWRlZiBzZXRfcGVyc2lzdGVudF9jYWNoZShuYW1lLCB2
YWx1ZSk6Ci0gICAgbWVtY2FjaGUuc2V0KG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIGV4ZWN1dGUo
KToKLSAgICAgICAgY2FjaGUgPSBQZXJzaXN0ZW50Q2FjaGUuZ2V0X2J5X2tleV9uYW1lKG5hbWUp
Ci0gICAgICAgIGlmIGNhY2hlOgotICAgICAgICAgICAgY2FjaGUudmFsdWUgPSB2YWx1ZQotICAg
ICAgICAgICAgY2FjaGUucHV0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIFBlcnNpc3Rl
bnRDYWNoZShrZXlfbmFtZT1uYW1lLCB2YWx1ZT12YWx1ZSkucHV0KCkKLQotICAgIGRiLnJ1bl9p
bl90cmFuc2FjdGlvbihleGVjdXRlKQotCi0KLWRlZiBnZXRfcGVyc2lzdGVudF9jYWNoZShuYW1l
KToKLSAgICB2YWx1ZSA9IG1lbWNhY2hlLmdldChuYW1lKQotICAgIGlmIHZhbHVlOgotICAgICAg
ICByZXR1cm4gdmFsdWUKLSAgICBjYWNoZSA9IFBlcnNpc3RlbnRDYWNoZS5nZXRfYnlfa2V5X25h
bWUobmFtZSkKLSAgICBtZW1jYWNoZS5zZXQobmFtZSwgY2FjaGUudmFsdWUpCi0gICAgcmV0dXJu
IGNhY2hlLnZhbHVlCi0KLQogZGVmIGNhY2hlX21hbmlmZXN0KGNhY2hlKToKLSAgICBzZXRfcGVy
c2lzdGVudF9jYWNoZSgnbWFuaWZlc3QnLCBjYWNoZSkKKyAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0
X2NhY2hlKCdtYW5pZmVzdCcsIGNhY2hlKQogCiAKIGRlZiBzY2hlZHVsZV9tYW5pZmVzdF91cGRh
dGUoKToKQEAgLTcwLDcgKzQ2LDcgQEAgZGVmIHNjaGVkdWxlX21hbmlmZXN0X3VwZGF0ZSgpOgog
Y2xhc3MgQ2FjaGVkTWFuaWZlc3RIYW5kbGVyKHdlYmFwcDIuUmVxdWVzdEhhbmRsZXIpOgogICAg
IGRlZiBnZXQoc2VsZik6CiAgICAgICAgIHNlbGYucmVzcG9uc2UuaGVhZGVyc1snQ29udGVudC1U
eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbicKLSAgICAgICAgbWFuaWZlc3QgPSBnZXRfcGVyc2lz
dGVudF9jYWNoZSgnbWFuaWZlc3QnKQorICAgICAgICBtYW5pZmVzdCA9IFBlcnNpc3RlbnRDYWNo
ZS5nZXRfY2FjaGUoJ21hbmlmZXN0JykKICAgICAgICAgaWYgbWFuaWZlc3Q6CiAgICAgICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZShtYW5pZmVzdCkKICAgICAgICAgZWxzZToKQEAgLTc4
LDcgKzU0LDcgQEAgY2xhc3MgQ2FjaGVkTWFuaWZlc3RIYW5kbGVyKHdlYmFwcDIuUmVxdQogCiAK
IGRlZiBjYWNoZV9kYXNoYm9hcmQoY2FjaGUpOgotICAgIHNldF9wZXJzaXN0ZW50X2NhY2hlKCdk
YXNoYm9hcmQnLCBjYWNoZSkKKyAgICBQZXJzaXN0ZW50Q2FjaGUuc2V0X2NhY2hlKCdkYXNoYm9h
cmQnLCBjYWNoZSkKIAogCiBkZWYgc2NoZWR1bGVfZGFzaGJvYXJkX3VwZGF0ZSgpOgpAQCAtODgs
NyArNjQsNyBAQCBkZWYgc2NoZWR1bGVfZGFzaGJvYXJkX3VwZGF0ZSgpOgogY2xhc3MgQ2FjaGVk
RGFzaGJvYXJkSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYW5kbGVyKToKICAgICBkZWYgZ2V0KHNl
bGYpOgogICAgICAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2Fw
cGxpY2F0aW9uL2pzb24nCi0gICAgICAgIGRhc2hib2FyZCA9IGdldF9wZXJzaXN0ZW50X2NhY2hl
KCdkYXNoYm9hcmQnKQorICAgICAgICBkYXNoYm9hcmQgPSBQZXJzaXN0ZW50Q2FjaGUuZ2V0X2Nh
Y2hlKCdkYXNoYm9hcmQnKQogICAgICAgICBpZiBkYXNoYm9hcmQ6CiAgICAgICAgICAgICBzZWxm
LnJlc3BvbnNlLm91dC53cml0ZShkYXNoYm9hcmQpCiAgICAgICAgIGVsc2U6CkBAIC05Niw3ICs3
Miw3IEBAIGNsYXNzIENhY2hlZERhc2hib2FyZEhhbmRsZXIod2ViYXBwMi5SZXEKIAogCiBkZWYg
Y2FjaGVfcnVucyh0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkLCBjYWNoZSk6Ci0gICAg
c2V0X3BlcnNpc3RlbnRfY2FjaGUoVGVzdC5jYWNoZV9rZXkodGVzdF9pZCwgYnJhbmNoX2lkLCBw
bGF0Zm9ybV9pZCksIGNhY2hlKQorICAgIFBlcnNpc3RlbnRDYWNoZS5zZXRfY2FjaGUoVGVzdC5j
YWNoZV9rZXkodGVzdF9pZCwgYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCksIGNhY2hlKQogCiAKIGRl
ZiBzY2hlZHVsZV9ydW5zX3VwZGF0ZSh0ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkKToK
QEAgLTExNyw3ICs5Myw3IEBAIGNsYXNzIENhY2hlZFJ1bnNIYW5kbGVyKHdlYmFwcDIuUmVxdWVz
dEgKICAgICAgICAgICAgIGJyYW5jaF9pZCA9IDAKICAgICAgICAgICAgIHBsYXRmb3JtX2lkID0g
MAogCi0gICAgICAgIHJ1bnMgPSBnZXRfcGVyc2lzdGVudF9jYWNoZShUZXN0LmNhY2hlX2tleSh0
ZXN0X2lkLCBicmFuY2hfaWQsIHBsYXRmb3JtX2lkKSkKKyAgICAgICAgcnVucyA9IFBlcnNpc3Rl
bnRDYWNoZS5nZXRfY2FjaGUoVGVzdC5jYWNoZV9rZXkodGVzdF9pZCwgYnJhbmNoX2lkLCBwbGF0
Zm9ybV9pZCkpCiAgICAgICAgIGlmIHJ1bnM6CiAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZShydW5zKQogICAgICAgICBlbHNlOgpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYu
YXBwc3BvdC5jb20vY3JlYXRlX2hhbmRsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20vY3JlYXRlX2hhbmRsZXIucHkJKHJldmlzaW9uIDEwODAwOCkK
KysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2NyZWF0ZV9oYW5kbGVyLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC03MCwxNyArNzAsMTQgQEAgY2xhc3MgQ3JlYXRlSGFuZGxlcih3ZWJh
cHAyLlJlcXVlc3RIYW5kbAogICAgICAgICBpZiBub3QgbmFtZSBvciBub3QgcGFzc3dvcmQ6CiAg
ICAgICAgICAgICByZXR1cm4gJ0ludmFsaWQgbmFtZSBvciBwYXNzd29yZCcKIAotICAgICAgICBw
YXNzd29yZCA9IEJ1aWxkZXIuaGFzaGVkX3Bhc3N3b3JkKHBhc3N3b3JkKQotCiAgICAgICAgIGRl
ZiBleGVjdXRlKCk6CiAgICAgICAgICAgICBtZXNzYWdlID0gTm9uZQogICAgICAgICAgICAgYm90
ID0gQnVpbGRlci5nZXRfYnlfa2V5X25hbWUobmFtZSkKICAgICAgICAgICAgIGlmIGJvdDoKICAg
ICAgICAgICAgICAgICBtZXNzYWdlID0gJ1VwZGF0aW5nIHRoZSBwYXNzd29yZCBzaW5jZSBib3Qg
IiVzIiBhbHJlYWR5IGV4aXN0cycgJSBuYW1lCi0gICAgICAgICAgICAgICAgYm90LnBhc3N3b3Jk
ID0gcGFzc3dvcmQKKyAgICAgICAgICAgICAgICBib3QudXBkYXRlX3Bhc3N3b3JkKHBhc3N3b3Jk
KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBib3QgPSBCdWlsZGVyKG5hbWU9
bmFtZSwgcGFzc3dvcmQ9cGFzc3dvcmQsIGtleV9uYW1lPW5hbWUpCi0gICAgICAgICAgICBib3Qu
cHV0KCkKKyAgICAgICAgICAgICAgICBCdWlsZGVyLmNyZWF0ZShuYW1lLCBwYXNzd29yZCkKICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlCiAKICAgICAgICAgcmV0dXJuIGRiLnJ1bl9pbl90cmFu
c2FjdGlvbihleGVjdXRlKQpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20v
bW9kZWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29t
L21vZGVscy5weQkocmV2aXNpb24gMTA4MDA4KQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBw
c3BvdC5jb20vbW9kZWxzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIGltcG9y
dCByZQogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSBnb29nbGUuYXBwZW5n
aW5lLmV4dCBpbXBvcnQgZGIKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkgaW1wb3J0IG1lbWNh
Y2hlCiAKIAogY2xhc3MgTnVtZXJpY0lkSG9sZGVyKGRiLk1vZGVsKToKQEAgLTQ0LDEyICs0NSwx
NSBAQCBkZWYgY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pCiAgICAgaWRfaG9s
ZGVyID0gTnVtZXJpY0lkSG9sZGVyKCkKICAgICBpZF9ob2xkZXIucHV0KCkKICAgICBpZF9ob2xk
ZXIgPSBOdW1lcmljSWRIb2xkZXIuZ2V0KGlkX2hvbGRlci5rZXkoKSkKLSAgICBvd25lciA9IGRi
LnJ1bl9pbl90cmFuc2FjdGlvbihjYWxsYmFjaywgaWRfaG9sZGVyLmtleSgpLmlkKCkpCi0gICAg
aWYgb3duZXI6Ci0gICAgICAgIGlkX2hvbGRlci5vd25lciA9IG93bmVyCi0gICAgICAgIGlkX2hv
bGRlci5wdXQoKQotICAgIGVsc2U6Ci0gICAgICAgIGlkX2hvbGRlci5kZWxldGUoKQorICAgIG93
bmVyID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgb3duZXIgPSBkYi5ydW5faW5fdHJhbnNhY3Rp
b24oY2FsbGJhY2ssIGlkX2hvbGRlci5rZXkoKS5pZCgpKQorICAgICAgICBpZiBvd25lcjoKKyAg
ICAgICAgICAgIGlkX2hvbGRlci5vd25lciA9IG93bmVyCisgICAgICAgICAgICBpZF9ob2xkZXIu
cHV0KCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBub3Qgb3duZXI6CisgICAgICAgICAgICBp
ZF9ob2xkZXIuZGVsZXRlKCkKICAgICByZXR1cm4gb3duZXIKIAogCkBAIC01OSw3ICs2Myw3IEBA
IGRlZiBkZWxldGVfbW9kZWxfd2l0aF9udW1lcmljX2lkX2hvbGRlcigKICAgICBpZF9ob2xkZXIu
ZGVsZXRlKCkKIAogCi1kZWYgbW9kZWxGcm9tTnVtZXJpY0lkKGlkLCBleHBlY3RlZF9raW5kKToK
K2RlZiBtb2RlbF9mcm9tX251bWVyaWNfaWQoaWQsIGV4cGVjdGVkX2tpbmQpOgogICAgIGlkX2hv
bGRlciA9IE51bWVyaWNJZEhvbGRlci5nZXRfYnlfaWQoaWQpCiAgICAgcmV0dXJuIGlkX2hvbGRl
ci5vd25lciBpZiBpZF9ob2xkZXIgYW5kIGlkX2hvbGRlci5vd25lciBhbmQgaXNpbnN0YW5jZShp
ZF9ob2xkZXIub3duZXIsIGV4cGVjdGVkX2tpbmQpIGVsc2UgTm9uZQogCkBAIC03OCwxMSArODIs
MTkgQEAgY2xhc3MgQnVpbGRlcihkYi5Nb2RlbCk6CiAgICAgbmFtZSA9IGRiLlN0cmluZ1Byb3Bl
cnR5KHJlcXVpcmVkPVRydWUpCiAgICAgcGFzc3dvcmQgPSBkYi5TdHJpbmdQcm9wZXJ0eShyZXF1
aXJlZD1UcnVlKQogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjcmVhdGUobmFtZSwgcmF3
X3Bhc3N3b3JkKToKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXIobmFtZT1uYW1lLCBwYXNzd29yZD1C
dWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQocmF3X3Bhc3N3b3JkKSwga2V5X25hbWU9bmFtZSkucHV0
KCkKKworICAgIGRlZiB1cGRhdGVfcGFzc3dvcmQoc2VsZiwgcmF3X3Bhc3N3b3JkKToKKyAgICAg
ICAgc2VsZi5wYXNzd29yZCA9IEJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZChyYXdfcGFzc3dvcmQp
CisgICAgICAgIHNlbGYucHV0KCkKKwogICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwgcmF3X3Bh
c3N3b3JkKToKICAgICAgICAgcmV0dXJuIHNlbGYucGFzc3dvcmQgPT0gaGFzaGxpYi5zaGEyNTYo
cmF3X3Bhc3N3b3JkKS5oZXhkaWdlc3QoKQogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBo
YXNoZWRfcGFzc3dvcmQocmF3X3Bhc3N3b3JkKToKKyAgICBkZWYgX2hhc2hlZF9wYXNzd29yZChy
YXdfcGFzc3dvcmQpOgogICAgICAgICByZXR1cm4gaGFzaGxpYi5zaGEyNTYocmF3X3Bhc3N3b3Jk
KS5oZXhkaWdlc3QoKQogCiAKQEAgLTEyMiw3ICsxMzQsNiBAQCBjbGFzcyBUZXN0UmVzdWx0KGRi
Lk1vZGVsKToKICAgICAgICAgcmV0dXJuIGJ1aWxkLmtleSgpLm5hbWUoKSArICc6JyArIHRlc3Rf
bmFtZQogCiAKLSMgVGVtcG9yYXJpbHkgc3RvcmUgbG9nIHJlcG9ydHMgc2VudCBieSBib3RzCiBj
bGFzcyBSZXBvcnRMb2coZGIuTW9kZWwpOgogICAgIHRpbWVzdGFtcCA9IGRiLkRhdGVUaW1lUHJv
cGVydHkocmVxdWlyZWQ9VHJ1ZSkKICAgICBoZWFkZXJzID0gZGIuVGV4dFByb3BlcnR5KCkKQEAg
LTE0MCw3ICsxNTEsNyBAQCBjbGFzcyBSZXBvcnRMb2coZGIuTW9kZWwpOgogICAgIGRlZiBnZXRf
dmFsdWUoc2VsZiwga2V5TmFtZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9wYXJzZWRfcGF5bG9h
ZCgpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNl
ZC5nZXQoa2V5TmFtZSwgJycpCisgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZWQuZ2V0KGtleU5h
bWUpCiAKICAgICBkZWYgcmVzdWx0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X3Zh
bHVlKCdyZXN1bHRzJykKQEAgLTE3Miw5ICsxODMsMTIgQEAgY2xhc3MgUmVwb3J0TG9nKGRiLk1v
ZGVsKToKICAgICBkZWYgX2ludGVnZXJfaW5fcGF5bG9hZChzZWxmLCBrZXlOYW1lKToKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGludChzZWxmLmdldF92YWx1ZShrZXlOYW1lKSkK
KyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAg
ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAorICAgICMg
RklYTUU6IFdlIGFsc28gaGF2ZSB0aW1lc3RhbXAgYXMgYSBtZW1iZXIgdmFyaWFibGUuCiAgICAg
ZGVmIHRpbWVzdGFtcChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGRh
dGV0aW1lLmZyb210aW1lc3RhbXAoc2VsZi5faW50ZWdlcl9pbl9wYXlsb2FkKCd0aW1lc3RhbXAn
KSkKQEAgLTE4NCw2ICsxOTgsMzAgQEAgY2xhc3MgUmVwb3J0TG9nKGRiLk1vZGVsKToKICAgICAg
ICAgICAgIHJldHVybiBOb25lCiAKIAotIyBVc2VkIHdoZW4gbWVtY2FjaGUgZW50cnkgaXMgZXZp
Y3RlZAogY2xhc3MgUGVyc2lzdGVudENhY2hlKGRiLk1vZGVsKToKICAgICB2YWx1ZSA9IGRiLlRl
eHRQcm9wZXJ0eShyZXF1aXJlZD1UcnVlKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBz
ZXRfY2FjaGUobmFtZSwgdmFsdWUpOgorICAgICAgICBtZW1jYWNoZS5zZXQobmFtZSwgdmFsdWUp
CisKKyAgICAgICAgZGVmIGV4ZWN1dGUoKToKKyAgICAgICAgICAgIGNhY2hlID0gUGVyc2lzdGVu
dENhY2hlLmdldF9ieV9rZXlfbmFtZShuYW1lKQorICAgICAgICAgICAgaWYgY2FjaGU6CisgICAg
ICAgICAgICAgICAgY2FjaGUudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIGNhY2hlLnB1
dCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZShr
ZXlfbmFtZT1uYW1lLCB2YWx1ZT12YWx1ZSkucHV0KCkKKworICAgICAgICBkYi5ydW5faW5fdHJh
bnNhY3Rpb24oZXhlY3V0ZSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X2NhY2hl
KG5hbWUpOgorICAgICAgICB2YWx1ZSA9IG1lbWNhY2hlLmdldChuYW1lKQorICAgICAgICBpZiB2
YWx1ZToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBjYWNoZSA9IFBlcnNpc3Rl
bnRDYWNoZS5nZXRfYnlfa2V5X25hbWUobmFtZSkKKyAgICAgICAgaWYgbm90IGNhY2hlOgorICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgbWVtY2FjaGUuc2V0KG5hbWUsIGNhY2hlLnZh
bHVlKQorICAgICAgICByZXR1cm4gY2FjaGUudmFsdWUKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1w
ZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRl
cy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDAp
CisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMg
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbW9kZWxzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBk
YXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkgaW1wb3J0
IG1lbWNhY2hlCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB0ZXN0YmVkCisKKwor
Y2xhc3MgSGVscGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgc2VsZi50ZXN0YmVkID0gdGVzdGJlZC5UZXN0YmVkKCkKKyAgICAgICAgc2Vs
Zi50ZXN0YmVkLmFjdGl2YXRlKCkKKyAgICAgICAgc2VsZi50ZXN0YmVkLmluaXRfZGF0YXN0b3Jl
X3YzX3N0dWIoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Ri
ZWQuZGVhY3RpdmF0ZSgpCisKKyAgICBkZWYgX2Fzc2VydF90aGVyZV9pc19leGFjdGx5X29uZV9p
ZF9ob2xkZXJfYW5kX21hdGNoZXMoc2VsZiwgaWQpOgorICAgICAgICBpZF9ob2xkZXJzID0gbW9k
ZWxzLk51bWVyaWNJZEhvbGRlci5hbGwoKS5mZXRjaCg1KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihpZF9ob2xkZXJzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlkX2hvbGRl
cnNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWRfaG9sZGVyc1swXS5rZXkoKS5pZCgp
LCBpZCkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNf
aWRfaG9sZGVyKHNlbGYpOgorCisgICAgICAgIGRlZiBleGVjdXRlKGlkKToKKyAgICAgICAgICAg
IHJldHVybiBtb2RlbHMuQnJhbmNoKGlkPWlkLCBuYW1lPSdzb21lIGJyYW5jaCcsIGtleV9uYW1l
PSdzb21lLWJyYW5jaCcpLnB1dCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9k
ZWxzLkJyYW5jaC5hbGwoKS5mZXRjaCg1KSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKG1vZGVscy5OdW1lcmljSWRIb2xkZXIuYWxsKCkuZmV0Y2goNSkpLCAwKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtb2RlbHMuY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJp
Y19pZF9ob2xkZXIoZXhlY3V0ZSkpCisKKyAgICAgICAgYnJhbmNoZXMgPSBtb2RlbHMuQnJhbmNo
LmFsbCgpLmZldGNoKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJyYW5jaGVzKSwg
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2hlc1swXS5uYW1lLCAnc29tZSBicmFu
Y2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJyYW5jaGVzWzBdLmtleSgpLm5hbWUoKSwg
J3NvbWUtYnJhbmNoJykKKworICAgICAgICBzZWxmLl9hc3NlcnRfdGhlcmVfaXNfZXhhY3RseV9v
bmVfaWRfaG9sZGVyX2FuZF9tYXRjaGVzKGJyYW5jaGVzWzBdLmlkKQorCisgICAgZGVmIHRlc3Rf
ZmFpbGluZ19pbl9jcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcihz
ZWxmKToKKworICAgICAgICBkZWYgZXhlY3V0ZShpZCk6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vZGVscy5CcmFuY2guYWxsKCkuZmV0
Y2goNSkpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbHMuTnVtZXJpY0lk
SG9sZGVyLmFsbCgpLmZldGNoKDUpKSwgMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1v
ZGVscy5jcmVhdGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcihleGVjdXRl
KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbHMuQnJhbmNoLmFsbCgpLmZl
dGNoKDUpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9kZWxzLk51bWVyaWNJ
ZEhvbGRlci5hbGwoKS5mZXRjaCg1KSksIDApCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX2luX2Ny
ZWF0ZV9pbl90cmFuc2FjdGlvbl93aXRoX251bWVyaWNfaWRfaG9sZGVyKHNlbGYpOgorCisgICAg
ICAgIGRlZiBleGVjdXRlKGlkKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgorICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbHMu
QnJhbmNoLmFsbCgpLmZldGNoKDUpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
bW9kZWxzLk51bWVyaWNJZEhvbGRlci5hbGwoKS5mZXRjaCg1KSksIDApCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2RlbHMuY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dp
dGhfbnVtZXJpY19pZF9ob2xkZXIsIChleGVjdXRlKSkKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihtb2RlbHMuQnJhbmNoLmFsbCgpLmZldGNoKDUpKSwgMCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4obW9kZWxzLk51bWVyaWNJZEhvbGRlci5hbGwoKS5mZXRjaCg1KSksIDAp
CisKKyAgICBkZWYgdGVzdF9kZWxldGVfbW9kZWxfd2l0aF9udW1lcmljX2lkX2hvbGRlcihzZWxm
KToKKworICAgICAgICBkZWYgZXhlY3V0ZShpZCk6CisgICAgICAgICAgICByZXR1cm4gbW9kZWxz
LkJyYW5jaChpZD1pZCwgbmFtZT0nc29tZSBicmFuY2gnLCBrZXlfbmFtZT0nc29tZS1icmFuY2gn
KS5wdXQoKQorCisgICAgICAgIGJyYW5jaCA9IG1vZGVscy5CcmFuY2guZ2V0KG1vZGVscy5jcmVh
dGVfaW5fdHJhbnNhY3Rpb25fd2l0aF9udW1lcmljX2lkX2hvbGRlcihleGVjdXRlKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9kZWxzLk51bWVyaWNJZEhvbGRlci5hbGwoKS5mZXRj
aCg1KSksIDEpCisKKyAgICAgICAgbW9kZWxzLmRlbGV0ZV9tb2RlbF93aXRoX251bWVyaWNfaWRf
aG9sZGVyKGJyYW5jaCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbHMuQnJh
bmNoLmFsbCgpLmZldGNoKDUpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9k
ZWxzLk51bWVyaWNJZEhvbGRlci5hbGwoKS5mZXRjaCg1KSksIDApCisKKyAgICBkZWYgdGVzdF9t
b2RlbF9mcm9tX251bWVyaWNfaWQoc2VsZik6CisKKyAgICAgICAgZGVmIGV4ZWN1dGUoaWQpOgor
ICAgICAgICAgICAgcmV0dXJuIG1vZGVscy5CcmFuY2goaWQ9aWQsIG5hbWU9J3NvbWUgYnJhbmNo
Jywga2V5X25hbWU9J3NvbWUtYnJhbmNoJykucHV0KCkKKworICAgICAgICBicmFuY2ggPSBtb2Rl
bHMuQnJhbmNoLmdldChtb2RlbHMuY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19p
ZF9ob2xkZXIoZXhlY3V0ZSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbHMubW9k
ZWxfZnJvbV9udW1lcmljX2lkKGJyYW5jaC5pZCwgbW9kZWxzLkJyYW5jaCkua2V5KCksIGJyYW5j
aC5rZXkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbHMubW9kZWxfZnJvbV9udW1l
cmljX2lkKGJyYW5jaC5pZCArIDEsIG1vZGVscy5CcmFuY2gpLCBOb25lKQorICAgICAgICBtb2Rl
bHMuZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoYnJhbmNoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vZGVscy5tb2RlbF9mcm9tX251bWVyaWNfaWQoYnJhbmNoLmlkLCBt
b2RlbHMuQnJhbmNoKSwgTm9uZSkKKworCitjbGFzcyBCdWlsZGVyVGVzdHModW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0YmVkID0gdGVz
dGJlZC5UZXN0YmVkKCkKKyAgICAgICAgc2VsZi50ZXN0YmVkLmFjdGl2YXRlKCkKKyAgICAgICAg
c2VsZi50ZXN0YmVkLmluaXRfZGF0YXN0b3JlX3YzX3N0dWIoKQorCisgICAgZGVmIHRlYXJEb3du
KHNlbGYpOgorICAgICAgICBzZWxmLnRlc3RiZWQuZGVhY3RpdmF0ZSgpCisKKyAgICBkZWYgdGVz
dF9jcmVhdGUoc2VsZik6CisgICAgICAgIGJ1aWxkZXJfa2V5ID0gbW9kZWxzLkJ1aWxkZXIuY3Jl
YXRlKCdzb21lIGJ1aWxkZXInLCAnc29tZSBwYXNzd29yZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShidWlsZGVyX2tleSkKKyAgICAgICAgYnVpbGRlciA9IG1vZGVscy5CdWlsZGVyLmdldChi
dWlsZGVyX2tleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLmtleSgpLm5hbWUo
KSwgJ3NvbWUgYnVpbGRlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5uYW1l
LCAnc29tZSBidWlsZGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhc3N3
b3JkLCBtb2RlbHMuQnVpbGRlci5faGFzaGVkX3Bhc3N3b3JkKCdzb21lIHBhc3N3b3JkJykpCisK
KyAgICBkZWYgdGVzdF91cGRhdGVfcGFzc3dvcmQoc2VsZik6CisgICAgICAgIGJ1aWxkZXIgPSBt
b2RlbHMuQnVpbGRlci5nZXQobW9kZWxzLkJ1aWxkZXIuY3JlYXRlKCdzb21lIGJ1aWxkZXInLCAn
c29tZSBwYXNzd29yZCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFzc3dv
cmQsIG1vZGVscy5CdWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSkKKyAg
ICAgICAgYnVpbGRlci51cGRhdGVfcGFzc3dvcmQoJ290aGVyIHBhc3N3b3JkJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhc3N3b3JkLCBtb2RlbHMuQnVpbGRlci5faGFzaGVk
X3Bhc3N3b3JkKCdvdGhlciBwYXNzd29yZCcpKQorCisgICAgICAgICMgTWFrZSBzdXJlIGl0J3Mg
c2F2ZWQKKyAgICAgICAgYnVpbGRlciA9IG1vZGVscy5CdWlsZGVyLmdldChidWlsZGVyLmtleSgp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFzc3dvcmQsIG1vZGVscy5CdWls
ZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ290aGVyIHBhc3N3b3JkJykpCisKKyAgICBkZWYgdGVzdF9o
YXNoZWRfcGFzc3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobW9kZWxz
LkJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnc29tZSBwYXNzd29yZCcpLCAnc29tZSBwYXNzd29y
ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3NvbWUgcGFzc3dvcmQnIGluIG1vZGVscy5C
dWlsZGVyLl9oYXNoZWRfcGFzc3dvcmQoJ3NvbWUgcGFzc3dvcmQnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4obW9kZWxzLkJ1aWxkZXIuX2hhc2hlZF9wYXNzd29yZCgnc29tZSBwYXNz
d29yZCcpKSwgNjQpCisKKyAgICBkZWYgdGVzdF9hdXRoZW50aWNhdGUoc2VsZik6CisgICAgICAg
IGJ1aWxkZXIgPSBtb2RlbHMuQnVpbGRlci5nZXQobW9kZWxzLkJ1aWxkZXIuY3JlYXRlKCdzb21l
IGJ1aWxkZXInLCAnc29tZSBwYXNzd29yZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVp
bGRlci5hdXRoZW50aWNhdGUoJ3NvbWUgcGFzc3dvcmQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLmF1dGhlbnRpY2F0ZSgnYmFkIHBhc3N3b3JkJykpCisKKworY2xhc3MgUmVw
b3J0TG9nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg
IHNlbGYudGVzdGJlZCA9IHRlc3RiZWQuVGVzdGJlZCgpCisgICAgICAgIHNlbGYudGVzdGJlZC5h
Y3RpdmF0ZSgpCisgICAgICAgIHNlbGYudGVzdGJlZC5pbml0X2RhdGFzdG9yZV92M19zdHViKCkK
KworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0YmVkLmRlYWN0aXZh
dGUoKQorCisgICAgZGVmIF9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZChzZWxmLCBwYXlsb2FkKToK
KyAgICAgICAgcmV0dXJuIG1vZGVscy5SZXBvcnRMb2codGltZXN0YW1wPWRhdGV0aW1lLm5vdygp
LCBoZWFkZXJzPSdzb21lIGhlYWRlcnMnLCBwYXlsb2FkPXBheWxvYWQpCisKKyAgICBkZWYgdGVz
dF9wYXJzZWRfcGF5bG9hZChzZWxmKToKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193
aXRoX3BheWxvYWQoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ19wYXJzZWQnIGluIGxv
Zy5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cuX3BhcnNlZF9wYXlsb2Fk
KCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5fcGFyc2VkLCBGYWxzZSkK
KworICAgICAgICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgneyJrZXkiOiAi
dmFsdWUiLCAiYW5vdGhlciBrZXkiOiAxfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9n
Ll9wYXJzZWRfcGF5bG9hZCgpLCB7ImtleSI6ICJ2YWx1ZSIsICJhbm90aGVyIGtleSI6IDF9KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5fcGFyc2VkLCB7ImtleSI6ICJ2YWx1ZSIsICJh
bm90aGVyIGtleSI6IDF9KQorCisgICAgZGVmIHRlc3RfZ2V0X3ZhbHVlKHNlbGYpOgorICAgICAg
ICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgneyJzdHJpbmciOiAidmFsdWUi
LCAiaW50ZWdlciI6IDEsICJmbG9hdCI6IDEuMX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxvZy5nZXRfdmFsdWUoJ3N0cmluZycpLCAndmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxvZy5nZXRfdmFsdWUoJ2ludGVnZXInKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsb2cuZ2V0X3ZhbHVlKCdmbG9hdCcpLCAxLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bG9nLmdldF92YWx1ZSgnYmFkJyksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZXN1bHRzKHNlbGYp
OgorICAgICAgICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgneyJyZXN1bHRz
IjogMTIzfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLnJlc3VsdHMoKSwgMTIzKQor
CisgICAgICAgIGxvZyA9IHNlbGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKCd7ImtleSI6ICJ2
YWx1ZSJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cucmVzdWx0cygpLCBOb25lKQor
CisgICAgZGVmIHRlc3RfYnVpbGRlcihzZWxmKToKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRl
X2xvZ193aXRoX3BheWxvYWQoJ3sia2V5IjogInZhbHVlIn0nKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxvZy5idWlsZGVyKCksIE5vbmUpCisKKyAgICAgICAgYnVpbGRlcl9uYW1lID0gIkNo
cm9taXVtIE1hYyBSZWxlYXNlIChQZXJmKSIKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xv
Z193aXRoX3BheWxvYWQoJ3siYnVpbGRlci1uYW1lIjogIiVzIn0nICUgYnVpbGRlcl9uYW1lKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5idWlsZGVyKCksIE5vbmUpCisKKyAgICAgICAg
YnVpbGRlcl9rZXkgPSBtb2RlbHMuQnVpbGRlci5jcmVhdGUoYnVpbGRlcl9uYW1lLCAnc29tZSBw
YXNzd29yZCcpCisgICAgICAgIGxvZyA9IHNlbGYuX2NyZWF0ZV9sb2dfd2l0aF9wYXlsb2FkKCd7
ImJ1aWxkZXItbmFtZSI6ICIlcyJ9JyAlIGJ1aWxkZXJfbmFtZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsb2cuYnVpbGRlcigpLmtleSgpLCBidWlsZGVyX2tleSkKKworICAgICMgRklYTUUg
dGVzdF9icmFuY2ggYW5kIHRlc3RfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X2J1aWxkX251bWJl
cihzZWxmKToKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoJ3si
YnVpbGQtbnVtYmVyIjogMTIzfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLmJ1aWxk
X251bWJlcigpLCAxMjMpCisKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193aXRoX3Bh
eWxvYWQoJ3sia2V5IjogInZhbHVlIn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5i
dWlsZF9udW1iZXIoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3dlYmtpdF9yZXZpc2lvbihzZWxm
KToKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoJ3sia2V5Ijog
InZhbHVlIn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy53ZWJraXRfcmV2aXNpb24o
KSwgTm9uZSkKKworICAgICAgICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZCgn
eyJ3ZWJraXQtcmV2aXNpb24iOiAxMjN9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cu
d2Via2l0X3JldmlzaW9uKCksIDEyMykKKworICAgIGRlZiBjaHJvbWl1bV9yZXZpc2lvbihzZWxm
KToKKyAgICAgICAgbG9nID0gc2VsZi5fY3JlYXRlX2xvZ193aXRoX3BheWxvYWQoJ3siY2hyb21p
dW0tcmV2aXNpb24iOiAxMjN9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cud2Via2l0
X3JldmlzaW9uKCksIDEyMykKKworICAgICAgICBsb2cgPSBzZWxmLl9jcmVhdGVfbG9nX3dpdGhf
cGF5bG9hZCgneyJrZXkiOiAidmFsdWUifScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9n
LndlYmtpdF9yZXZpc2lvbigpLCBOb25lKQorCisKK2NsYXNzIFBlcnNpc3RlbnRDYWNoZVRlc3Rz
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYu
dGVzdGJlZCA9IHRlc3RiZWQuVGVzdGJlZCgpCisgICAgICAgIHNlbGYudGVzdGJlZC5hY3RpdmF0
ZSgpCisgICAgICAgIHNlbGYudGVzdGJlZC5pbml0X2RhdGFzdG9yZV92M19zdHViKCkKKyAgICAg
ICAgc2VsZi50ZXN0YmVkLmluaXRfbWVtY2FjaGVfc3R1YigpCisKKyAgICBkZWYgdGVhckRvd24o
c2VsZik6CisgICAgICAgIHNlbGYudGVzdGJlZC5kZWFjdGl2YXRlKCkKKworICAgIGRlZiBfYXNz
ZXJ0X3BlcnNpc3RlbnRfY2FjaGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuZ2V0X2J5X2tleV9uYW1lKG5hbWUpLnZh
bHVlLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1jYWNoZS5nZXQobmFtZSks
IHZhbHVlKQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihtb2RlbHMuUGVyc2lzdGVudENhY2hlLmFsbCgpLmZldGNoKDUpKSwgMCkKKworICAg
ICAgICBtb2RlbHMuUGVyc2lzdGVudENhY2hlLnNldF9jYWNoZSgnc29tZS1jYWNoZScsICdzb21l
IGRhdGEnKQorICAgICAgICBzZWxmLl9hc3NlcnRfcGVyc2lzdGVudF9jYWNoZSgnc29tZS1jYWNo
ZScsICdzb21lIGRhdGEnKQorCisgICAgICAgIG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuc2V0X2Nh
Y2hlKCdzb21lLWNhY2hlJywgJ3NvbWUgb3RoZXIgZGF0YScpCisKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3BlcnNpc3RlbnRfY2FjaGUoJ3NvbWUtY2FjaGUnLCAnc29tZSBvdGhlciBkYXRhJykKKwor
ICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1jYWNo
ZS5nZXQoJ3NvbWUtY2FjaGUnKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2Rl
bHMuUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZSgnc29tZS1jYWNoZScpLCBOb25lKQorCisgICAg
ICAgIG1vZGVscy5QZXJzaXN0ZW50Q2FjaGUuc2V0X2NhY2hlKCdzb21lLWNhY2hlJywgJ3NvbWUg
ZGF0YScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1jYWNoZS5nZXQoJ3NvbWUtY2Fj
aGUnKSwgJ3NvbWUgZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxzLlBlcnNp
c3RlbnRDYWNoZS5nZXRfY2FjaGUoJ3NvbWUtY2FjaGUnKSwgJ3NvbWUgZGF0YScpCisKKyAgICAg
ICAgbWVtY2FjaGUuZGVsZXRlKCdzb21lLWNhY2hlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtZW1jYWNoZS5nZXQoJ3NvbWUtY2FjaGUnKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChtb2RlbHMuUGVyc2lzdGVudENhY2hlLmdldF9jYWNoZSgnc29tZS1jYWNoZScpLCAnc29t
ZSBkYXRhJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1h
aW4oKQpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vcnVuc19oYW5kbGVy
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL3J1bnNf
aGFuZGxlci5weQkocmV2aXNpb24gMTA4MDA4KQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBw
c3BvdC5jb20vcnVuc19oYW5kbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBA
IGZyb20gbW9kZWxzIGltcG9ydCBOdW1lcmljSWRIb2xkZXIKIGZyb20gbW9kZWxzIGltcG9ydCBQ
bGF0Zm9ybQogZnJvbSBtb2RlbHMgaW1wb3J0IFRlc3QKIGZyb20gbW9kZWxzIGltcG9ydCBUZXN0
UmVzdWx0Ci1mcm9tIG1vZGVscyBpbXBvcnQgbW9kZWxGcm9tTnVtZXJpY0lkCitmcm9tIG1vZGVs
cyBpbXBvcnQgbW9kZWxfZnJvbV9udW1lcmljX2lkCiAKIAogY2xhc3MgUnVuc0hhbmRsZXIod2Vi
YXBwMi5SZXF1ZXN0SGFuZGxlcik6CkBAIC02MiwxMCArNjIsMTAgQEAgY2xhc3MgUnVuc0hhbmRs
ZXIod2ViYXBwMi5SZXF1ZXN0SGFuZGxlcgogICAgICAgICAjIGRheXMgPSBzZWxmLnJlcXVlc3Qu
Z2V0KCdkYXlzJywgMzY1KQogCiAgICAgICAgIGJ1aWxkcyA9IEJ1aWxkLmFsbCgpCi0gICAgICAg
IGJ1aWxkcy5maWx0ZXIoJ2JyYW5jaCA9JywgbW9kZWxGcm9tTnVtZXJpY0lkKGJyYW5jaF9pZCwg
QnJhbmNoKSkKLSAgICAgICAgYnVpbGRzLmZpbHRlcigncGxhdGZvcm0gPScsIG1vZGVsRnJvbU51
bWVyaWNJZChwbGF0Zm9ybV9pZCwgUGxhdGZvcm0pKQorICAgICAgICBidWlsZHMuZmlsdGVyKCdi
cmFuY2ggPScsIG1vZGVsX2Zyb21fbnVtZXJpY19pZChicmFuY2hfaWQsIEJyYW5jaCkpCisgICAg
ICAgIGJ1aWxkcy5maWx0ZXIoJ3BsYXRmb3JtID0nLCBtb2RlbF9mcm9tX251bWVyaWNfaWQocGxh
dGZvcm1faWQsIFBsYXRmb3JtKSkKIAotICAgICAgICB0ZXN0ID0gbW9kZWxGcm9tTnVtZXJpY0lk
KHRlc3RfaWQsIFRlc3QpCisgICAgICAgIHRlc3QgPSBtb2RlbF9mcm9tX251bWVyaWNfaWQodGVz
dF9pZCwgVGVzdCkKICAgICAgICAgdGVzdF9uYW1lID0gdGVzdC5uYW1lIGlmIHRlc3QgZWxzZSBO
b25lCiAgICAgICAgIHRlc3RfcnVucyA9IFtdCiAgICAgICAgIGF2ZXJhZ2VzID0ge30K
</data>

          </attachment>
      

    </bug>

</bugzilla>