<?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>79602</bug_id>
          
          <creation_ts>2012-02-26 01:22:49 -0800</creation_ts>
          <short_desc>Extract the logic to merge tests from MergeTestsHandler and add unit tests</short_desc>
          <delta_ts>2012-02-27 18:14:43 -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>
          
          
          <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>565135</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-26 01:22:49 -0800</bug_when>
    <thetext>The logic to merge tests in MergeTestsHandler is mission critical, and should be thoroughly unit-tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565136</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-26 01:25:43 -0800</bug_when>
    <thetext>Also, we can&apos;t be running this logic in frontend since merging a test with lots of TestResult would hit the process deadline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565138</commentid>
    <comment_count>2</comment_count>
      <attachid>128910</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-26 01:35:11 -0800</bug_when>
    <thetext>Created attachment 128910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565139</commentid>
    <comment_count>3</comment_count>
      <attachid>128911</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-26 01:38:53 -0800</bug_when>
    <thetext>Created attachment 128911
Removed unnecessary handler rules in app.yaml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566224</commentid>
    <comment_count>4</comment_count>
      <attachid>128911</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-27 18:14:39 -0800</bug_when>
    <thetext>Comment on attachment 128911
Removed unnecessary handler rules in app.yaml

Clearing flags on attachment: 128911

Committed r109057: &lt;http://trac.webkit.org/changeset/109057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566225</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-27 18:14:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128910</attachid>
            <date>2012-02-26 01:35:11 -0800</date>
            <delta_ts>2012-02-26 01:38:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79602-20120226013510.patch</filename>
            <type>text/plain</type>
            <size>23404</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkz
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAy
LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4dHJhY3Qg
dGhlIGxvZ2ljIHRvIG1lcmdlIHRlc3RzIGZyb20gTWVyZ2VUZXN0c0hhbmRsZXIgYW5kIGFkZCB1
bml0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEV4dHJhY3RlZCBUZXN0Lm1lcmdlIGFuZCBUZXN0UmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rl
c3RfbmFtZSBvdXQgb2YgTWVyZ2VUZXN0c0hhbmRsZXIsCisgICAgICAgIGFuZCBtb3ZlZCBNZXJn
ZVRlc3RzSGFuZGxlciBpbnRvIGFkbWluX2hhbmRsZXJzLnB5IHdoZXJlIGl0IGJlbG9uZ3MuCisK
KyAgICAgICAgQWRkZWQgbmV3IGJhY2tlbmQgIm1vZGVsLW1hbmlwdWxhdG9yIiB0byBleGVjdXRl
IHRhc2tzIHRvIG1lcmdlIHRlc3RzLgorCisgICAgICAgIEFsc28gcmV2aXZlIHRoZSBpbmFkdmVy
dGVudGx5IHJlbW92ZWQgbWFudWFsIHN1Ym1pc3Npb24gZm9ybSBvbiB0aGUgYWRtaW4gcGFnZS4K
KworICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2FkbWluX2hhbmRs
ZXJzLnB5OgorICAgICAgICAoQWRtaW5EYXNoYm9hcmRIYW5kbGVyLmdldF90ZXN0cyk6CisgICAg
ICAgIChNZXJnZVRlc3RzSGFuZGxlcik6CisgICAgICAgIChNZXJnZVRlc3RzSGFuZGxlci5wb3N0
KToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9hcHAueWFtbDoK
KyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9iYWNrZW5kcy55YW1s
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9jc3Mv
YWRtaW4uY3NzOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pz
L2FkbWluLmpzOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21h
aW4ucHk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbWVyZ2Vf
dGVzdHNfaGFuZGxlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVy
Zi5hcHBzcG90LmNvbS9tb2RlbHMucHk6CisgICAgICAgIChUZXN0KToKKyAgICAgICAgKFRlc3Qu
bWVyZ2UpOgorICAgICAgICAoVGVzdFJlc3VsdC5yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWUp
OgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0
dGVzdC5weToKKyAgICAgICAgKERhdGFTdG9yZVRlc3RzQmFzZS5hc3NlcnRPbmx5SW5zdGFuY2Up
OgorICAgICAgICAoRGF0YVN0b3JlVGVzdHNCYXNlKToKKyAgICAgICAgKERhdGFTdG9yZVRlc3Rz
QmFzZS5hc3NlcnRPbmx5SW5zdGFuY2VzKToKKyAgICAgICAgKERhdGFTdG9yZVRlc3RzQmFzZS5h
c3NlcnRFcXVhbFVub3JkZXJlZE1vZGVsTGlzdCk6CisgICAgICAgIChEYXRhU3RvcmVUZXN0c0Jh
c2UuYXNzZXJ0RXF1YWxVbm9yZGVyZWRMaXN0KToKKyAgICAgICAgKF9jcmVhdGVfYnVpbGQpOgor
ICAgICAgICAoVGVzdE1vZGVsVGVzdHMudGVzdF9tZXJnZSk6CisgICAgICAgIChUZXN0UmVzdWx0
VGVzdHMpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3RzLnRlc3RfZ2V0X29yX2luc2VydF92YWx1
ZSk6CisgICAgICAgIChUZXN0UmVzdWx0VGVzdHMudGVzdF9nZXRfb3JfaW5zZXJ0X3N0YXRfdmFs
dWUpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3RzLnRlc3RfcmVwbGFjZV90b19jaGFuZ2VfdGVz
dF9uYW1lKToKKyAgICAgICAgKFRlc3RSZXN1bHRUZXN0cy50ZXN0X3JlcGxhY2VfdG9fY2hhbmdl
X3Rlc3RfbmFtZV93aXRoX3N0YXRfdmFsdWUpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3RzLnRl
c3RfcmVwbGFjZV90b19jaGFuZ2VfdGVzdF9uYW1lX292ZXJyaWRlc19jb25mbGljdGluZ19yZXN1
bHQpOgorCiAyMDEyLTAyLTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFBlcmYtby1tYXRpYyBidWlsZCBmaXggYWZ0ZXIgcjEwODkxNy4gSSBuZWVkIGEgc2Ny
b2xsYmFyIGluIG9yZGVyIHNlZSBhbGwgdGhlIHRlc3RzLgpJbmRleDogV2Vic2l0ZXMvd2Via2l0
LXBlcmYuYXBwc3BvdC5jb20vYWRtaW5faGFuZGxlcnMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vYWRtaW5faGFuZGxlcnMucHkJKHJldmlzaW9uIDEw
ODkzMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2FkbWluX2hhbmRsZXJz
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTQgQEAKIGltcG9ydCB3ZWJhcHAyCiBp
bXBvcnQganNvbgogCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB0YXNrcXVldWUK
IGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkgaW1wb3J0IHVzZXJzCiBmcm9tIGdvb2dsZS5hcHBl
bmdpbmUuZXh0LmRiIGltcG9ydCBHcWxRdWVyeQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53
ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCiAKK2Zyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVf
cnVuc191cGRhdGUKK2Zyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVfZGFzaGJvYXJkX3Vw
ZGF0ZQorZnJvbSBjb250cm9sbGVyIGltcG9ydCBzY2hlZHVsZV9tYW5pZmVzdF91cGRhdGUKIGZy
b20gbW9kZWxzIGltcG9ydCBCcmFuY2gKIGZyb20gbW9kZWxzIGltcG9ydCBCdWlsZGVyCiBmcm9t
IG1vZGVscyBpbXBvcnQgUGxhdGZvcm0KQEAgLTgxLDMgKzg1LDQyIEBAIGNsYXNzIEFkbWluRGFz
aGJvYXJkSGFuZGxlcih3ZWJhcHAyLlJlcXUKICAgICBkZWYgZ2V0X3Rlc3RzKHNlbGYpOgogICAg
ICAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9u
L2pzb24nCiAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKGpzb24uZHVtcHMoW3Rlc3Qu
bmFtZSBmb3IgdGVzdCBpbiBUZXN0LmFsbCgpLmZldGNoKGxpbWl0PTIwMCldKSkKKworCitjbGFz
cyBNZXJnZVRlc3RzSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgcG9z
dChzZWxmLCB0YXNrKToKKyAgICAgICAgc2VsZi5yZXNwb25zZS5oZWFkZXJzWydDb250ZW50LVR5
cGUnXSA9ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JworCisgICAgICAgIGlmIHRhc2sgIT0g
J3J1bic6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGpzb24u
bG9hZHMoc2VsZi5yZXF1ZXN0LmJvZHkpCisgICAgICAgICAgICAgICAgbWVyZ2UgPSBwYXlsb2Fk
LmdldCgnbWVyZ2UnLCAnJykKKyAgICAgICAgICAgICAgICBpbnRvID0gcGF5bG9hZC5nZXQoJ2lu
dG8nLCAnJykKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBzZWxmLnJlc3Bv
bnNlLm91dC53cml0ZSgiRmFpbGVkIHRvIHBhcnNlIHRoZSBwYXlsb2FkOiAlcyIgJSBzZWxmLnJl
cXVlc3QuYm9keSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaWYgbWVy
Z2UgPT0gaW50byBvciBub3QgVGVzdC5nZXRfYnlfa2V5X25hbWUobWVyZ2UpIG9yIG5vdCBUZXN0
LmdldF9ieV9rZXlfbmFtZShpbnRvKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZSgnSW52YWxpZCB0ZXN0IG5hbWVzJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICAgICAgdGFza3F1ZXVlLmFkZCh1cmw9Jy9hZG1pbi9tZXJnZS10ZXN0cy9ydW4nLCBw
YXJhbXM9eydtZXJnZSc6IG1lcmdlLCAnaW50byc6IGludG99LCB0YXJnZXQ9J21vZGVsLW1hbmlw
dWxhdG9yJykKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCdPSycpCisgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICBtZXJnZSA9IFRlc3QuZ2V0X2J5X2tleV9uYW1lKHNl
bGYucmVxdWVzdC5nZXQoJ21lcmdlJykpCisgICAgICAgIGludG8gPSBUZXN0LmdldF9ieV9rZXlf
bmFtZShzZWxmLnJlcXVlc3QuZ2V0KCdpbnRvJykpCisKKyAgICAgICAgYnJhbmNoZXNfYW5kX3Bs
YXRmb3Jtc190b191cGRhdGUgPSBpbnRvLm1lcmdlKG1lcmdlKQorICAgICAgICBpZiBicmFuY2hl
c19hbmRfcGxhdGZvcm1zX3RvX3VwZGF0ZSA9PSBOb25lOgorICAgICAgICAgICAgIyBGSVhNRTog
VGhpcyBtZXNzYWdlIGlzIGludmlzaWJsZS4gTmVlZCB0byBzdG9yZSB0aGlzIHNvbWV3aGVyZSBh
bmQgbGV0IHRoZSBhZG1pbiBwYWdlIHB1bGwgaXQuCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNl
Lm91dC53cml0ZSgnQ2Fubm90IG1lcmdlICVzIGludG8gJXMuIFRoZXJlIGFyZSBjb25mbGljdGlu
ZyByZXN1bHRzLicgJSAobWVyZ2UubmFtZSwgaW50by5uYW1lKSkKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGZvciBicmFuY2hfaWQsIHBsYXRmb3JtX2lkIGluIGJyYW5jaGVzX2FuZF9w
bGF0Zm9ybXNfdG9fdXBkYXRlOgorICAgICAgICAgICAgc2NoZWR1bGVfcnVuc191cGRhdGUoaW50
by5pZCwgYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCkKKworICAgICAgICBzY2hlZHVsZV9kYXNoYm9h
cmRfdXBkYXRlKCkKKyAgICAgICAgc2NoZWR1bGVfbWFuaWZlc3RfdXBkYXRlKCkKKworICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgnT0snKQpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBl
cmYuYXBwc3BvdC5jb20vYXBwLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBl
cmYuYXBwc3BvdC5jb20vYXBwLnlhbWwJKHJldmlzaW9uIDEwODkzMSkKKysrIFdlYnNpdGVzL3dl
YmtpdC1wZXJmLmFwcHNwb3QuY29tL2FwcC55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogYXBwbGljYXRpb246IHdlYmtpdC1wZXJmCi12ZXJzaW9uOiAxNAordmVyc2lvbjogMTUK
IHJ1bnRpbWU6IHB5dGhvbjI3CiBhcGlfdmVyc2lvbjogMQogdGhyZWFkc2FmZTogZmFsc2UKSW5k
ZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2JhY2tlbmRzLnlhbWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vYmFja2VuZHMueWFtbAko
cmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2JhY2tlbmRz
LnlhbWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorYmFja2VuZHM6CistIG1vZGVsLW1h
bmlwdWxhdG9yCisgIG9wdGlvbnM6IGR5bmFtaWMKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJm
LmFwcHNwb3QuY29tL21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYu
YXBwc3BvdC5jb20vbWFpbi5weQkocmV2aXNpb24gMTA4OTMxKQorKysgV2Vic2l0ZXMvd2Via2l0
LXBlcmYuYXBwc3BvdC5jb20vbWFpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOSBA
QCBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgCiAKIGltcG9ydCBqc29u
CiAKLWZyb20gYWRtaW5faGFuZGxlcnMgaW1wb3J0IElzQWRtaW5IYW5kbGVyCiBmcm9tIGFkbWlu
X2hhbmRsZXJzIGltcG9ydCBBZG1pbkRhc2hib2FyZEhhbmRsZXIKK2Zyb20gYWRtaW5faGFuZGxl
cnMgaW1wb3J0IElzQWRtaW5IYW5kbGVyCitmcm9tIGFkbWluX2hhbmRsZXJzIGltcG9ydCBNZXJn
ZVRlc3RzSGFuZGxlcgogZnJvbSBjb250cm9sbGVyIGltcG9ydCBDYWNoZWREYXNoYm9hcmRIYW5k
bGVyCiBmcm9tIGNvbnRyb2xsZXIgaW1wb3J0IENhY2hlZE1hbmlmZXN0SGFuZGxlcgogZnJvbSBj
b250cm9sbGVyIGltcG9ydCBDYWNoZWRSdW5zSGFuZGxlcgpAQCAtMzMsMTEgKzM0LDEwIEBAIGZy
b20gcmVwb3J0X2hhbmRsZXIgaW1wb3J0IFJlcG9ydEhhbmRsZXIKIGZyb20gcmVwb3J0X2hhbmRs
ZXIgaW1wb3J0IEFkbWluUmVwb3J0SGFuZGxlcgogZnJvbSByZXBvcnRfcHJvY2Vzc19oYW5kbGVy
IGltcG9ydCBSZXBvcnRQcm9jZXNzSGFuZGxlcgogZnJvbSByZXBvcnRfbG9nc19oYW5kbGVyIGlt
cG9ydCBSZXBvcnRMb2dzSGFuZGxlcgotZnJvbSBtZXJnZV90ZXN0c19oYW5kbGVyIGltcG9ydCBN
ZXJnZVRlc3RzSGFuZGxlcgogCiByb3V0ZXMgPSBbCiAgICAgKCcvYWRtaW4vcmVwb3J0Lz8nLCBB
ZG1pblJlcG9ydEhhbmRsZXIpLAotICAgICgnL2FkbWluL21lcmdlLXRlc3RzLz8nLCBNZXJnZVRl
c3RzSGFuZGxlciksCisgICAgKHInL2FkbWluL21lcmdlLXRlc3RzKD86LyguKikpPycsIE1lcmdl
VGVzdHNIYW5kbGVyKSwKICAgICAoJy9hZG1pbi9yZXBvcnQtbG9ncy8/JywgUmVwb3J0TG9nc0hh
bmRsZXIpLAogICAgICgnL2FkbWluL2NyZWF0ZS8oLiopJywgQ3JlYXRlSGFuZGxlciksCiAgICAg
KHInL2FkbWluLyhbQS1aYS16XC1dKiknLCBBZG1pbkRhc2hib2FyZEhhbmRsZXIpLApJbmRleDog
V2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbWVyZ2VfdGVzdHNfaGFuZGxlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tZXJnZV90ZXN0
c19oYW5kbGVyLnB5CShyZXZpc2lvbiAxMDg5MzEpCisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5h
cHBzcG90LmNvbS9tZXJnZV90ZXN0c19oYW5kbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDc4
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9y
dCB3ZWJhcHAyCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxh
dGUKLQotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotCi1mcm9tIGNvbnRyb2xsZXIgaW1wb3J0IHNj
aGVkdWxlX3J1bnNfdXBkYXRlCi1mcm9tIGNvbnRyb2xsZXIgaW1wb3J0IHNjaGVkdWxlX2Rhc2hi
b2FyZF91cGRhdGUKLWZyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVfbWFuaWZlc3RfdXBk
YXRlCi1mcm9tIG1vZGVscyBpbXBvcnQgVGVzdAotZnJvbSBtb2RlbHMgaW1wb3J0IFRlc3RSZXN1
bHQKLWZyb20gbW9kZWxzIGltcG9ydCBkZWxldGVfbW9kZWxfd2l0aF9udW1lcmljX2lkX2hvbGRl
cgotCi0KLWNsYXNzIE1lcmdlVGVzdHNIYW5kbGVyKHdlYmFwcDIuUmVxdWVzdEhhbmRsZXIpOgot
ICAgIGRlZiBwb3N0KHNlbGYpOgotICAgICAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbJ0NvbnRl
bnQtVHlwZSddID0gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnOwotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHBheWxvYWQgPSBqc29uLmxvYWRzKHNlbGYucmVxdWVzdC5ib2R5KQotICAg
ICAgICAgICAgbWVyZ2UgPSBwYXlsb2FkLmdldCgnbWVyZ2UnLCAnJykKLSAgICAgICAgICAgIGlu
dG8gPSBwYXlsb2FkLmdldCgnaW50bycsICcnKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiRmFpbGVkIHRvIHBhcnNlIHRoZSBwYXlsb2FkOiAl
cyIgJSBzZWxmLnJlcXVlc3QuYm9keSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG1l
cmdlID0gVGVzdC5nZXRfYnlfa2V5X25hbWUobWVyZ2UpCi0gICAgICAgIGludG8gPSBUZXN0Lmdl
dF9ieV9rZXlfbmFtZShpbnRvKQotICAgICAgICBpZiBub3QgbWVyZ2Ugb3Igbm90IGludG86Ci0g
ICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgnSW52YWxpZCB0ZXN0IG5hbWVzJykK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG1lcmdlZF9yZXN1bHRzID0gVGVzdFJlc3Vs
dC5hbGwoKQotICAgICAgICBtZXJnZWRfcmVzdWx0cy5maWx0ZXIoJ25hbWUgPScsIG1lcmdlLm5h
bWUpCi0gICAgICAgIGJyYW5jaGVzX2FuZF9wbGF0Zm9ybXNfdG9fdXBkYXRlID0gc2V0KCkKLSAg
ICAgICAgZm9yIHJlc3VsdCBpbiBtZXJnZWRfcmVzdWx0czoKLSAgICAgICAgICAgIGJyYW5jaGVz
X2FuZF9wbGF0Zm9ybXNfdG9fdXBkYXRlLmFkZCgocmVzdWx0LmJ1aWxkLmJyYW5jaC5pZCwgcmVz
dWx0LmJ1aWxkLnBsYXRmb3JtLmlkKSkKLSAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gaW50by5u
YW1lCi0gICAgICAgICAgICByZXN1bHQucHV0KCkKLQotICAgICAgICBmb3IgYnJhbmNoX2lkLCBw
bGF0Zm9ybV9pZCBpbiBicmFuY2hlc19hbmRfcGxhdGZvcm1zX3RvX3VwZGF0ZToKLSAgICAgICAg
ICAgIHNjaGVkdWxlX3J1bnNfdXBkYXRlKGludG8uaWQsIGJyYW5jaF9pZCwgcGxhdGZvcm1faWQp
Ci0KLSAgICAgICAgc2NoZWR1bGVfZGFzaGJvYXJkX3VwZGF0ZSgpCi0gICAgICAgIHNjaGVkdWxl
X21hbmlmZXN0X3VwZGF0ZSgpCi0KLSAgICAgICAgZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19p
ZF9ob2xkZXIobWVyZ2UpCi0KLSAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoJ09LJykK
SW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVscy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHMucHkJKHJldmlz
aW9uIDEwODkzMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVscy5w
eQkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw4IEBAIGNsYXNzIEJ1aWxkKGRiLk1vZGVs
KToKIGNsYXNzIFRlc3QoZGIuTW9kZWwpOgogICAgIGlkID0gZGIuSW50ZWdlclByb3BlcnR5KHJl
cXVpcmVkPVRydWUpCiAgICAgbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KHJlcXVpcmVkPVRydWUp
CisgICAgIyBGSVhNRTogU3RvcmluZyBicmFuY2hlcyBhbmQgcGxhdGZvcm1zIHNlcGFyYXRlbHkg
aXMgZmxhd2VkIHNpbmNlIGEgdGVzdCBtYXliZSBhdmFpbGFibGUgb24KKyAgICAjIG9uZSBwbGF0
Zm9ybSBidXQgb25seSBvbiBzb21lIGJyYW5jaCBhbmQgdmljZSB2ZXJzYS4KICAgICBicmFuY2hl
cyA9IGRiLkxpc3RQcm9wZXJ0eShkYi5LZXkpCiAgICAgcGxhdGZvcm1zID0gZGIuTGlzdFByb3Bl
cnR5KGRiLktleSkKIApAQCAtMTcwLDYgKzE3MiwyNiBAQCBjbGFzcyBUZXN0KGRiLk1vZGVsKToK
IAogICAgICAgICByZXR1cm4gY3JlYXRlX2luX3RyYW5zYWN0aW9uX3dpdGhfbnVtZXJpY19pZF9o
b2xkZXIoZXhlY3V0ZSkgb3IgZXhpc3RpbmdfdGVzdFswXQogCisgICAgZGVmIG1lcmdlKHNlbGYs
IG90aGVyKToKKyAgICAgICAgYXNzZXJ0IHNlbGYua2V5KCkgIT0gb3RoZXIua2V5KCkKKworICAg
ICAgICBtZXJnZWRfcmVzdWx0cyA9IFRlc3RSZXN1bHQuYWxsKCkKKyAgICAgICAgbWVyZ2VkX3Jl
c3VsdHMuZmlsdGVyKCduYW1lID0nLCBvdGhlci5uYW1lKQorCisgICAgICAgICMgRklYTUU6IFdl
IHNob3VsZCBiZSBkb2luZyB0aGlzIGNoZWNrIGluIGEgdHJhbnNhY3Rpb24gYnV0IG9ubHkgYW5j
ZXN0b3IgcXVlcmllcyBhcmUgYWxsb3dlZAorICAgICAgICBmb3IgcmVzdWx0IGluIG1lcmdlZF9y
ZXN1bHRzOgorICAgICAgICAgICAgaWYgVGVzdFJlc3VsdC5nZXRfYnlfa2V5X25hbWUoVGVzdFJl
c3VsdC5rZXlfbmFtZShyZXN1bHQuYnVpbGQsIHNlbGYubmFtZSkpOgorICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCisKKyAgICAgICAgYnJhbmNoZXNfYW5kX3BsYXRmb3Jtc190b191cGRhdGUg
PSBzZXQoKQorICAgICAgICBmb3IgcmVzdWx0IGluIG1lcmdlZF9yZXN1bHRzOgorICAgICAgICAg
ICAgYnJhbmNoZXNfYW5kX3BsYXRmb3Jtc190b191cGRhdGUuYWRkKChyZXN1bHQuYnVpbGQuYnJh
bmNoLmlkLCByZXN1bHQuYnVpbGQucGxhdGZvcm0uaWQpKQorICAgICAgICAgICAgcmVzdWx0LnJl
cGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZShzZWxmLm5hbWUpCisKKyAgICAgICAgZGVsZXRlX21v
ZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIob3RoZXIpCisKKyAgICAgICAgcmV0dXJuIGJyYW5j
aGVzX2FuZF9wbGF0Zm9ybXNfdG9fdXBkYXRlCisKIAogY2xhc3MgVGVzdFJlc3VsdChkYi5Nb2Rl
bCk6CiAgICAgbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KHJlcXVpcmVkPVRydWUpCkBAIC0yMDEs
NiArMjIzLDEzIEBAIGNsYXNzIFRlc3RSZXN1bHQoZGIuTW9kZWwpOgogICAgICAgICAgICAgdmFs
dWVNZWRpYW49X2Zsb2F0X29yX25vbmUocmVzdWx0LCAnbWVkaWFuJyksIHZhbHVlU3RkZXY9X2Zs
b2F0X29yX25vbmUocmVzdWx0LCAnc3RkZXYnKSwKICAgICAgICAgICAgIHZhbHVlTWluPV9mbG9h
dF9vcl9ub25lKHJlc3VsdCwgJ21pbicpLCB2YWx1ZU1heD1fZmxvYXRfb3Jfbm9uZShyZXN1bHQs
ICdtYXgnKSkKIAorICAgIGRlZiByZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWUoc2VsZiwgbmV3
X25hbWUpOgorICAgICAgICBjbG9uZSA9IFRlc3RSZXN1bHQoa2V5X25hbWU9VGVzdFJlc3VsdC5r
ZXlfbmFtZShzZWxmLmJ1aWxkLCBuZXdfbmFtZSksIG5hbWU9bmV3X25hbWUsIGJ1aWxkPXNlbGYu
YnVpbGQsCisgICAgICAgICAgICB2YWx1ZT1zZWxmLnZhbHVlLCB2YWx1ZU1lZGlhbj1zZWxmLnZh
bHVlTWVkaWFuLCB2YWx1ZVN0ZGV2PXNlbGYudmFsdWVNaW4sIHZhbHVlTWluPXNlbGYudmFsdWVN
aW4sIHZhbHVlTWF4PXNlbGYudmFsdWVNYXgpCisgICAgICAgIGNsb25lLnB1dCgpCisgICAgICAg
IHNlbGYuZGVsZXRlKCkKKyAgICAgICAgcmV0dXJuIGNsb25lCisKIAogY2xhc3MgUmVwb3J0TG9n
KGRiLk1vZGVsKToKICAgICB0aW1lc3RhbXAgPSBkYi5EYXRlVGltZVByb3BlcnR5KHJlcXVpcmVk
PVRydWUpCkluZGV4OiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20v
bW9kZWxzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMDg5MzEpCisrKyBXZWJzaXRlcy93ZWJraXQt
cGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDExICs0OSwxOCBAQCBjbGFzcyBEYXRhU3RvcmVUZXN0c0Jhc2UodW5pdHRlc3QuVGVzdENhCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vZGVsLmFsbCgpLmZldGNoKDUpKSwgMCkKIAog
ICAgIGRlZiBhc3NlcnRPbmx5SW5zdGFuY2Uoc2VsZiwgb25seV9pbnN0YXNuY2UpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihvbmx5X2luc3Rhc25jZS5fX2NsYXNzX18uYWxsKCkuZmV0
Y2goNSkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob25seV9pbnN0YXNuY2UuX19jbGFz
c19fLmdldChvbmx5X2luc3Rhc25jZS5rZXkoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0T25seUlu
c3RhbmNlcyhbb25seV9pbnN0YXNuY2VdKQorCisgICAgZGVmIGFzc2VydE9ubHlJbnN0YW5jZXMo
c2VsZiwgZXhwZWN0ZWRfaW5zdGFuY2VzKToKKyAgICAgICAgYWN0dWFsX2luc3RhbmNlcyA9IGV4
cGVjdGVkX2luc3RhbmNlc1swXS5fX2NsYXNzX18uYWxsKCkuZmV0Y2gobGVuKGV4cGVjdGVkX2lu
c3RhbmNlcykgKyAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTW9kZWxMaXN0
KGFjdHVhbF9pbnN0YW5jZXMsIGV4cGVjdGVkX2luc3RhbmNlcykKKworICAgIGRlZiBhc3NlcnRF
cXVhbFVub3JkZXJlZE1vZGVsTGlzdChzZWxmLCBsaXN0MSwgbGlzdDIpOgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsVW5vcmRlcmVkTGlzdChbaXRlbS5rZXkoKSBmb3IgaXRlbSBpbiBsaXN0MV0s
IFtpdGVtLmtleSgpIGZvciBpdGVtIGluIGxpc3QxXSkKIAogICAgIGRlZiBhc3NlcnRFcXVhbFVu
b3JkZXJlZExpc3Qoc2VsZiwgbGlzdDEsIGxpc3QyKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZXQobGlzdDEpLCBzZXQobGlzdDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihs
aXN0MSksIGxlbihsaXN0MikpCiAKIAogY2xhc3MgSGVscGVyVGVzdHMoRGF0YVN0b3JlVGVzdHNC
YXNlKToKQEAgLTIwMCw2ICsyMDcsMTIgQEAgZGVmIF9jcmVhdGVfc29tZV9idWlsZGVyKCk6CiAg
ICAgcmV0dXJuIGJyYW5jaCwgcGxhdGZvcm0sIG1vZGVscy5CdWlsZGVyLmdldChidWlsZGVyX2tl
eSkKIAogCitkZWYgX2NyZWF0ZV9idWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyLCBrZXlf
bmFtZT0nc29tZS1idWlsZCcpOgorICAgIGJ1aWxkX2tleSA9IG1vZGVscy5CdWlsZChrZXlfbmFt
ZT1rZXlfbmFtZSwgYnJhbmNoPWJyYW5jaCwgcGxhdGZvcm09cGxhdGZvcm0sIGJ1aWxkZXI9YnVp
bGRlciwKKyAgICAgICAgYnVpbGROdW1iZXI9MSwgcmV2aXNpb249MTAwLCB0aW1lc3RhbXA9ZGF0
ZXRpbWUubm93KCkpLnB1dCgpCisgICAgcmV0dXJuIG1vZGVscy5CdWlsZC5nZXQoYnVpbGRfa2V5
KQorCisKIGNsYXNzIEJ1aWxkVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKICAgICBkZWYgdGVz
dF9nZXRfb3JfaW5zZXJ0X2Zyb21fbG9nKHNlbGYpOgogICAgICAgICBicmFuY2gsIHBsYXRmb3Jt
LCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQpAQCAtMjU0LDE2ICsyNjcsNDIgQEAg
Y2xhc3MgVGVzdE1vZGVsVGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsVW5vcmRlcmVkTGlzdCh0ZXN0LmJyYW5jaGVzLCBbYnJhbmNoLmtleSgpLCBvdGhl
cl9icmFuY2gua2V5KCldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTGlzdCh0
ZXN0LnBsYXRmb3JtcywgW3BsYXRmb3JtLmtleSgpLCBvdGhlcl9wbGF0Zm9ybS5rZXkoKV0pCiAK
LQotY2xhc3MgVGVzdFJlc3VsdFRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6Ci0gICAgZGVmIF9j
cmVhdGVfYnVpbGQoc2VsZik6CisgICAgZGVmIHRlc3RfbWVyZ2Uoc2VsZik6CiAgICAgICAgIGJy
YW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCi0gICAgICAg
IGJ1aWxkX2tleSA9IG1vZGVscy5CdWlsZChrZXlfbmFtZT0nc29tZS1idWlsZCcsIGJyYW5jaD1i
cmFuY2gsIHBsYXRmb3JtPXBsYXRmb3JtLCBidWlsZGVyPWJ1aWxkZXIsCi0gICAgICAgICAgICBi
dWlsZE51bWJlcj0xLCByZXZpc2lvbj0xMDAsIHRpbWVzdGFtcD1kYXRldGltZS5ub3coKSkucHV0
KCkKLSAgICAgICAgcmV0dXJuIG1vZGVscy5CdWlsZC5nZXQoYnVpbGRfa2V5KQorICAgICAgICBz
b21lX2J1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyKQorICAg
ICAgICBzb21lX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9w
YXJzZWRfanNvbignc29tZS10ZXN0Jywgc29tZV9idWlsZCwgNTApCisgICAgICAgIHNvbWVfdGVz
dCA9IG1vZGVscy5UZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3NvbWUtdGVzdCcsIGJyYW5jaCwgcGxh
dGZvcm0pCisKKyAgICAgICAgb3RoZXJfYnVpbGQgPSBfY3JlYXRlX2J1aWxkKGJyYW5jaCwgcGxh
dGZvcm0sIGJ1aWxkZXIsICdvdGhlci1idWlsZCcpCisgICAgICAgIG90aGVyX3Jlc3VsdCA9IG1v
ZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignb3RoZXItdGVz
dCcsIG90aGVyX2J1aWxkLCAzMCkKKyAgICAgICAgb3RoZXJfdGVzdCA9IG1vZGVscy5UZXN0LnVw
ZGF0ZV9vcl9pbnNlcnQoJ290aGVyLXRlc3QnLCBicmFuY2gsIHBsYXRmb3JtKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0T25seUluc3RhbmNlcyhbc29tZV9yZXN1bHQsIG90aGVyX3Jlc3VsdF0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc29tZV9yZXN1bHQua2V5KCksIG90aGVyX3Jlc3Vs
dC5rZXkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2VzKFtzb21lX3Rlc3QsIG90
aGVyX3Rlc3RdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBz
b21lX3Rlc3QubWVyZ2UsIChzb21lX3Rlc3QpKQorICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0
YW5jZXMoW3NvbWVfdGVzdCwgb3RoZXJfdGVzdF0pCisKKyAgICAgICAgc29tZV90ZXN0Lm1lcmdl
KG90aGVyX3Rlc3QpCisgICAgICAgIHJlc3VsdHNfZm9yX3NvbWVfdGVzdCA9IG1vZGVscy5UZXN0
UmVzdWx0LmFsbCgpCisgICAgICAgIHJlc3VsdHNfZm9yX3NvbWVfdGVzdC5maWx0ZXIoJ25hbWUg
PScsICdzb21lLXRlc3QnKQorICAgICAgICByZXN1bHRzX2Zvcl9zb21lX3Rlc3QgPSByZXN1bHRz
X2Zvcl9zb21lX3Rlc3QuZmV0Y2goNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVz
dWx0c19mb3Jfc29tZV90ZXN0KSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs
dHNfZm9yX3NvbWVfdGVzdFswXS5uYW1lLCAnc29tZS10ZXN0JykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHRzX2Zvcl9zb21lX3Rlc3RbMV0ubmFtZSwgJ3NvbWUtdGVzdCcpCisKKyAg
ICAgICAgaWYgcmVzdWx0c19mb3Jfc29tZV90ZXN0WzBdLnZhbHVlID09IDUwOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzX2Zvcl9zb21lX3Rlc3RbMV0udmFsdWUsIDMwKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzX2Zvcl9z
b21lX3Rlc3RbMV0udmFsdWUsIDUwKQorCiAKK2NsYXNzIFRlc3RSZXN1bHRUZXN0cyhEYXRhU3Rv
cmVUZXN0c0Jhc2UpOgogICAgIGRlZiB0ZXN0X2dldF9vcl9pbnNlcnRfdmFsdWUoc2VsZik6Ci0g
ICAgICAgIGJ1aWxkID0gc2VsZi5fY3JlYXRlX2J1aWxkKCkKKyAgICAgICAgYnJhbmNoLCBwbGF0
Zm9ybSwgYnVpbGRlciA9IF9jcmVhdGVfc29tZV9idWlsZGVyKCkKKyAgICAgICAgYnVpbGQgPSBf
Y3JlYXRlX2J1aWxkKGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuVGVzdFJlc3VsdCkKICAgICAgICAgcmVzdWx0
ID0gbW9kZWxzLlRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9mcm9tX3BhcnNlZF9qc29uKCdzb21l
LXRlc3QnLCBidWlsZCwgNTApCiAgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJlc3Vs
dCkKQEAgLTI3Niw3ICszMTUsOCBAQCBjbGFzcyBUZXN0UmVzdWx0VGVzdHMoRGF0YVN0b3JlVGVz
dHNCYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnZhbHVlTWF4LCBOb25lKQog
CiAgICAgZGVmIHRlc3RfZ2V0X29yX2luc2VydF9zdGF0X3ZhbHVlKHNlbGYpOgotICAgICAgICBi
dWlsZCA9IHNlbGYuX2NyZWF0ZV9idWlsZCgpCisgICAgICAgIGJyYW5jaCwgcGxhdGZvcm0sIGJ1
aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCisgICAgICAgIGJ1aWxkID0gX2NyZWF0ZV9i
dWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyKQogICAgICAgICBzZWxmLmFzc2VydFRoZXJl
SXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3RSZXN1bHQpCiAgICAgICAgIHJlc3VsdCA9IG1vZGVs
cy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignc29tZS10ZXN0Jywg
YnVpbGQsCiAgICAgICAgICAgICB7ImF2ZyI6IDQwLCAibWVkaWFuIjogIjQwLjEiLCAic3RkZXYi
OiAzLjI1LCAibWluIjogMzAuNSwgIm1heCI6IDQ1fSkKQEAgLTI4OSw2ICszMjksNjQgQEAgY2xh
c3MgVGVzdFJlc3VsdFRlc3RzKERhdGFTdG9yZVRlc3RzQmFzZQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdC52YWx1ZU1pbiwgMzAuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXN1bHQudmFsdWVNYXgsIDQ1KQogCisgICAgZGVmIHRlc3RfcmVwbGFjZV90b19jaGFuZ2VfdGVz
dF9uYW1lKHNlbGYpOgorICAgICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0
ZV9zb21lX2J1aWxkZXIoKQorICAgICAgICBidWlsZCA9IF9jcmVhdGVfYnVpbGQoYnJhbmNoLCBw
bGF0Zm9ybSwgYnVpbGRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9m
KG1vZGVscy5UZXN0UmVzdWx0KQorICAgICAgICByZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5n
ZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxkLCA1MCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdC5uYW1lLCAnc29tZS10ZXN0JykKKworICAgICAgICBuZXdfcmVzdWx0ID0g
cmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZSgnb3RoZXItdGVzdCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCBuZXdfcmVzdWx0KQorICAgICAgICBzZWxmLmFz
c2VydE9ubHlJbnN0YW5jZShuZXdfcmVzdWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bmV3X3Jlc3VsdC5uYW1lLCAnb3RoZXItdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bmV3X3Jlc3VsdC5idWlsZC5rZXkoKSwgcmVzdWx0LmJ1aWxkLmtleSgpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG5ld19yZXN1bHQudmFsdWUsIHJlc3VsdC52YWx1ZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuZXdfcmVzdWx0LnZhbHVlTWVkaWFuLCBOb25lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG5ld19yZXN1bHQudmFsdWVTdGRldiwgTm9uZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChuZXdfcmVzdWx0LnZhbHVlTWluLCBOb25lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG5ld19yZXN1bHQudmFsdWVNYXgsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZXBsYWNl
X3RvX2NoYW5nZV90ZXN0X25hbWVfd2l0aF9zdGF0X3ZhbHVlKHNlbGYpOgorICAgICAgICBicmFu
Y2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQorICAgICAgICBi
dWlsZCA9IF9jcmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pz
b24oJ3NvbWUtdGVzdCcsIGJ1aWxkLAorICAgICAgICAgICAgeyJhdmciOiA0MCwgIm1lZGlhbiI6
ICI0MC4xIiwgInN0ZGV2IjogMy4yNSwgIm1pbiI6IDMwLjUsICJtYXgiOiA0NX0pCisgICAgICAg
IHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXN1bHQubmFtZSwgJ3NvbWUtdGVzdCcpCisKKyAgICAgICAgbmV3X3Jlc3VsdCA9IHJlc3Vs
dC5yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWUoJ290aGVyLXRlc3QnKQorICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKHJlc3VsdCwgbmV3X3Jlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRP
bmx5SW5zdGFuY2UobmV3X3Jlc3VsdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19y
ZXN1bHQubmFtZSwgJ290aGVyLXRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19y
ZXN1bHQuYnVpbGQua2V5KCksIHJlc3VsdC5idWlsZC5rZXkoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChuZXdfcmVzdWx0LnZhbHVlLCByZXN1bHQudmFsdWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzdWx0LnZhbHVlLCA0MC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
c3VsdC52YWx1ZU1lZGlhbiwgNDAuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQu
dmFsdWVTdGRldiwgMy4yNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudmFsdWVN
aW4sIDMwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnZhbHVlTWF4LCA0NSkK
KworICAgIGRlZiB0ZXN0X3JlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZV9vdmVycmlkZXNfY29u
ZmxpY3RpbmdfcmVzdWx0KHNlbGYpOgorICAgICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVy
ID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQorICAgICAgICBidWlsZCA9IF9jcmVhdGVfYnVpbGQo
YnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9J
bnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0KQorICAgICAgICByZXN1bHQgPSBtb2RlbHMuVGVz
dFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxk
LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocmVzdWx0KQorCisgICAgICAg
IGNvbmZsaWN0aW5nX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJv
bV9wYXJzZWRfanNvbignb3RoZXItdGVzdCcsIGJ1aWxkLCAxMCkKKworICAgICAgICBuZXdfcmVz
dWx0ID0gcmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZSgnb3RoZXItdGVzdCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCBuZXdfcmVzdWx0KQorICAgICAgICBz
ZWxmLmFzc2VydE9ubHlJbnN0YW5jZShuZXdfcmVzdWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobmV3X3Jlc3VsdC5uYW1lLCAnb3RoZXItdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobW9kZWxzLlRlc3RSZXN1bHQuZ2V0KGNvbmZsaWN0aW5nX3Jlc3VsdC5rZXkoKSkudmFs
dWUsIDIwKQorCiAKIGNsYXNzIFJlcG9ydExvZ1Rlc3RzKERhdGFTdG9yZVRlc3RzQmFzZSk6CiAg
ICAgZGVmIF9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZChzZWxmLCBwYXlsb2FkKToKSW5kZXg6IFdl
YnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2Nzcy9hZG1pbi5jc3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vY3NzL2FkbWluLmNzcwkocmV2aXNp
b24gMTA4OTMxKQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vY3NzL2FkbWlu
LmNzcwkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMyBAQCBodG1sIHsKICAgICBvdmVyZmxv
dzogYXV0bzsKIH0KIAotI3N1bW1hcnkgewotICAgIG1hcmdpbi10b3A6IDQ5cHg7Cisjc3VtbWFy
eSwgI21hbnVhbC1zdWJtaXNzaW9uIHsKICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgbGluZS1o
ZWlnaHQ6IDM2cHg7Cit9CisKKyNzdW1tYXJ5IHsKKyAgICBtYXJnaW4tdG9wOiA0OXB4OwogICAg
IGRpc3BsYXk6IHRhYmxlOwogICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiB9CkBAIC0x
OCw3ICsyMSw2IEBAIHNlY3Rpb24gewogICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTsK
ICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgIG1pbi1oZWlnaHQ6IDMwMHB4Owot
ICAgIG1heC13aWR0aDogNDAwcHg7CiB9CiAKIGgyIHsKQEAgLTgyLDYgKzg0LDE1IEBAIGZvcm0g
ZGQgewogICAgIHdpZHRoOiAxNTBweDsKIH0KIAorI21hbnVhbC1zdWJtaXNzaW9uIGZvcm0gewor
ICAgIHBhZGRpbmc6IDA7Cit9CisjbWFudWFsLXN1Ym1pc3Npb24gdGV4dGFyZWEgeworICAgIGZv
bnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgZm9udC1zaXplOiAxNHB4OworICAgIGJvcmRlcjog
bm9uZTsKK30KKwogI2Zvb3RlciB7CiAgICAgbWFyZ2luOiAxMHB4OwogfQpJbmRleDogV2Vic2l0
ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanMvYWRtaW4uanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanMvYWRtaW4uanMJKHJldmlzaW9uIDEwODkz
MSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pzL2FkbWluLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw5ICs1OSwxNSBAQCAkKCdmb3JtJykudHJpZ2dlcigncmVsb2FkJyk7
CiAkKCdmb3JtJykuYmluZCgnc3VibWl0JywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKIAotICAgIHZhciBjb250ZW50cyA9IHt9Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLmVsZW1lbnRzLmxlbmd0aDsgaSsrKQotICAgICAgICBjb250ZW50c1t0
aGlzLmVsZW1lbnRzW2ldLm5hbWVdID0gdGhpcy5lbGVtZW50c1tpXS52YWx1ZTsKKyAgICB2YXIg
cGF5bG9hZDsKKyAgICBpZiAodGhpcy5wYXlsb2FkKQorICAgICAgICBwYXlsb2FkID0gdGhpcy5w
YXlsb2FkLnZhbHVlOworICAgIGVsc2UgeworICAgICAgICB2YXIgY29udGVudHMgPSB7fTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmVsZW1lbnRzLmxlbmd0aDsgaSsrKQorICAg
ICAgICAgICAgY29udGVudHNbdGhpcy5lbGVtZW50c1tpXS5uYW1lXSA9IHRoaXMuZWxlbWVudHNb
aV0udmFsdWU7CisgICAgICAgIHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShjb250ZW50cyk7Cisg
ICAgfQogCiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKICAgICB4aHIub25yZWFk
eXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewpAQCAtNzEsMTAgKzc3LDI0IEBAICQoJ2Zvcm0n
KS5iaW5kKCdzdWJtaXQnLCBmdW5jdGlvbiAoZXZlbnQKICAgICAgICAgICAgIGVycm9yKCdIVFRQ
IHN0YXR1czogJyArIHhoci5zdGF0dXMpOwogICAgICAgICBlbHNlIGlmICh4aHIucmVzcG9uc2VU
ZXh0ICE9ICdPSycpCiAgICAgICAgICAgICBlcnJvcih4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAg
ICAgCiAgICAgfQogICAgIHhoci5vcGVuKHRoaXMubWV0aG9kLCB0aGlzLmFjdGlvbiwgdHJ1ZSk7
Ci0gICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoY29udGVudHMpKTsKKyAgICB4aHIuc2VuZChw
YXlsb2FkKTsKIAogICAgICQodGhpcykudHJpZ2dlcigncmVsb2FkJyk7CiB9KTsKKworJCgnI21h
bnVhbC1zdWJtaXNzaW9uIHRleHRhcmVhJykudmFsKEpTT04uc3RyaW5naWZ5KHsKKyAgICAnYnJh
bmNoJzogJ3dlYmtpdC10cnVuaycsCisgICAgJ3BsYXRmb3JtJzogJ2Nocm9taXVtLW1hYycsCisg
ICAgJ2J1aWxkZXItbmFtZSc6ICdDaHJvbWl1bSBNYWMgUmVsZWFzZSAoUGVyZiknLAorICAgICdi
dWlsZC1udW1iZXInOiAnMTIzJywKKyAgICAndGltZXN0YW1wJzogcGFyc2VJbnQoRGF0ZS5ub3co
KSAvIDEwMDApLAorICAgICd3ZWJraXQtcmV2aXNpb24nOiAxMDQ4NTYsCisgICAgJ2Nocm9taXVt
LXJldmlzaW9uJzogMTIzMDU5LAorICAgICdyZXN1bHRzJzoKKyAgICAgICAgeworICAgICAgICAg
ICAgJ3dlYmtpdF9zdHlsZV90ZXN0JzogeydhdmcnOiAxMDAsICdtZWRpYW4nOiAxMDIsICdzdGRl
dic6IDUsICdtaW4nOiA5MCwgJ21heCc6IDExMH0sCisgICAgICAgICAgICAnc29tZV90ZXN0Jzog
NTQsCisgICAgICAgIH0sCit9LCBudWxsLCAnICAnKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128911</attachid>
            <date>2012-02-26 01:38:53 -0800</date>
            <delta_ts>2012-02-27 18:14:39 -0800</delta_ts>
            <desc>Removed unnecessary handler rules in app.yaml</desc>
            <filename>bug-79602-20120226013852.patch</filename>
            <type>text/plain</type>
            <size>23653</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkz
MSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAy
LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEV4dHJhY3Qg
dGhlIGxvZ2ljIHRvIG1lcmdlIHRlc3RzIGZyb20gTWVyZ2VUZXN0c0hhbmRsZXIgYW5kIGFkZCB1
bml0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEV4dHJhY3RlZCBUZXN0Lm1lcmdlIGFuZCBUZXN0UmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rl
c3RfbmFtZSBvdXQgb2YgTWVyZ2VUZXN0c0hhbmRsZXIsCisgICAgICAgIGFuZCBtb3ZlZCBNZXJn
ZVRlc3RzSGFuZGxlciBpbnRvIGFkbWluX2hhbmRsZXJzLnB5IHdoZXJlIGl0IGJlbG9uZ3MuCisK
KyAgICAgICAgQWRkZWQgbmV3IGJhY2tlbmQgIm1vZGVsLW1hbmlwdWxhdG9yIiB0byBleGVjdXRl
IHRhc2tzIHRvIG1lcmdlIHRlc3RzLgorCisgICAgICAgIEFsc28gcmV2aXZlIHRoZSBpbmFkdmVy
dGVudGx5IHJlbW92ZWQgbWFudWFsIHN1Ym1pc3Npb24gZm9ybSBvbiB0aGUgYWRtaW4gcGFnZS4K
KworICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2FkbWluX2hhbmRs
ZXJzLnB5OgorICAgICAgICAoQWRtaW5EYXNoYm9hcmRIYW5kbGVyLmdldF90ZXN0cyk6CisgICAg
ICAgIChNZXJnZVRlc3RzSGFuZGxlcik6CisgICAgICAgIChNZXJnZVRlc3RzSGFuZGxlci5wb3N0
KToKKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9hcHAueWFtbDoK
KyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9iYWNrZW5kcy55YW1s
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9jc3Mv
YWRtaW4uY3NzOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2pz
L2FkbWluLmpzOgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21h
aW4ucHk6CisgICAgICAgICogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbWVyZ2Vf
dGVzdHNfaGFuZGxlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJzaXRlcy93ZWJraXQtcGVy
Zi5hcHBzcG90LmNvbS9tb2RlbHMucHk6CisgICAgICAgIChUZXN0KToKKyAgICAgICAgKFRlc3Qu
bWVyZ2UpOgorICAgICAgICAoVGVzdFJlc3VsdC5yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWUp
OgorICAgICAgICAqIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21vZGVsc191bml0
dGVzdC5weToKKyAgICAgICAgKERhdGFTdG9yZVRlc3RzQmFzZS5hc3NlcnRPbmx5SW5zdGFuY2Up
OgorICAgICAgICAoRGF0YVN0b3JlVGVzdHNCYXNlKToKKyAgICAgICAgKERhdGFTdG9yZVRlc3Rz
QmFzZS5hc3NlcnRPbmx5SW5zdGFuY2VzKToKKyAgICAgICAgKERhdGFTdG9yZVRlc3RzQmFzZS5h
c3NlcnRFcXVhbFVub3JkZXJlZE1vZGVsTGlzdCk6CisgICAgICAgIChEYXRhU3RvcmVUZXN0c0Jh
c2UuYXNzZXJ0RXF1YWxVbm9yZGVyZWRMaXN0KToKKyAgICAgICAgKF9jcmVhdGVfYnVpbGQpOgor
ICAgICAgICAoVGVzdE1vZGVsVGVzdHMudGVzdF9tZXJnZSk6CisgICAgICAgIChUZXN0UmVzdWx0
VGVzdHMpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3RzLnRlc3RfZ2V0X29yX2luc2VydF92YWx1
ZSk6CisgICAgICAgIChUZXN0UmVzdWx0VGVzdHMudGVzdF9nZXRfb3JfaW5zZXJ0X3N0YXRfdmFs
dWUpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3RzLnRlc3RfcmVwbGFjZV90b19jaGFuZ2VfdGVz
dF9uYW1lKToKKyAgICAgICAgKFRlc3RSZXN1bHRUZXN0cy50ZXN0X3JlcGxhY2VfdG9fY2hhbmdl
X3Rlc3RfbmFtZV93aXRoX3N0YXRfdmFsdWUpOgorICAgICAgICAoVGVzdFJlc3VsdFRlc3RzLnRl
c3RfcmVwbGFjZV90b19jaGFuZ2VfdGVzdF9uYW1lX292ZXJyaWRlc19jb25mbGljdGluZ19yZXN1
bHQpOgorCiAyMDEyLTAyLTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFBlcmYtby1tYXRpYyBidWlsZCBmaXggYWZ0ZXIgcjEwODkxNy4gSSBuZWVkIGEgc2Ny
b2xsYmFyIGluIG9yZGVyIHNlZSBhbGwgdGhlIHRlc3RzLgpJbmRleDogV2Vic2l0ZXMvd2Via2l0
LXBlcmYuYXBwc3BvdC5jb20vYWRtaW5faGFuZGxlcnMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0
ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vYWRtaW5faGFuZGxlcnMucHkJKHJldmlzaW9uIDEw
ODkzMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2FkbWluX2hhbmRsZXJz
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTQgQEAKIGltcG9ydCB3ZWJhcHAyCiBp
bXBvcnQganNvbgogCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB0YXNrcXVldWUK
IGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkgaW1wb3J0IHVzZXJzCiBmcm9tIGdvb2dsZS5hcHBl
bmdpbmUuZXh0LmRiIGltcG9ydCBHcWxRdWVyeQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53
ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCiAKK2Zyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVf
cnVuc191cGRhdGUKK2Zyb20gY29udHJvbGxlciBpbXBvcnQgc2NoZWR1bGVfZGFzaGJvYXJkX3Vw
ZGF0ZQorZnJvbSBjb250cm9sbGVyIGltcG9ydCBzY2hlZHVsZV9tYW5pZmVzdF91cGRhdGUKIGZy
b20gbW9kZWxzIGltcG9ydCBCcmFuY2gKIGZyb20gbW9kZWxzIGltcG9ydCBCdWlsZGVyCiBmcm9t
IG1vZGVscyBpbXBvcnQgUGxhdGZvcm0KQEAgLTgxLDMgKzg1LDQyIEBAIGNsYXNzIEFkbWluRGFz
aGJvYXJkSGFuZGxlcih3ZWJhcHAyLlJlcXUKICAgICBkZWYgZ2V0X3Rlc3RzKHNlbGYpOgogICAg
ICAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9u
L2pzb24nCiAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKGpzb24uZHVtcHMoW3Rlc3Qu
bmFtZSBmb3IgdGVzdCBpbiBUZXN0LmFsbCgpLmZldGNoKGxpbWl0PTIwMCldKSkKKworCitjbGFz
cyBNZXJnZVRlc3RzSGFuZGxlcih3ZWJhcHAyLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgcG9z
dChzZWxmLCB0YXNrKToKKyAgICAgICAgc2VsZi5yZXNwb25zZS5oZWFkZXJzWydDb250ZW50LVR5
cGUnXSA9ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JworCisgICAgICAgIGlmIHRhc2sgIT0g
J3J1bic6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGpzb24u
bG9hZHMoc2VsZi5yZXF1ZXN0LmJvZHkpCisgICAgICAgICAgICAgICAgbWVyZ2UgPSBwYXlsb2Fk
LmdldCgnbWVyZ2UnLCAnJykKKyAgICAgICAgICAgICAgICBpbnRvID0gcGF5bG9hZC5nZXQoJ2lu
dG8nLCAnJykKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBzZWxmLnJlc3Bv
bnNlLm91dC53cml0ZSgiRmFpbGVkIHRvIHBhcnNlIHRoZSBwYXlsb2FkOiAlcyIgJSBzZWxmLnJl
cXVlc3QuYm9keSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgaWYgbWVy
Z2UgPT0gaW50byBvciBub3QgVGVzdC5nZXRfYnlfa2V5X25hbWUobWVyZ2UpIG9yIG5vdCBUZXN0
LmdldF9ieV9rZXlfbmFtZShpbnRvKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZSgnSW52YWxpZCB0ZXN0IG5hbWVzJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICAgICAgdGFza3F1ZXVlLmFkZCh1cmw9Jy9hZG1pbi9tZXJnZS10ZXN0cy9ydW4nLCBw
YXJhbXM9eydtZXJnZSc6IG1lcmdlLCAnaW50byc6IGludG99LCB0YXJnZXQ9J21vZGVsLW1hbmlw
dWxhdG9yJykKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCdPSycpCisgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICBtZXJnZSA9IFRlc3QuZ2V0X2J5X2tleV9uYW1lKHNl
bGYucmVxdWVzdC5nZXQoJ21lcmdlJykpCisgICAgICAgIGludG8gPSBUZXN0LmdldF9ieV9rZXlf
bmFtZShzZWxmLnJlcXVlc3QuZ2V0KCdpbnRvJykpCisKKyAgICAgICAgYnJhbmNoZXNfYW5kX3Bs
YXRmb3Jtc190b191cGRhdGUgPSBpbnRvLm1lcmdlKG1lcmdlKQorICAgICAgICBpZiBicmFuY2hl
c19hbmRfcGxhdGZvcm1zX3RvX3VwZGF0ZSA9PSBOb25lOgorICAgICAgICAgICAgIyBGSVhNRTog
VGhpcyBtZXNzYWdlIGlzIGludmlzaWJsZS4gTmVlZCB0byBzdG9yZSB0aGlzIHNvbWV3aGVyZSBh
bmQgbGV0IHRoZSBhZG1pbiBwYWdlIHB1bGwgaXQuCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNl
Lm91dC53cml0ZSgnQ2Fubm90IG1lcmdlICVzIGludG8gJXMuIFRoZXJlIGFyZSBjb25mbGljdGlu
ZyByZXN1bHRzLicgJSAobWVyZ2UubmFtZSwgaW50by5uYW1lKSkKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGZvciBicmFuY2hfaWQsIHBsYXRmb3JtX2lkIGluIGJyYW5jaGVzX2FuZF9w
bGF0Zm9ybXNfdG9fdXBkYXRlOgorICAgICAgICAgICAgc2NoZWR1bGVfcnVuc191cGRhdGUoaW50
by5pZCwgYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCkKKworICAgICAgICBzY2hlZHVsZV9kYXNoYm9h
cmRfdXBkYXRlKCkKKyAgICAgICAgc2NoZWR1bGVfbWFuaWZlc3RfdXBkYXRlKCkKKworICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgnT0snKQpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBl
cmYuYXBwc3BvdC5jb20vYXBwLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBl
cmYuYXBwc3BvdC5jb20vYXBwLnlhbWwJKHJldmlzaW9uIDEwODkzMSkKKysrIFdlYnNpdGVzL3dl
YmtpdC1wZXJmLmFwcHNwb3QuY29tL2FwcC55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogYXBwbGljYXRpb246IHdlYmtpdC1wZXJmCi12ZXJzaW9uOiAxNAordmVyc2lvbjogMTUK
IHJ1bnRpbWU6IHB5dGhvbjI3CiBhcGlfdmVyc2lvbjogMQogdGhyZWFkc2FmZTogZmFsc2UKQEAg
LTksMTIgKzksNiBAQCBoYW5kbGVyczoKICAgc3RhdGljX2ZpbGVzOiBmYXZpY29uLmljbwogICB1
cGxvYWQ6IGZhdmljb25cLmljbwogCi0tIHVybDogL2FkbWluLyguK1wuaHRtbCkKLSAgc3RhdGlj
X2ZpbGVzOiBzdGF0aWMvXDEKLSAgdXBsb2FkOiBzdGF0aWMKLSAgc2VjdXJlOiBhbHdheXMKLSAg
bG9naW46IGFkbWluCi0KIC0gdXJsOiAvCiAgIHN0YXRpY19maWxlczogaW5kZXguaHRtbAogICB1
cGxvYWQ6IGluZGV4Lmh0bWwKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29t
L2JhY2tlbmRzLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3Bv
dC5jb20vYmFja2VuZHMueWFtbAkocmV2aXNpb24gMCkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJm
LmFwcHNwb3QuY29tL2JhY2tlbmRzLnlhbWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
YmFja2VuZHM6CistIG1vZGVsLW1hbmlwdWxhdG9yCisgIG9wdGlvbnM6IGR5bmFtaWMKSW5kZXg6
IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL21haW4ucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbWFpbi5weQkocmV2aXNpb24gMTA4OTMx
KQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbWFpbi5weQkod29ya2luZyBj
b3B5KQpAQCAtMjAsOCArMjAsOSBAQCBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBp
bXBvcnQgCiAKIGltcG9ydCBqc29uCiAKLWZyb20gYWRtaW5faGFuZGxlcnMgaW1wb3J0IElzQWRt
aW5IYW5kbGVyCiBmcm9tIGFkbWluX2hhbmRsZXJzIGltcG9ydCBBZG1pbkRhc2hib2FyZEhhbmRs
ZXIKK2Zyb20gYWRtaW5faGFuZGxlcnMgaW1wb3J0IElzQWRtaW5IYW5kbGVyCitmcm9tIGFkbWlu
X2hhbmRsZXJzIGltcG9ydCBNZXJnZVRlc3RzSGFuZGxlcgogZnJvbSBjb250cm9sbGVyIGltcG9y
dCBDYWNoZWREYXNoYm9hcmRIYW5kbGVyCiBmcm9tIGNvbnRyb2xsZXIgaW1wb3J0IENhY2hlZE1h
bmlmZXN0SGFuZGxlcgogZnJvbSBjb250cm9sbGVyIGltcG9ydCBDYWNoZWRSdW5zSGFuZGxlcgpA
QCAtMzMsMTEgKzM0LDEwIEBAIGZyb20gcmVwb3J0X2hhbmRsZXIgaW1wb3J0IFJlcG9ydEhhbmRs
ZXIKIGZyb20gcmVwb3J0X2hhbmRsZXIgaW1wb3J0IEFkbWluUmVwb3J0SGFuZGxlcgogZnJvbSBy
ZXBvcnRfcHJvY2Vzc19oYW5kbGVyIGltcG9ydCBSZXBvcnRQcm9jZXNzSGFuZGxlcgogZnJvbSBy
ZXBvcnRfbG9nc19oYW5kbGVyIGltcG9ydCBSZXBvcnRMb2dzSGFuZGxlcgotZnJvbSBtZXJnZV90
ZXN0c19oYW5kbGVyIGltcG9ydCBNZXJnZVRlc3RzSGFuZGxlcgogCiByb3V0ZXMgPSBbCiAgICAg
KCcvYWRtaW4vcmVwb3J0Lz8nLCBBZG1pblJlcG9ydEhhbmRsZXIpLAotICAgICgnL2FkbWluL21l
cmdlLXRlc3RzLz8nLCBNZXJnZVRlc3RzSGFuZGxlciksCisgICAgKHInL2FkbWluL21lcmdlLXRl
c3RzKD86LyguKikpPycsIE1lcmdlVGVzdHNIYW5kbGVyKSwKICAgICAoJy9hZG1pbi9yZXBvcnQt
bG9ncy8/JywgUmVwb3J0TG9nc0hhbmRsZXIpLAogICAgICgnL2FkbWluL2NyZWF0ZS8oLiopJywg
Q3JlYXRlSGFuZGxlciksCiAgICAgKHInL2FkbWluLyhbQS1aYS16XC1dKiknLCBBZG1pbkRhc2hi
b2FyZEhhbmRsZXIpLApJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vbWVy
Z2VfdGVzdHNfaGFuZGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5h
cHBzcG90LmNvbS9tZXJnZV90ZXN0c19oYW5kbGVyLnB5CShyZXZpc2lvbiAxMDg5MzEpCisrKyBX
ZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tZXJnZV90ZXN0c19oYW5kbGVyLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDc4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCB3ZWJhcHAyCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0
LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUKLQotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotCi1mcm9t
IGNvbnRyb2xsZXIgaW1wb3J0IHNjaGVkdWxlX3J1bnNfdXBkYXRlCi1mcm9tIGNvbnRyb2xsZXIg
aW1wb3J0IHNjaGVkdWxlX2Rhc2hib2FyZF91cGRhdGUKLWZyb20gY29udHJvbGxlciBpbXBvcnQg
c2NoZWR1bGVfbWFuaWZlc3RfdXBkYXRlCi1mcm9tIG1vZGVscyBpbXBvcnQgVGVzdAotZnJvbSBt
b2RlbHMgaW1wb3J0IFRlc3RSZXN1bHQKLWZyb20gbW9kZWxzIGltcG9ydCBkZWxldGVfbW9kZWxf
d2l0aF9udW1lcmljX2lkX2hvbGRlcgotCi0KLWNsYXNzIE1lcmdlVGVzdHNIYW5kbGVyKHdlYmFw
cDIuUmVxdWVzdEhhbmRsZXIpOgotICAgIGRlZiBwb3N0KHNlbGYpOgotICAgICAgICBzZWxmLnJl
c3BvbnNlLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRm
LTgnOwotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBheWxvYWQgPSBqc29uLmxvYWRzKHNl
bGYucmVxdWVzdC5ib2R5KQotICAgICAgICAgICAgbWVyZ2UgPSBwYXlsb2FkLmdldCgnbWVyZ2Un
LCAnJykKLSAgICAgICAgICAgIGludG8gPSBwYXlsb2FkLmdldCgnaW50bycsICcnKQotICAgICAg
ICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiRmFpbGVkIHRv
IHBhcnNlIHRoZSBwYXlsb2FkOiAlcyIgJSBzZWxmLnJlcXVlc3QuYm9keSkKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIG1lcmdlID0gVGVzdC5nZXRfYnlfa2V5X25hbWUobWVyZ2UpCi0g
ICAgICAgIGludG8gPSBUZXN0LmdldF9ieV9rZXlfbmFtZShpbnRvKQotICAgICAgICBpZiBub3Qg
bWVyZ2Ugb3Igbm90IGludG86Ci0gICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgn
SW52YWxpZCB0ZXN0IG5hbWVzJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG1lcmdl
ZF9yZXN1bHRzID0gVGVzdFJlc3VsdC5hbGwoKQotICAgICAgICBtZXJnZWRfcmVzdWx0cy5maWx0
ZXIoJ25hbWUgPScsIG1lcmdlLm5hbWUpCi0gICAgICAgIGJyYW5jaGVzX2FuZF9wbGF0Zm9ybXNf
dG9fdXBkYXRlID0gc2V0KCkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBtZXJnZWRfcmVzdWx0czoK
LSAgICAgICAgICAgIGJyYW5jaGVzX2FuZF9wbGF0Zm9ybXNfdG9fdXBkYXRlLmFkZCgocmVzdWx0
LmJ1aWxkLmJyYW5jaC5pZCwgcmVzdWx0LmJ1aWxkLnBsYXRmb3JtLmlkKSkKLSAgICAgICAgICAg
IHJlc3VsdC5uYW1lID0gaW50by5uYW1lCi0gICAgICAgICAgICByZXN1bHQucHV0KCkKLQotICAg
ICAgICBmb3IgYnJhbmNoX2lkLCBwbGF0Zm9ybV9pZCBpbiBicmFuY2hlc19hbmRfcGxhdGZvcm1z
X3RvX3VwZGF0ZToKLSAgICAgICAgICAgIHNjaGVkdWxlX3J1bnNfdXBkYXRlKGludG8uaWQsIGJy
YW5jaF9pZCwgcGxhdGZvcm1faWQpCi0KLSAgICAgICAgc2NoZWR1bGVfZGFzaGJvYXJkX3VwZGF0
ZSgpCi0gICAgICAgIHNjaGVkdWxlX21hbmlmZXN0X3VwZGF0ZSgpCi0KLSAgICAgICAgZGVsZXRl
X21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIobWVyZ2UpCi0KLSAgICAgICAgc2VsZi5yZXNw
b25zZS5vdXQud3JpdGUoJ09LJykKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3Qu
Y29tL21vZGVscy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90
LmNvbS9tb2RlbHMucHkJKHJldmlzaW9uIDEwODkzMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJm
LmFwcHNwb3QuY29tL21vZGVscy5weQkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw4IEBA
IGNsYXNzIEJ1aWxkKGRiLk1vZGVsKToKIGNsYXNzIFRlc3QoZGIuTW9kZWwpOgogICAgIGlkID0g
ZGIuSW50ZWdlclByb3BlcnR5KHJlcXVpcmVkPVRydWUpCiAgICAgbmFtZSA9IGRiLlN0cmluZ1By
b3BlcnR5KHJlcXVpcmVkPVRydWUpCisgICAgIyBGSVhNRTogU3RvcmluZyBicmFuY2hlcyBhbmQg
cGxhdGZvcm1zIHNlcGFyYXRlbHkgaXMgZmxhd2VkIHNpbmNlIGEgdGVzdCBtYXliZSBhdmFpbGFi
bGUgb24KKyAgICAjIG9uZSBwbGF0Zm9ybSBidXQgb25seSBvbiBzb21lIGJyYW5jaCBhbmQgdmlj
ZSB2ZXJzYS4KICAgICBicmFuY2hlcyA9IGRiLkxpc3RQcm9wZXJ0eShkYi5LZXkpCiAgICAgcGxh
dGZvcm1zID0gZGIuTGlzdFByb3BlcnR5KGRiLktleSkKIApAQCAtMTcwLDYgKzE3MiwyNiBAQCBj
bGFzcyBUZXN0KGRiLk1vZGVsKToKIAogICAgICAgICByZXR1cm4gY3JlYXRlX2luX3RyYW5zYWN0
aW9uX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIoZXhlY3V0ZSkgb3IgZXhpc3RpbmdfdGVzdFswXQog
CisgICAgZGVmIG1lcmdlKHNlbGYsIG90aGVyKToKKyAgICAgICAgYXNzZXJ0IHNlbGYua2V5KCkg
IT0gb3RoZXIua2V5KCkKKworICAgICAgICBtZXJnZWRfcmVzdWx0cyA9IFRlc3RSZXN1bHQuYWxs
KCkKKyAgICAgICAgbWVyZ2VkX3Jlc3VsdHMuZmlsdGVyKCduYW1lID0nLCBvdGhlci5uYW1lKQor
CisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBiZSBkb2luZyB0aGlzIGNoZWNrIGluIGEgdHJh
bnNhY3Rpb24gYnV0IG9ubHkgYW5jZXN0b3IgcXVlcmllcyBhcmUgYWxsb3dlZAorICAgICAgICBm
b3IgcmVzdWx0IGluIG1lcmdlZF9yZXN1bHRzOgorICAgICAgICAgICAgaWYgVGVzdFJlc3VsdC5n
ZXRfYnlfa2V5X25hbWUoVGVzdFJlc3VsdC5rZXlfbmFtZShyZXN1bHQuYnVpbGQsIHNlbGYubmFt
ZSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgYnJhbmNoZXNfYW5k
X3BsYXRmb3Jtc190b191cGRhdGUgPSBzZXQoKQorICAgICAgICBmb3IgcmVzdWx0IGluIG1lcmdl
ZF9yZXN1bHRzOgorICAgICAgICAgICAgYnJhbmNoZXNfYW5kX3BsYXRmb3Jtc190b191cGRhdGUu
YWRkKChyZXN1bHQuYnVpbGQuYnJhbmNoLmlkLCByZXN1bHQuYnVpbGQucGxhdGZvcm0uaWQpKQor
ICAgICAgICAgICAgcmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZShzZWxmLm5hbWUp
CisKKyAgICAgICAgZGVsZXRlX21vZGVsX3dpdGhfbnVtZXJpY19pZF9ob2xkZXIob3RoZXIpCisK
KyAgICAgICAgcmV0dXJuIGJyYW5jaGVzX2FuZF9wbGF0Zm9ybXNfdG9fdXBkYXRlCisKIAogY2xh
c3MgVGVzdFJlc3VsdChkYi5Nb2RlbCk6CiAgICAgbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KHJl
cXVpcmVkPVRydWUpCkBAIC0yMDEsNiArMjIzLDEzIEBAIGNsYXNzIFRlc3RSZXN1bHQoZGIuTW9k
ZWwpOgogICAgICAgICAgICAgdmFsdWVNZWRpYW49X2Zsb2F0X29yX25vbmUocmVzdWx0LCAnbWVk
aWFuJyksIHZhbHVlU3RkZXY9X2Zsb2F0X29yX25vbmUocmVzdWx0LCAnc3RkZXYnKSwKICAgICAg
ICAgICAgIHZhbHVlTWluPV9mbG9hdF9vcl9ub25lKHJlc3VsdCwgJ21pbicpLCB2YWx1ZU1heD1f
ZmxvYXRfb3Jfbm9uZShyZXN1bHQsICdtYXgnKSkKIAorICAgIGRlZiByZXBsYWNlX3RvX2NoYW5n
ZV90ZXN0X25hbWUoc2VsZiwgbmV3X25hbWUpOgorICAgICAgICBjbG9uZSA9IFRlc3RSZXN1bHQo
a2V5X25hbWU9VGVzdFJlc3VsdC5rZXlfbmFtZShzZWxmLmJ1aWxkLCBuZXdfbmFtZSksIG5hbWU9
bmV3X25hbWUsIGJ1aWxkPXNlbGYuYnVpbGQsCisgICAgICAgICAgICB2YWx1ZT1zZWxmLnZhbHVl
LCB2YWx1ZU1lZGlhbj1zZWxmLnZhbHVlTWVkaWFuLCB2YWx1ZVN0ZGV2PXNlbGYudmFsdWVNaW4s
IHZhbHVlTWluPXNlbGYudmFsdWVNaW4sIHZhbHVlTWF4PXNlbGYudmFsdWVNYXgpCisgICAgICAg
IGNsb25lLnB1dCgpCisgICAgICAgIHNlbGYuZGVsZXRlKCkKKyAgICAgICAgcmV0dXJuIGNsb25l
CisKIAogY2xhc3MgUmVwb3J0TG9nKGRiLk1vZGVsKToKICAgICB0aW1lc3RhbXAgPSBkYi5EYXRl
VGltZVByb3BlcnR5KHJlcXVpcmVkPVRydWUpCkluZGV4OiBXZWJzaXRlcy93ZWJraXQtcGVyZi5h
cHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Vi
a2l0LXBlcmYuYXBwc3BvdC5jb20vbW9kZWxzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMDg5MzEp
CisrKyBXZWJzaXRlcy93ZWJraXQtcGVyZi5hcHBzcG90LmNvbS9tb2RlbHNfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxOCBAQCBjbGFzcyBEYXRhU3RvcmVUZXN0c0Jh
c2UodW5pdHRlc3QuVGVzdENhCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vZGVsLmFs
bCgpLmZldGNoKDUpKSwgMCkKIAogICAgIGRlZiBhc3NlcnRPbmx5SW5zdGFuY2Uoc2VsZiwgb25s
eV9pbnN0YXNuY2UpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvbmx5X2luc3Rhc25j
ZS5fX2NsYXNzX18uYWxsKCkuZmV0Y2goNSkpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
b25seV9pbnN0YXNuY2UuX19jbGFzc19fLmdldChvbmx5X2luc3Rhc25jZS5rZXkoKSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlcyhbb25seV9pbnN0YXNuY2VdKQorCisgICAgZGVm
IGFzc2VydE9ubHlJbnN0YW5jZXMoc2VsZiwgZXhwZWN0ZWRfaW5zdGFuY2VzKToKKyAgICAgICAg
YWN0dWFsX2luc3RhbmNlcyA9IGV4cGVjdGVkX2luc3RhbmNlc1swXS5fX2NsYXNzX18uYWxsKCku
ZmV0Y2gobGVuKGV4cGVjdGVkX2luc3RhbmNlcykgKyAxKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsVW5vcmRlcmVkTW9kZWxMaXN0KGFjdHVhbF9pbnN0YW5jZXMsIGV4cGVjdGVkX2luc3RhbmNl
cykKKworICAgIGRlZiBhc3NlcnRFcXVhbFVub3JkZXJlZE1vZGVsTGlzdChzZWxmLCBsaXN0MSwg
bGlzdDIpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTGlzdChbaXRlbS5rZXko
KSBmb3IgaXRlbSBpbiBsaXN0MV0sIFtpdGVtLmtleSgpIGZvciBpdGVtIGluIGxpc3QxXSkKIAog
ICAgIGRlZiBhc3NlcnRFcXVhbFVub3JkZXJlZExpc3Qoc2VsZiwgbGlzdDEsIGxpc3QyKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdDEpLCBzZXQobGlzdDIpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0MSksIGxlbihsaXN0MikpCiAKIAogY2xhc3MgSGVscGVy
VGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlKToKQEAgLTIwMCw2ICsyMDcsMTIgQEAgZGVmIF9jcmVh
dGVfc29tZV9idWlsZGVyKCk6CiAgICAgcmV0dXJuIGJyYW5jaCwgcGxhdGZvcm0sIG1vZGVscy5C
dWlsZGVyLmdldChidWlsZGVyX2tleSkKIAogCitkZWYgX2NyZWF0ZV9idWlsZChicmFuY2gsIHBs
YXRmb3JtLCBidWlsZGVyLCBrZXlfbmFtZT0nc29tZS1idWlsZCcpOgorICAgIGJ1aWxkX2tleSA9
IG1vZGVscy5CdWlsZChrZXlfbmFtZT1rZXlfbmFtZSwgYnJhbmNoPWJyYW5jaCwgcGxhdGZvcm09
cGxhdGZvcm0sIGJ1aWxkZXI9YnVpbGRlciwKKyAgICAgICAgYnVpbGROdW1iZXI9MSwgcmV2aXNp
b249MTAwLCB0aW1lc3RhbXA9ZGF0ZXRpbWUubm93KCkpLnB1dCgpCisgICAgcmV0dXJuIG1vZGVs
cy5CdWlsZC5nZXQoYnVpbGRfa2V5KQorCisKIGNsYXNzIEJ1aWxkVGVzdHMoRGF0YVN0b3JlVGVz
dHNCYXNlKToKICAgICBkZWYgdGVzdF9nZXRfb3JfaW5zZXJ0X2Zyb21fbG9nKHNlbGYpOgogICAg
ICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQpA
QCAtMjU0LDE2ICsyNjcsNDIgQEAgY2xhc3MgVGVzdE1vZGVsVGVzdHMoRGF0YVN0b3JlVGVzdHNC
YXNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsVW5vcmRlcmVkTGlzdCh0ZXN0LmJyYW5jaGVz
LCBbYnJhbmNoLmtleSgpLCBvdGhlcl9icmFuY2gua2V5KCldKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsVW5vcmRlcmVkTGlzdCh0ZXN0LnBsYXRmb3JtcywgW3BsYXRmb3JtLmtleSgpLCBvdGhl
cl9wbGF0Zm9ybS5rZXkoKV0pCiAKLQotY2xhc3MgVGVzdFJlc3VsdFRlc3RzKERhdGFTdG9yZVRl
c3RzQmFzZSk6Ci0gICAgZGVmIF9jcmVhdGVfYnVpbGQoc2VsZik6CisgICAgZGVmIHRlc3RfbWVy
Z2Uoc2VsZik6CiAgICAgICAgIGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIgPSBfY3JlYXRlX3Nv
bWVfYnVpbGRlcigpCi0gICAgICAgIGJ1aWxkX2tleSA9IG1vZGVscy5CdWlsZChrZXlfbmFtZT0n
c29tZS1idWlsZCcsIGJyYW5jaD1icmFuY2gsIHBsYXRmb3JtPXBsYXRmb3JtLCBidWlsZGVyPWJ1
aWxkZXIsCi0gICAgICAgICAgICBidWlsZE51bWJlcj0xLCByZXZpc2lvbj0xMDAsIHRpbWVzdGFt
cD1kYXRldGltZS5ub3coKSkucHV0KCkKLSAgICAgICAgcmV0dXJuIG1vZGVscy5CdWlsZC5nZXQo
YnVpbGRfa2V5KQorICAgICAgICBzb21lX2J1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBs
YXRmb3JtLCBidWlsZGVyKQorICAgICAgICBzb21lX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0
LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignc29tZS10ZXN0Jywgc29tZV9idWlsZCwg
NTApCisgICAgICAgIHNvbWVfdGVzdCA9IG1vZGVscy5UZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ3Nv
bWUtdGVzdCcsIGJyYW5jaCwgcGxhdGZvcm0pCisKKyAgICAgICAgb3RoZXJfYnVpbGQgPSBfY3Jl
YXRlX2J1aWxkKGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIsICdvdGhlci1idWlsZCcpCisgICAg
ICAgIG90aGVyX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9w
YXJzZWRfanNvbignb3RoZXItdGVzdCcsIG90aGVyX2J1aWxkLCAzMCkKKyAgICAgICAgb3RoZXJf
dGVzdCA9IG1vZGVscy5UZXN0LnVwZGF0ZV9vcl9pbnNlcnQoJ290aGVyLXRlc3QnLCBicmFuY2gs
IHBsYXRmb3JtKQorCisgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlcyhbc29tZV9yZXN1
bHQsIG90aGVyX3Jlc3VsdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc29tZV9yZXN1
bHQua2V5KCksIG90aGVyX3Jlc3VsdC5rZXkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5z
dGFuY2VzKFtzb21lX3Rlc3QsIG90aGVyX3Rlc3RdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEFzc2VydGlvbkVycm9yLCBzb21lX3Rlc3QubWVyZ2UsIChzb21lX3Rlc3QpKQorICAgICAg
ICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZXMoW3NvbWVfdGVzdCwgb3RoZXJfdGVzdF0pCisKKyAg
ICAgICAgc29tZV90ZXN0Lm1lcmdlKG90aGVyX3Rlc3QpCisgICAgICAgIHJlc3VsdHNfZm9yX3Nv
bWVfdGVzdCA9IG1vZGVscy5UZXN0UmVzdWx0LmFsbCgpCisgICAgICAgIHJlc3VsdHNfZm9yX3Nv
bWVfdGVzdC5maWx0ZXIoJ25hbWUgPScsICdzb21lLXRlc3QnKQorICAgICAgICByZXN1bHRzX2Zv
cl9zb21lX3Rlc3QgPSByZXN1bHRzX2Zvcl9zb21lX3Rlc3QuZmV0Y2goNSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0c19mb3Jfc29tZV90ZXN0KSwgMikKKworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3VsdHNfZm9yX3NvbWVfdGVzdFswXS5uYW1lLCAnc29tZS10ZXN0
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzX2Zvcl9zb21lX3Rlc3RbMV0ubmFt
ZSwgJ3NvbWUtdGVzdCcpCisKKyAgICAgICAgaWYgcmVzdWx0c19mb3Jfc29tZV90ZXN0WzBdLnZh
bHVlID09IDUwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzX2Zvcl9zb21l
X3Rlc3RbMV0udmFsdWUsIDMwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHRzX2Zvcl9zb21lX3Rlc3RbMV0udmFsdWUsIDUwKQorCiAKK2NsYXNzIFRl
c3RSZXN1bHRUZXN0cyhEYXRhU3RvcmVUZXN0c0Jhc2UpOgogICAgIGRlZiB0ZXN0X2dldF9vcl9p
bnNlcnRfdmFsdWUoc2VsZik6Ci0gICAgICAgIGJ1aWxkID0gc2VsZi5fY3JlYXRlX2J1aWxkKCkK
KyAgICAgICAgYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlciA9IF9jcmVhdGVfc29tZV9idWlsZGVy
KCkKKyAgICAgICAgYnVpbGQgPSBfY3JlYXRlX2J1aWxkKGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxk
ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGhlcmVJc05vSW5zdGFuY2VPZihtb2RlbHMuVGVzdFJl
c3VsdCkKICAgICAgICAgcmVzdWx0ID0gbW9kZWxzLlRlc3RSZXN1bHQuZ2V0X29yX2luc2VydF9m
cm9tX3BhcnNlZF9qc29uKCdzb21lLXRlc3QnLCBidWlsZCwgNTApCiAgICAgICAgIHNlbGYuYXNz
ZXJ0T25seUluc3RhbmNlKHJlc3VsdCkKQEAgLTI3Niw3ICszMTUsOCBAQCBjbGFzcyBUZXN0UmVz
dWx0VGVzdHMoRGF0YVN0b3JlVGVzdHNCYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
dWx0LnZhbHVlTWF4LCBOb25lKQogCiAgICAgZGVmIHRlc3RfZ2V0X29yX2luc2VydF9zdGF0X3Zh
bHVlKHNlbGYpOgotICAgICAgICBidWlsZCA9IHNlbGYuX2NyZWF0ZV9idWlsZCgpCisgICAgICAg
IGJyYW5jaCwgcGxhdGZvcm0sIGJ1aWxkZXIgPSBfY3JlYXRlX3NvbWVfYnVpbGRlcigpCisgICAg
ICAgIGJ1aWxkID0gX2NyZWF0ZV9idWlsZChicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyKQogICAg
ICAgICBzZWxmLmFzc2VydFRoZXJlSXNOb0luc3RhbmNlT2YobW9kZWxzLlRlc3RSZXN1bHQpCiAg
ICAgICAgIHJlc3VsdCA9IG1vZGVscy5UZXN0UmVzdWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJz
ZWRfanNvbignc29tZS10ZXN0JywgYnVpbGQsCiAgICAgICAgICAgICB7ImF2ZyI6IDQwLCAibWVk
aWFuIjogIjQwLjEiLCAic3RkZXYiOiAzLjI1LCAibWluIjogMzAuNSwgIm1heCI6IDQ1fSkKQEAg
LTI4OSw2ICszMjksNjQgQEAgY2xhc3MgVGVzdFJlc3VsdFRlc3RzKERhdGFTdG9yZVRlc3RzQmFz
ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC52YWx1ZU1pbiwgMzAuNSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudmFsdWVNYXgsIDQ1KQogCisgICAgZGVmIHRlc3Rf
cmVwbGFjZV90b19jaGFuZ2VfdGVzdF9uYW1lKHNlbGYpOgorICAgICAgICBicmFuY2gsIHBsYXRm
b3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQorICAgICAgICBidWlsZCA9IF9j
cmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0KQorICAgICAgICByZXN1bHQg
PSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUt
dGVzdCcsIGJ1aWxkLCA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UocmVzdWx0
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5uYW1lLCAnc29tZS10ZXN0JykKKwor
ICAgICAgICBuZXdfcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rlc3RfbmFtZSgn
b3RoZXItdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCBuZXdfcmVz
dWx0KQorICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShuZXdfcmVzdWx0KQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3Jlc3VsdC5uYW1lLCAnb3RoZXItdGVzdCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3Jlc3VsdC5idWlsZC5rZXkoKSwgcmVzdWx0LmJ1aWxk
LmtleSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19yZXN1bHQudmFsdWUsIHJlc3Vs
dC52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcmVzdWx0LnZhbHVlTWVkaWFu
LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19yZXN1bHQudmFsdWVTdGRldiwg
Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcmVzdWx0LnZhbHVlTWluLCBOb25l
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19yZXN1bHQudmFsdWVNYXgsIE5vbmUpCisK
KyAgICBkZWYgdGVzdF9yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWVfd2l0aF9zdGF0X3ZhbHVl
KHNlbGYpOgorICAgICAgICBicmFuY2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21l
X2J1aWxkZXIoKQorICAgICAgICBidWlsZCA9IF9jcmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9y
bSwgYnVpbGRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVs
cy5UZXN0UmVzdWx0KQorICAgICAgICByZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3Jf
aW5zZXJ0X2Zyb21fcGFyc2VkX2pzb24oJ3NvbWUtdGVzdCcsIGJ1aWxkLAorICAgICAgICAgICAg
eyJhdmciOiA0MCwgIm1lZGlhbiI6ICI0MC4xIiwgInN0ZGV2IjogMy4yNSwgIm1pbiI6IDMwLjUs
ICJtYXgiOiA0NX0pCisgICAgICAgIHNlbGYuYXNzZXJ0T25seUluc3RhbmNlKHJlc3VsdCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubmFtZSwgJ3NvbWUtdGVzdCcpCisKKyAgICAg
ICAgbmV3X3Jlc3VsdCA9IHJlc3VsdC5yZXBsYWNlX3RvX2NoYW5nZV90ZXN0X25hbWUoJ290aGVy
LXRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdCwgbmV3X3Jlc3VsdCkK
KyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFuY2UobmV3X3Jlc3VsdCkKKworICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19yZXN1bHQubmFtZSwgJ290aGVyLXRlc3QnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG5ld19yZXN1bHQuYnVpbGQua2V5KCksIHJlc3VsdC5idWlsZC5rZXko
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcmVzdWx0LnZhbHVlLCByZXN1bHQudmFs
dWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnZhbHVlLCA0MC4wKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC52YWx1ZU1lZGlhbiwgNDAuMSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZXN1bHQudmFsdWVTdGRldiwgMy4yNSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXN1bHQudmFsdWVNaW4sIDMwLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzdWx0LnZhbHVlTWF4LCA0NSkKKworICAgIGRlZiB0ZXN0X3JlcGxhY2VfdG9fY2hhbmdlX3Rl
c3RfbmFtZV9vdmVycmlkZXNfY29uZmxpY3RpbmdfcmVzdWx0KHNlbGYpOgorICAgICAgICBicmFu
Y2gsIHBsYXRmb3JtLCBidWlsZGVyID0gX2NyZWF0ZV9zb21lX2J1aWxkZXIoKQorICAgICAgICBi
dWlsZCA9IF9jcmVhdGVfYnVpbGQoYnJhbmNoLCBwbGF0Zm9ybSwgYnVpbGRlcikKKyAgICAgICAg
c2VsZi5hc3NlcnRUaGVyZUlzTm9JbnN0YW5jZU9mKG1vZGVscy5UZXN0UmVzdWx0KQorICAgICAg
ICByZXN1bHQgPSBtb2RlbHMuVGVzdFJlc3VsdC5nZXRfb3JfaW5zZXJ0X2Zyb21fcGFyc2VkX2pz
b24oJ3NvbWUtdGVzdCcsIGJ1aWxkLCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRPbmx5SW5zdGFu
Y2UocmVzdWx0KQorCisgICAgICAgIGNvbmZsaWN0aW5nX3Jlc3VsdCA9IG1vZGVscy5UZXN0UmVz
dWx0LmdldF9vcl9pbnNlcnRfZnJvbV9wYXJzZWRfanNvbignb3RoZXItdGVzdCcsIGJ1aWxkLCAx
MCkKKworICAgICAgICBuZXdfcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2VfdG9fY2hhbmdlX3Rlc3Rf
bmFtZSgnb3RoZXItdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCBu
ZXdfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydE9ubHlJbnN0YW5jZShuZXdfcmVzdWx0KQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3Jlc3VsdC5uYW1lLCAnb3RoZXItdGVzdCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWxzLlRlc3RSZXN1bHQuZ2V0KGNvbmZsaWN0
aW5nX3Jlc3VsdC5rZXkoKSkudmFsdWUsIDIwKQorCiAKIGNsYXNzIFJlcG9ydExvZ1Rlc3RzKERh
dGFTdG9yZVRlc3RzQmFzZSk6CiAgICAgZGVmIF9jcmVhdGVfbG9nX3dpdGhfcGF5bG9hZChzZWxm
LCBwYXlsb2FkKToKSW5kZXg6IFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3QuY29tL2Nzcy9h
ZG1pbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20v
Y3NzL2FkbWluLmNzcwkocmV2aXNpb24gMTA4OTMxKQorKysgV2Vic2l0ZXMvd2Via2l0LXBlcmYu
YXBwc3BvdC5jb20vY3NzL2FkbWluLmNzcwkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMyBA
QCBodG1sIHsKICAgICBvdmVyZmxvdzogYXV0bzsKIH0KIAotI3N1bW1hcnkgewotICAgIG1hcmdp
bi10b3A6IDQ5cHg7Cisjc3VtbWFyeSwgI21hbnVhbC1zdWJtaXNzaW9uIHsKICAgICBmb250LXNp
emU6IDE0cHg7CiAgICAgbGluZS1oZWlnaHQ6IDM2cHg7Cit9CisKKyNzdW1tYXJ5IHsKKyAgICBt
YXJnaW4tdG9wOiA0OXB4OwogICAgIGRpc3BsYXk6IHRhYmxlOwogICAgIGJvcmRlci1jb2xsYXBz
ZTogY29sbGFwc2U7CiB9CkBAIC0xOCw3ICsyMSw2IEBAIHNlY3Rpb24gewogICAgIGJvcmRlcjog
MXB4IHNvbGlkIGxpZ2h0Z3JleTsKICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAg
IG1pbi1oZWlnaHQ6IDMwMHB4OwotICAgIG1heC13aWR0aDogNDAwcHg7CiB9CiAKIGgyIHsKQEAg
LTgyLDYgKzg0LDE1IEBAIGZvcm0gZGQgewogICAgIHdpZHRoOiAxNTBweDsKIH0KIAorI21hbnVh
bC1zdWJtaXNzaW9uIGZvcm0geworICAgIHBhZGRpbmc6IDA7Cit9CisjbWFudWFsLXN1Ym1pc3Np
b24gdGV4dGFyZWEgeworICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgZm9udC1zaXpl
OiAxNHB4OworICAgIGJvcmRlcjogbm9uZTsKK30KKwogI2Zvb3RlciB7CiAgICAgbWFyZ2luOiAx
MHB4OwogfQpJbmRleDogV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanMvYWRtaW4u
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvd2Via2l0LXBlcmYuYXBwc3BvdC5jb20vanMvYWRt
aW4uanMJKHJldmlzaW9uIDEwODkzMSkKKysrIFdlYnNpdGVzL3dlYmtpdC1wZXJmLmFwcHNwb3Qu
Y29tL2pzL2FkbWluLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01OSw5ICs1OSwxNSBAQCAkKCdmb3Jt
JykudHJpZ2dlcigncmVsb2FkJyk7CiAkKCdmb3JtJykuYmluZCgnc3VibWl0JywgZnVuY3Rpb24g
KGV2ZW50KSB7CiAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIAotICAgIHZhciBjb250ZW50
cyA9IHt9Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmVsZW1lbnRzLmxlbmd0aDsgaSsr
KQotICAgICAgICBjb250ZW50c1t0aGlzLmVsZW1lbnRzW2ldLm5hbWVdID0gdGhpcy5lbGVtZW50
c1tpXS52YWx1ZTsKKyAgICB2YXIgcGF5bG9hZDsKKyAgICBpZiAodGhpcy5wYXlsb2FkKQorICAg
ICAgICBwYXlsb2FkID0gdGhpcy5wYXlsb2FkLnZhbHVlOworICAgIGVsc2UgeworICAgICAgICB2
YXIgY29udGVudHMgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmVsZW1l
bnRzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgY29udGVudHNbdGhpcy5lbGVtZW50c1tpXS5u
YW1lXSA9IHRoaXMuZWxlbWVudHNbaV0udmFsdWU7CisgICAgICAgIHBheWxvYWQgPSBKU09OLnN0
cmluZ2lmeShjb250ZW50cyk7CisgICAgfQogCiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsKICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewpAQCAtNzEs
MTAgKzc3LDI0IEBAICQoJ2Zvcm0nKS5iaW5kKCdzdWJtaXQnLCBmdW5jdGlvbiAoZXZlbnQKICAg
ICAgICAgICAgIGVycm9yKCdIVFRQIHN0YXR1czogJyArIHhoci5zdGF0dXMpOwogICAgICAgICBl
bHNlIGlmICh4aHIucmVzcG9uc2VUZXh0ICE9ICdPSycpCiAgICAgICAgICAgICBlcnJvcih4aHIu
cmVzcG9uc2VUZXh0KTsKLSAgICAgICAgCiAgICAgfQogICAgIHhoci5vcGVuKHRoaXMubWV0aG9k
LCB0aGlzLmFjdGlvbiwgdHJ1ZSk7Ci0gICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoY29udGVu
dHMpKTsKKyAgICB4aHIuc2VuZChwYXlsb2FkKTsKIAogICAgICQodGhpcykudHJpZ2dlcigncmVs
b2FkJyk7CiB9KTsKKworJCgnI21hbnVhbC1zdWJtaXNzaW9uIHRleHRhcmVhJykudmFsKEpTT04u
c3RyaW5naWZ5KHsKKyAgICAnYnJhbmNoJzogJ3dlYmtpdC10cnVuaycsCisgICAgJ3BsYXRmb3Jt
JzogJ2Nocm9taXVtLW1hYycsCisgICAgJ2J1aWxkZXItbmFtZSc6ICdDaHJvbWl1bSBNYWMgUmVs
ZWFzZSAoUGVyZiknLAorICAgICdidWlsZC1udW1iZXInOiAnMTIzJywKKyAgICAndGltZXN0YW1w
JzogcGFyc2VJbnQoRGF0ZS5ub3coKSAvIDEwMDApLAorICAgICd3ZWJraXQtcmV2aXNpb24nOiAx
MDQ4NTYsCisgICAgJ2Nocm9taXVtLXJldmlzaW9uJzogMTIzMDU5LAorICAgICdyZXN1bHRzJzoK
KyAgICAgICAgeworICAgICAgICAgICAgJ3dlYmtpdF9zdHlsZV90ZXN0JzogeydhdmcnOiAxMDAs
ICdtZWRpYW4nOiAxMDIsICdzdGRldic6IDUsICdtaW4nOiA5MCwgJ21heCc6IDExMH0sCisgICAg
ICAgICAgICAnc29tZV90ZXN0JzogNTQsCisgICAgICAgIH0sCit9LCBudWxsLCAnICAnKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>