<?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>91696</bug_id>
          
          <creation_ts>2012-07-18 17:16:16 -0700</creation_ts>
          <short_desc>nrwt: merge WebKitDriver into Driver</short_desc>
          <delta_ts>2012-07-18 18:21:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>673001</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-18 17:16:16 -0700</bug_when>
    <thetext>nrwt: merge WebKitDriver into Driver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673009</commentid>
    <comment_count>1</comment_count>
      <attachid>153145</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-18 17:23:39 -0700</bug_when>
    <thetext>Created attachment 153145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673036</commentid>
    <comment_count>2</comment_count>
      <attachid>153145</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-18 18:02:48 -0700</bug_when>
    <thetext>Comment on attachment 153145
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673051</commentid>
    <comment_count>3</comment_count>
      <attachid>153145</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 18:21:48 -0700</bug_when>
    <thetext>Comment on attachment 153145
Patch

Clearing flags on attachment: 153145

Committed r123058: &lt;http://trac.webkit.org/changeset/123058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673052</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 18:21:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153145</attachid>
            <date>2012-07-18 17:23:39 -0700</date>
            <delta_ts>2012-07-18 18:21:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91696-20120718172338.patch</filename>
            <type>text/plain</type>
            <size>57844</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWM5OGUxNzMwMzk5MWM3N2MzMzUwMGU0N2YwNzU4ZDdh
MTFkNmRiYS4uZTQ1OTc4MzcwYjEyMzgzODQxOTI2ZTJmYTRiYzBjZTVhZDU0ZjhiZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg4
IEBACiAyMDEyLTA3LTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IG1lcmdlIFdlYktpdERyaXZlciBpbnRvIERyaXZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2OTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBwYXJ0IG9mIG1lcmdpbmcgV2Vi
S2l0UG9ydCBpbnRvIFBvcnQsIHdlIGFsc28gc2hvdWxkIG1lcmdlCisgICAgICAgIFdlYktpdERy
aXZlciBpbnRvIERyaXZlciwgc2luY2UgYWxsIG9mIHRoZSBub24tdGVzdCBEcml2ZXJzIG5vdwor
ICAgICAgICBpbmhlcml0IGZyb20gV2ViS2l0RHJpdmVyLgorCisgICAgICAgIFRoZXJlIGFyZSBu
byBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgYW5kIGFsbCB0aGUgY2hhbmdlcyBz
aG91bGQKKyAgICAgICAgYmUgY292ZXJlZCBieSB0aGUgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAg
IChQb3J0Ll9kcml2ZXJfY2xhc3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2NoZWNrX2Zp
bGVfZXhpc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIpOgor
ICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKENocm9t
aXVtQW5kcm9pZERyaXZlci5fZHJ0X2NtZF9saW5lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWRfdW5pdHRlc3QucHk6CisgICAg
ICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXJUZXN0LnRlc3RfcmVhZF9wcm9tcHQpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5OgorICAgICAg
ICAoRHJpdmVyKToKKyAgICAgICAgKERyaXZlci5fX2luaXRfXyk6CisgICAgICAgIChEcml2ZXIu
X19kZWxfXyk6CisgICAgICAgIChEcml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoRHJpdmVyLmhh
c19jcmFzaGVkKToKKyAgICAgICAgKERyaXZlci5zdGFydCk6CisgICAgICAgIChEcml2ZXIuX3N0
YXJ0KToKKyAgICAgICAgKERyaXZlci5zdG9wKToKKyAgICAgICAgKERyaXZlci5jbWRfbGluZSk6
CisgICAgICAgIChEcml2ZXIuX2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2gpOgorICAgICAgICAoRHJp
dmVyLl9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KToKKyAgICAgICAgKERyaXZlci5fcmVhZF9m
aXJzdF9ibG9jayk6CisgICAgICAgIChEcml2ZXIuX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2sp
OgorICAgICAgICAoRHJpdmVyLl9yZWFkX2hlYWRlcik6CisgICAgICAgIChEcml2ZXIuX3Byb2Nl
c3Nfc3Rkb3V0X2xpbmUpOgorICAgICAgICAoRHJpdmVyLl9zdHJpcF9lb2YpOgorICAgICAgICAo
RHJpdmVyLl9yZWFkX2Jsb2NrKToKKyAgICAgICAgKENvbnRlbnRCbG9jayk6CisgICAgICAgIChD
b250ZW50QmxvY2suX19pbml0X18pOgorICAgICAgICAoQ29udGVudEJsb2NrLmRlY29kZV9jb250
ZW50KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZl
cl91bml0dGVzdC5weToKKyAgICAgICAgKERyaXZlclRlc3QubWFrZV9wb3J0KToKKyAgICAgICAg
KERyaXZlclRlc3QuX2Fzc2VydF93cmFwcGVyKToKKyAgICAgICAgKERyaXZlclRlc3QudGVzdF9y
ZWFkX2Jsb2NrKToKKyAgICAgICAgKERyaXZlclRlc3QpOgorICAgICAgICAoRHJpdmVyVGVzdC50
ZXN0X3JlYWRfYmluYXJ5X2Jsb2NrKToKKyAgICAgICAgKERyaXZlclRlc3QudGVzdF9yZWFkX2Jh
c2U2NF9ibG9jayk6CisgICAgICAgIChEcml2ZXJUZXN0LnRlc3Rfbm9fdGltZW91dCk6CisgICAg
ICAgIChEcml2ZXJUZXN0LnRlc3RfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaCk6CisgICAgICAgIChE
cml2ZXJUZXN0LnRlc3RfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaC5GYWtlU2VydmVyUHJvY2Vzcyk6
CisgICAgICAgIChEcml2ZXJUZXN0LnRlc3RfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaC5GYWtlU2Vy
dmVyUHJvY2Vzcy5fX2luaXRfXyk6CisgICAgICAgIChEcml2ZXJUZXN0LnRlc3RfY2hlY2tfZm9y
X2RyaXZlcl9jcmFzaC5GYWtlU2VydmVyUHJvY2Vzcy5waWQpOgorICAgICAgICAoRHJpdmVyVGVz
dC50ZXN0X2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2guRmFrZVNlcnZlclByb2Nlc3MubmFtZSk6Cisg
ICAgICAgIChEcml2ZXJUZXN0LnRlc3RfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaC5GYWtlU2VydmVy
UHJvY2Vzcy5oYXNfY3Jhc2hlZCk6CisgICAgICAgIChEcml2ZXJUZXN0LnRlc3RfY2hlY2tfZm9y
X2RyaXZlcl9jcmFzaC5GYWtlU2VydmVyUHJvY2Vzcy5zdG9wKToKKyAgICAgICAgKERyaXZlclRl
c3QudGVzdF9jaGVja19mb3JfZHJpdmVyX2NyYXNoLmFzc2VydF9jcmFzaCk6CisgICAgICAgIChE
cml2ZXJUZXN0LnRlc3RfY3JlYXRpbmdfYV9wb3J0X2RvZXNfbm90X3dyaXRlX3RvX3RoZV9maWxl
c3lzdGVtKToKKyAgICAgICAgKERyaXZlclRlc3QudGVzdF9zdG9wX2NsZWFuc191cF9wcm9wZXJs
eSk6CisgICAgICAgIChEcml2ZXJUZXN0LnRlc3RfdHdvX3N0YXJ0c19jbGVhbnNfdXBfcHJvcGVy
bHkpOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3MpOgorICAgICAgICAoTW9ja1NlcnZlclBy
b2Nlc3MuX19pbml0X18pOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3MuaGFzX2NyYXNoZWQp
OgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3MucmVhZF9zdGRvdXRfbGluZSk6CisgICAgICAg
IChNb2NrU2VydmVyUHJvY2Vzcy5yZWFkX3N0ZG91dCk6CisgICAgICAgIChNb2NrU2VydmVyUHJv
Y2Vzcy5yZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUpOgorICAgICAgICAoTW9ja1Nl
cnZlclByb2Nlc3Muc3RhcnQpOgorICAgICAgICAoTW9ja1NlcnZlclByb2Nlc3Muc3RvcCk6Cisg
ICAgICAgIChNb2NrU2VydmVyUHJvY2Vzcy5raWxsKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKFdlYktpdFBvcnQuX3JlYWRf
aW1hZ2VfZGlmZik6CisgICAgICAgIChXZWJLaXRQb3J0LnNraXBwZWRfbGF5b3V0X3Rlc3RzKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0
dGVzdC5weToKKyAgICAgICAgKHRlc3RfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQveHZmYmRyaXZlci5weToK
KyAgICAgICAgKFh2ZmJEcml2ZXIpOgorICAgICAgICAoWHZmYkRyaXZlci5zdG9wKToKKworMjAx
Mi0wNy0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICB0
ZXN0LXdlYmtpdHB5OiBydW4gdGVzdHMgaW4gcGFyYWxsZWwgYnkgZGVmYXVsdAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MjIKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDQ1MDc3
MDJiMjlmNmE2ZGE5OGNhNzEyMDUwZDM0NmE0MGM1ZDg4MDguLmMzZTliY2MxODE3ZjE3ZTRmZDFm
Y2U5MzJmZmYzYTJjY2ExNDBhZDYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTExODUsNyArMTE4NSw3IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKIAogICAgIGRlZiBfZHJpdmVyX2NsYXNzKHNlbGYpOgogICAgICAgICAiIiJSZXR1
cm5zIHRoZSBwb3J0J3MgZHJpdmVyIGltcGxlbWVudGF0aW9uLiIiIgotICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0Ll9kcml2ZXJfY2xhc3MnKQorICAgICAgICByZXR1cm4g
ZHJpdmVyLkRyaXZlcgogCiAgICAgZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwg
c3Rkb3V0LCBzdGRlcnIsIG5ld2VyX3RoYW4pOgogICAgICAgICBuYW1lX3N0ciA9IG5hbWUgb3Ig
Jzx1bmtub3duIHByb2Nlc3MgbmFtZT4nCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCA0NTI5OGM2MzQ4Y2UyZjAwZjBi
MDRmNzdhNjBhYWU4OGI3OTgwYjgwLi45NzI5Zjk0YzA1MGFlODVkZGE5MGFiOGE0Y2QxYjgxZDIw
NWY4MmY1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW0ucHkKQEAgLTQyLDggKzQyLDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBleGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRo
IGltcG9ydCBjeWdwYXRoCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9j
b25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydC5iYXNlIGltcG9ydCBQb3J0LCBWaXJ0dWFsVGVzdFN1aXRlCi1mcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0Ci1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydCwgV2Vi
S2l0RHJpdmVyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQg
V2ViS2l0UG9ydAogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTE0
MCwxMiArMTM5LDYgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgZHJpdmVyX25h
bWUoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IG1lcmdlIHRoaXMgd2l0aCBQb3J0LmRyaXZlcl9u
YW1lLCBXZWJLaXRQb3J0LmRyaXZlcl9uYW1lCi0gICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbign
ZHJpdmVyX25hbWUnKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9vcHRpb24oJ2RyaXZl
cl9uYW1lJykKLSAgICAgICAgcmV0dXJuICdEdW1wUmVuZGVyVHJlZScKLQogICAgIGRlZiBjaGVj
a19idWlsZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0ID0gVHJ1ZQogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2FuZHJvaWQucHkKaW5kZXggMTI2YjMxODY4ZTQ3OWY1ZGUyZjM3YTNhOGVlYTE0ZmZl
YjM2MTMxNi4uNmJiOGZhYzU0OGE3MGRiM2U1ODIxYTk2NzE3ZGQ0Y2M0ODk1NzBkNyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9h
bmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fYW5kcm9pZC5weQpAQCAtMzQsNiArMzQsNyBAQCBpbXBvcnQgdGhyZWFkaW5nCiBp
bXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJv
bWl1bQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZHJpdmVyCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgd2Via2l0CkBAIC00NTYsOSArNDU3LDkgQEAgY2xhc3Mg
Q2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBzZWxm
Ll9vcmlnaW5hbF9nb3Zlcm5vciA9IE5vbmUKIAogCi1jbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2
ZXIod2Via2l0LldlYktpdERyaXZlcik6CitjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIoZHJp
dmVyLkRyaXZlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIs
IHBpeGVsX3Rlc3RzLCBub190aW1lb3V0PUZhbHNlKToKLSAgICAgICAgd2Via2l0LldlYktpdERy
aXZlci5fX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9f
dGltZW91dCkKKyAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fX2lu
aXRfXyhwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dCkKICAgICAg
ICAgc2VsZi5fcGl4ZWxfdGVzdHMgPSBwaXhlbF90ZXN0cwogICAgICAgICBzZWxmLl9pbl9maWZv
X3BhdGggPSBEUlRfQVBQX0ZJTEVTX0RJUiArICdEdW1wUmVuZGVyVHJlZS5pbicKICAgICAgICAg
c2VsZi5fb3V0X2ZpZm9fcGF0aCA9IERSVF9BUFBfRklMRVNfRElSICsgJ0R1bXBSZW5kZXJUcmVl
Lm91dCcKQEAgLTQ5MCw3ICs0OTEsNyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2ZXIod2Vi
a2l0LldlYktpdERyaXZlcik6CiAgICAgICAgICMgT3RoZXJ3aXNlIHRoZSBtYWluIHRocmVhZCBo
YXMgYmVlbiBwcm9jZWVkZWQgbm9ybWFsbHkuIFRoaXMgdGhyZWFkIGp1c3QgZXhpdHMgc2lsZW50
bHkuCiAKICAgICBkZWYgX2RydF9jbWRfbGluZShzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3Rf
YXJncyk6Ci0gICAgICAgIHJldHVybiB3ZWJraXQuV2ViS2l0RHJpdmVyLmNtZF9saW5lKHNlbGYs
IHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSArIFsKKyAgICAgICAgcmV0dXJuIGRyaXZlci5E
cml2ZXIuY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpICsgWwogICAg
ICAgICAgICAgJy0taW4tZmlmbz0nICsgc2VsZi5faW5fZmlmb19wYXRoLAogICAgICAgICAgICAg
Jy0tb3V0LWZpZm89JyArIHNlbGYuX291dF9maWZvX3BhdGgsCiAgICAgICAgICAgICAnLS1lcnIt
Zmlmbz0nICsgc2VsZi5fZXJyX2ZpZm9fcGF0aCwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZF91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9p
ZF91bml0dGVzdC5weQppbmRleCBhM2EzYWFlYjQzMTc3Y2Y5NGQ4Zjg2MjBmZGYxNzI2MjljODQz
YTMwLi44ZjgyODQxN2Y1NTZlNTdmYmNhMDMzYTc5ZmVmNTJkMGRlODk1ZmI1IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJv
aWRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkX3VuaXR0ZXN0LnB5CkBAIC0zOCw3ICszOCw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1I
b3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1bV9hbmRy
b2lkCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBjaHJvbWl1bV9wb3J0
X3Rlc3RjYXNlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBkcml2ZXIK
LWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHdlYmtpdF91bml0dGVzdAor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZHJpdmVyX3VuaXR0ZXN0CiAK
IAogY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydFRlc3QoY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5D
aHJvbWl1bVBvcnRUZXN0Q2FzZSk6CkBAIC0xNDcsOSArMTQ3LDkgQEAgY2xhc3MgQ2hyb21pdW1B
bmRyb2lkRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgnLS1lcnItZmlmbz0nICsgY2hyb21pdW1fYW5kcm9pZC5EUlRfQVBQX0ZJTEVTX0RJUiAr
ICdEdW1wUmVuZGVyVHJlZS5lcnInIGluIGNtZF9saW5lKQogCiAgICAgZGVmIHRlc3RfcmVhZF9w
cm9tcHQoc2VsZik6Ci0gICAgICAgIHNlbGYuZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IHdlYmtp
dF91bml0dGVzdC5Nb2NrU2VydmVyUHJvY2VzcyhbJ3Jvb3RAYW5kcm9pZDovICMgJ10pCisgICAg
ICAgIHNlbGYuZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IGRyaXZlcl91bml0dGVzdC5Nb2NrU2Vy
dmVyUHJvY2VzcyhbJ3Jvb3RAYW5kcm9pZDovICMgJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuZHJpdmVyLl9yZWFkX3Byb21wdCh0aW1lLnRpbWUoKSArIDEpLCBOb25lKQotICAg
ICAgICBzZWxmLmRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSB3ZWJraXRfdW5pdHRlc3QuTW9ja1Nl
cnZlclByb2Nlc3MoWyckICddKQorICAgICAgICBzZWxmLmRyaXZlci5fc2VydmVyX3Byb2Nlc3Mg
PSBkcml2ZXJfdW5pdHRlc3QuTW9ja1NlcnZlclByb2Nlc3MoWyckICddKQogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc2VsZi5kcml2ZXIuX3JlYWRfcHJvbXB0LCB0
aW1lLnRpbWUoKSArIDEpCiAKICAgICBkZWYgdGVzdF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0
KHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2RyaXZlci5weQppbmRleCBmNjVkYjJmN2I2MTIyNjQ4YmUwOWQ5MTA4ZmNlOTJiNzQ1YTI2MGQ1
Li4xYTUzMjEyNTdkMWJhMTI3ODJiZjgxN2Y1NzY5NTNiOGYxYTA2NGM1IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtMjYs
MTIgKzI2LDIxIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgYmFz
ZTY0CiBpbXBvcnQgY29weQoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IHNobGV4
CitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0g
aW1wb3J0IHBhdGgKIAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgc2Vy
dmVyX3Byb2Nlc3MKKworCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKIAog
Y2xhc3MgRHJpdmVySW5wdXQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9u
YW1lLCB0aW1lb3V0LCBpbWFnZV9oYXNoLCBzaG91bGRfcnVuX3BpeGVsX3Rlc3QsIGFyZ3M9Tm9u
ZSk6CkBAIC05MSw3ICsxMDAsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKIAogCiBj
bGFzcyBEcml2ZXIob2JqZWN0KToKLSAgICAiIiJBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIHRoZSBE
dW1wUmVuZGVyVHJlZSBpbnRlcmZhY2UuIiIiCisgICAgIiIib2JqZWN0IGZvciBydW5uaW5nIHRl
c3QocykgdXNpbmcgRHVtcFJlbmRlclRyZWUvV2ViS2l0VGVzdFJ1bm5lci4iIiIKIAogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGlt
ZW91dD1GYWxzZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBEcml2ZXIgdG8gc3Vic2VxdWVu
dGx5IHJ1biB0ZXN0cy4KQEAgLTEwNiw2ICsxMTUsMjkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVtYmVyCiAgICAgICAgIHNl
bGYuX25vX3RpbWVvdXQgPSBub190aW1lb3V0CiAKKyAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBk
aXIgPSBOb25lCisgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciBjYW4gcmVwb3J0IGJhY2sgc3Vi
cHJvY2VzcyBjcmFzaGVzIGJ5IHByaW50aW5nCisgICAgICAgICMgIiNDUkFTSEVEIC0gUFJPQ0VT
U05BTUUiLiAgU2luY2UgdGhvc2UgY2FuIGhhcHBlbiBhdCBhbnkgdGltZQorICAgICAgICAjIGFu
ZCBTZXJ2ZXJQcm9jZXNzIHdvbid0IGJlIGF3YXJlIG9mIHRoZW0gKHNpbmNlIHRoZSBhY3R1YWwg
dG9vbAorICAgICAgICAjIGRpZG4ndCBjcmFzaCwganVzdCBhIHN1YnByb2Nlc3MpIHdlIHJlY29y
ZCB0aGUgY3Jhc2hlZCBzdWJwcm9jZXNzIG5hbWUgaGVyZS4KKyAgICAgICAgc2VsZi5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gTm9uZQor
CisgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciBjYW4gcmVwb3J0IGJhY2sgc3VicHJvY2Vzc2Vz
IHRoYXQgYmVjYW1lIHVucmVzcG9uc2l2ZQorICAgICAgICAjIFRoaXMgY291bGQgbWVhbiB0aGV5
IGNyYXNoZWQuCisgICAgICAgIHNlbGYuX3N1YnByb2Nlc3Nfd2FzX3VucmVzcG9uc2l2ZSA9IEZh
bHNlCisKKyAgICAgICAgIyBzdGRlcnIgcmVhZGluZyBpcyBzY29wZWQgb24gYSBwZXItdGVzdCAo
bm90IHBlci1ibG9jaykgYmFzaXMsIHNvIHdlIHN0b3JlIHRoZSBhY2N1bXVsYXRlZAorICAgICAg
ICAjIHN0ZGVyciBvdXRwdXQsIGFzIHdlbGwgYXMgaWYgd2UndmUgc2VlbiAjRU9GIG9uIHRoaXMg
ZHJpdmVyIGluc3RhbmNlLgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgcmVt
b3ZlIF9yZWFkX2ZpcnN0X2Jsb2NrIGFuZCBfcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayBhbmQK
KyAgICAgICAgIyBpbnN0ZWFkIHNjb3BlIHRoZXNlIGxvY2FsbHkgaW4gcnVuX3Rlc3QuCisgICAg
ICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ID0gc3RyKCkKKyAgICAgICAgc2VsZi5lcnJfc2Vlbl9l
b2YgPSBGYWxzZQorICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5vbmUKKworICAgIGRl
ZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLnN0b3AoKQorCiAgICAgZGVmIHJ1bl90ZXN0
KHNlbGYsIGRyaXZlcl9pbnB1dCk6CiAgICAgICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0IGFuZCBy
ZXR1cm4gdGhlIHJlc3VsdHMuCiAKQEAgLTExNSw5ICsxNDcsNTEgQEAgY2xhc3MgRHJpdmVyKG9i
amVjdCk6CiAKICAgICAgICAgUmV0dXJucyBhIERyaXZlck91cHV0IG9iamVjdC4KICAgICAgICAg
IiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ0RyaXZlci5ydW5fdGVzdCcp
CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLnN0YXJ0KGRy
aXZlcl9pbnB1dC5zaG91bGRfcnVuX3BpeGVsX3Rlc3QsIGRyaXZlcl9pbnB1dC5hcmdzKQorICAg
ICAgICB0ZXN0X2JlZ2luX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLmVycm9yX2Zy
b21fdGVzdCA9IHN0cigpCisgICAgICAgIHNlbGYuZXJyX3NlZW5fZW9mID0gRmFsc2UKKworICAg
ICAgICBjb21tYW5kID0gc2VsZi5fY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dChkcml2ZXJfaW5w
dXQpCisgICAgICAgIGRlYWRsaW5lID0gdGVzdF9iZWdpbl90aW1lICsgaW50KGRyaXZlcl9pbnB1
dC50aW1lb3V0KSAvIDEwMDAuMAorCisgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLndyaXRl
KGNvbW1hbmQpCisgICAgICAgIHRleHQsIGF1ZGlvID0gc2VsZi5fcmVhZF9maXJzdF9ibG9jayhk
ZWFkbGluZSkgICMgRmlyc3QgYmxvY2sgaXMgZWl0aGVyIHRleHQgb3IgYXVkaW8KKyAgICAgICAg
aW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoID0gc2VsZi5fcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9j
ayhkZWFkbGluZSkgICMgVGhlIHNlY29uZCAob3B0aW9uYWwpIGJsb2NrIGlzIGltYWdlIGRhdGEu
CisKKyAgICAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBhbGwgb2YgdGhlIG91dHB1dCBpZiBh
biBlcnJvciAoY3Jhc2gpIG9jY3VyZWQuCisgICAgICAgICMgU2luY2Ugc29tZSBwbGF0Zm9ybXMg
b3V0cHV0IHRoZSBzdGFja3RyYWNlIG92ZXIgZXJyb3IsIHdlIHNob3VsZAorICAgICAgICAjIGR1
bXAgYW55IGJ1ZmZlcmVkIGVycm9yIGludG8gc2VsZi5lcnJvcl9mcm9tX3Rlc3QuCisgICAgICAg
ICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIGFsc28gcmVhZCBzdGRlcnIgdW50aWwgdGhlIHByb2Nl
c3MgZGllcz8KKyAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gc2VsZi5fc2VydmVyX3By
b2Nlc3MucG9wX2FsbF9idWZmZXJlZF9zdGRlcnIoKQorCisgICAgICAgIGNyYXNoX2xvZyA9IE5v
bmUKKyAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgorICAgICAgICAgICAgY3Jhc2hfbG9n
ID0gc2VsZi5fcG9ydC5fZ2V0X2NyYXNoX2xvZyhzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSwg
c2VsZi5fY3Jhc2hlZF9waWQsIHRleHQsIHNlbGYuZXJyb3JfZnJvbV90ZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdlcl90aGFuPXN0YXJ0
X3RpbWUpCisKKyAgICAgICAgICAgICMgSWYgd2UgZG9uJ3QgZmluZCBhIGNyYXNoIGxvZyB1c2Ug
YSBwbGFjZWhvbGRlciBlcnJvciBtZXNzYWdlIGluc3RlYWQuCisgICAgICAgICAgICBpZiBub3Qg
Y3Jhc2hfbG9nOgorICAgICAgICAgICAgICAgIGNyYXNoX2xvZyA9ICdubyBjcmFzaCBsb2cgZm91
bmQgZm9yICVzOiVkLicgJSAoc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUsIHNlbGYuX2NyYXNo
ZWRfcGlkKQorICAgICAgICAgICAgICAgICMgSWYgd2Ugd2VyZSB1bnJlc3BvbnNpdmUgYXBwZW5k
IGEgbWVzc2FnZSBpbmZvcm1pbmcgdGhlcmUgbWF5IG5vdCBoYXZlIGJlZW4gYSBjcmFzaC4KKyAg
ICAgICAgICAgICAgICBpZiBzZWxmLl9zdWJwcm9jZXNzX3dhc191bnJlc3BvbnNpdmU6CisgICAg
ICAgICAgICAgICAgICAgIGNyYXNoX2xvZyArPSAnICBQcm9jZXNzIGZhaWxlZCB0byBiZWNvbWUg
cmVzcG9uc2l2ZSBiZWZvcmUgdGltaW5nIG91dC4nCisKKyAgICAgICAgdGltZW91dCA9IHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dAorICAgICAgICBpZiB0aW1lb3V0OgorICAgICAgICAg
ICAgIyBEUlQgZG9lc24ndCBoYXZlIGEgYnVpbHQgaW4gdGltZXIgdG8gYWJvcnQgdGhlIHRlc3Qs
IHNvIHdlIG1pZ2h0IGFzIHdlbGwKKyAgICAgICAgICAgICMga2lsbCB0aGUgcHJvY2VzcyBkaXJl
Y3RseSBhbmQgbm90IHdhaXQgZm9yIGl0IHRvIHNodXQgZG93biBjbGVhbmx5IChzaW5jZSBpdCBt
YXkgbm90KS4KKyAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmtpbGwoKQorCisgICAg
ICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoLCBh
dWRpbywKKyAgICAgICAgICAgIGNyYXNoPXNlbGYuaGFzX2NyYXNoZWQoKSwgdGVzdF90aW1lPXRp
bWUudGltZSgpIC0gdGVzdF9iZWdpbl90aW1lLAorICAgICAgICAgICAgdGltZW91dD10aW1lb3V0
LCBlcnJvcj1zZWxmLmVycm9yX2Zyb21fdGVzdCwKKyAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vz
c19uYW1lPXNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lLAorICAgICAgICAgICAgY3Jhc2hlZF9w
aWQ9c2VsZi5fY3Jhc2hlZF9waWQsIGNyYXNoX2xvZz1jcmFzaF9sb2cpCiAKICAgICAjIEZJWE1F
OiBTZWVtcyB0aGlzIGNvdWxkIGp1c3QgYmUgaW5saW5lZCBpbnRvIGNhbGxlcnMuCisgICAgQGNs
YXNzbWV0aG9kCiAgICAgZGVmIF9jb21tYW5kX3dyYXBwZXIoY2xzLCB3cmFwcGVyX29wdGlvbik6
CiAgICAgICAgICMgSG9vayBmb3IgaW5qZWN0aW5nIHZhbGdyaW5kIG9yIG90aGVyIHJ1bnRpbWUg
aW5zdHJ1bWVudGF0aW9uLAogICAgICAgICAjIHVzZWQgYnkgZS5nLiB0b29scy92YWxncmluZC92
YWxncmluZF90ZXN0cy5weS4KQEAgLTE2MSwxNyArMjM1LDIxMCBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93biB1cmwgdHlw
ZTogJXMnICUgdXJpKQogCiAgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLl9zZXJ2ZXJfcHJvY2VzcyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg
ICAgICAgIGlmIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lOgorICAgICAgICAgICAgcmV0dXJu
IFRydWUKKyAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNoZWQoKToKKyAg
ICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gc2VsZi5fc2VydmVyX3Byb2Nl
c3MubmFtZSgpCisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IHNlbGYuX3NlcnZlcl9w
cm9jZXNzLnBpZCgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFs
c2UKIAotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcignRHJpdmVyLnN0YXJ0JykKKyAgICBkZWYgc3RhcnQoc2VsZiwgcGl4ZWxfdGVzdHMsIHBl
cl90ZXN0X2FyZ3MpOgorICAgICAgICAjIEZJWE1FOiBDYWxsZXJzIHNob3VsZG4ndCBub3JtYWxs
eSBjYWxsIHRoaXMsIHNpbmNlIHRoaXMgcm91dGluZQorICAgICAgICAjIG1heSBub3QgYmUgc3Bl
Y2lmeWluZyB0aGUgY29ycmVjdCBjb21iaW5hdGlvbiBvZiBwaXhlbCB0ZXN0IGFuZAorICAgICAg
ICAjIHBlcl90ZXN0IGFyZ3MuCisgICAgICAgICMKKyAgICAgICAgIyBUaGUgb25seSByZWFzb24g
d2UgaGF2ZSB0aGlzIHJvdXRpbmUgYXQgYWxsIGlzIHNvIHRoZSBwZXJmdGVzdHJ1bm5lcgorICAg
ICAgICAjIGNhbiBwYXVzZSBiZWZvcmUgcnVubmluZyBhIHRlc3Q7IGl0IG1pZ2h0IGJlIGJldHRl
ciB0byBwdXNoIHRoYXQKKyAgICAgICAgIyBpbnRvIHJ1bl90ZXN0KCkgZGlyZWN0bHkuCisgICAg
ICAgIGlmIG5vdCBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKKyAgICAgICAgICAgIHNlbGYuX3N0YXJ0
KHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKQorCisgICAgZGVmIF9zdGFydChzZWxmLCBwaXhl
bF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CisgICAgICAgIHNlbGYuc3RvcCgpCisgICAgICAgIHNl
bGYuX2RyaXZlcl90ZW1wZGlyID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ta2R0ZW1wKHByZWZp
eD0nJXMtJyAlIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSkKKyAgICAgICAgc2VydmVyX25hbWUg
PSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKKyAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxmLl9w
b3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKKyAgICAgICAgZW52aXJv
bm1lbnRbJ0RZTERfTElCUkFSWV9QQVRIJ10gPSBzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKKyAg
ICAgICAgZW52aXJvbm1lbnRbJ0RZTERfRlJBTUVXT1JLX1BBVEgnXSA9IHNlbGYuX3BvcnQuX2J1
aWxkX3BhdGgoKQorICAgICAgICAjIEZJWE1FOiBXZSdyZSBhc3N1bWluZyB0aGF0IFdlYktpdFRl
c3RSdW5uZXIgY2hlY2tzIHRoaXMgRHVtcFJlbmRlclRyZWUtbmFtZWQgZW52aXJvbm1lbnQgdmFy
aWFibGUuCisgICAgICAgIGVudmlyb25tZW50WydEVU1QUkVOREVSVFJFRV9URU1QJ10gPSBzdHIo
c2VsZi5fZHJpdmVyX3RlbXBkaXIpCisgICAgICAgIGVudmlyb25tZW50WydMT0NBTF9SRVNPVVJD
RV9ST09UJ10gPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKQorICAgICAgICBzZWxmLl9j
cmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fY3Jhc2hlZF9waWQgPSBO
b25lCisgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VydmVyX3Byb2Nlc3MuU2VydmVy
UHJvY2VzcyhzZWxmLl9wb3J0LCBzZXJ2ZXJfbmFtZSwgc2VsZi5jbWRfbGluZShwaXhlbF90ZXN0
cywgcGVyX3Rlc3RfYXJncyksIGVudmlyb25tZW50KQorCiAKICAgICBkZWYgc3RvcChzZWxmKToK
LSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignRHJpdmVyLnN0b3AnKQorICAgICAg
ICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKKyAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnN0b3AoKQorICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCisKKyAg
ICAgICAgaWYgc2VsZi5fZHJpdmVyX3RlbXBkaXI6CisgICAgICAgICAgICBzZWxmLl9wb3J0Ll9m
aWxlc3lzdGVtLnJtdHJlZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQorICAgICAgICAgICAg
c2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCiAKICAgICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4
ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yKCdEcml2ZXIuY21kX2xpbmUnKQorICAgICAgICBjbWQgPSBzZWxmLl9jb21tYW5kX3dyYXBw
ZXIoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCd3cmFwcGVyJykpCisgICAgICAgIGNtZC5hcHBlbmQo
c2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKKyAgICAgICAgaWYgc2VsZi5fcG9ydC5nZXRf
b3B0aW9uKCdnY19iZXR3ZWVuX3Rlc3RzJyk6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCctLWdj
LWJldHdlZW4tdGVzdHMnKQorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2NvbXBs
ZXhfdGV4dCcpOgorICAgICAgICAgICAgY21kLmFwcGVuZCgnLS1jb21wbGV4LXRleHQnKQorICAg
ICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3RocmVhZGVkJyk6CisgICAgICAgICAgICBj
bWQuYXBwZW5kKCctLXRocmVhZGVkJykKKyAgICAgICAgaWYgc2VsZi5fbm9fdGltZW91dDoKKyAg
ICAgICAgICAgIGNtZC5hcHBlbmQoJy0tbm8tdGltZW91dCcpCisgICAgICAgICMgRklYTUU6IFdl
IG5lZWQgdG8gcGFzcyAtLXRpbWVvdXQ9U0VDT05EUyB0byBXZWJLaXRUZXN0UnVubmVyIGZvciBX
ZWJLaXQyLgorCisgICAgICAgIGNtZC5leHRlbmQoc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdhZGRp
dGlvbmFsX2RydF9mbGFnJywgW10pKQorCisgICAgICAgIGlmIHBpeGVsX3Rlc3RzOgorICAgICAg
ICAgICAgY21kLmFwcGVuZCgnLS1waXhlbC10ZXN0cycpCisgICAgICAgIGNtZC5leHRlbmQocGVy
X3Rlc3RfYXJncykKKworICAgICAgICBjbWQuYXBwZW5kKCctJykKKyAgICAgICAgcmV0dXJuIGNt
ZAorCisgICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKHNlbGYsIGVycm9yX2xpbmUpOgor
ICAgICAgICBpZiBlcnJvcl9saW5lID09ICIjQ1JBU0hFRFxuIjoKKyAgICAgICAgICAgICMgVGhp
cyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFzIGNyYXNo
ZWQKKyAgICAgICAgICAgICMgU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY1
NTM3LgorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5uYW1lKCkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MucGlkKCkKKyAgICAgICAgZWxpZiAoZXJyb3JfbGluZS5zdGFydHN3aXRo
KCIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MiKQorICAgICAgICAgICAgb3IgZXJyb3JfbGluZS5zdGFy
dHN3aXRoKCIjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIikpOgorICAgICAgICAg
ICAgIyBXZWJLaXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhhdCB0aGUgV2ViUHJv
Y2VzcyBzdWJwcm9jZXNzIGNyYXNoZWQuCisgICAgICAgICAgICBwaWQgPSBOb25lCisgICAgICAg
ICAgICBtID0gcmUuc2VhcmNoKCdwaWQgKFxkKyknLCBlcnJvcl9saW5lKQorICAgICAgICAgICAg
aWYgbToKKyAgICAgICAgICAgICAgICBwaWQgPSBpbnQobS5ncm91cCgxKSkKKyAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCisgICAgICAgICAgICBz
ZWxmLl9jcmFzaGVkX3BpZCA9IHBpZAorICAgICAgICAgICAgIyBGSVhNRTogZGVsZXRlIHRoaXMg
YWZ0ZXIgd2UncmUgc3VyZSB0aGlzIGNvZGUgaXMgd29ya2luZyA6KQorICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygnV2ViUHJvY2VzcyBjcmFzaCwgcGlkID0gJXMsIGVycm9yX2xpbmUgPSAlcycgJSAo
c3RyKHBpZCksIGVycm9yX2xpbmUpKQorICAgICAgICAgICAgaWYgZXJyb3JfbGluZS5zdGFydHN3
aXRoKCIjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIik6CisgICAgICAgICAgICAg
ICAgc2VsZi5fc3VicHJvY2Vzc193YXNfdW5yZXNwb25zaXZlID0gVHJ1ZQorICAgICAgICAgICAg
cmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzX2NyYXNoZWQoKQorCisgICAgZGVm
IF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9pbnB1dCk6CisgICAgICAg
ICMgRklYTUU6IHBlcmZvcm1hbmNlIHRlc3RzIHBhc3MgaW4gZnVsbCBVUkxzIGluc3RlYWQgb2Yg
dGVzdCBuYW1lcy4KKyAgICAgICAgaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5zdGFydHN3aXRo
KCdodHRwOi8vJykgb3IgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5zdGFydHN3aXRoKCdodHRwczov
LycpICBvciBkcml2ZXJfaW5wdXQudGVzdF9uYW1lID09ICgnYWJvdXQ6YmxhbmsnKToKKyAgICAg
ICAgICAgIGNvbW1hbmQgPSBkcml2ZXJfaW5wdXQudGVzdF9uYW1lCisgICAgICAgIGVsaWYgc2Vs
Zi5pc19odHRwX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSk6CisgICAgICAgICAgICBjb21t
YW5kID0gc2VsZi50ZXN0X3RvX3VyaShkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChk
cml2ZXJfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdj
eWd3aW4nOgorICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBwYXRoLmN5Z3BhdGgoY29tbWFuZCkK
KworICAgICAgICBpZiBkcml2ZXJfaW5wdXQuaW1hZ2VfaGFzaDoKKyAgICAgICAgICAgICMgIici
IGlzIHRoZSBzZXBhcmF0b3Igb2YgY29tbWFuZCBmaWVsZHMuCisgICAgICAgICAgICBjb21tYW5k
ICs9ICInIiArIGRyaXZlcl9pbnB1dC5pbWFnZV9oYXNoCisgICAgICAgIHJldHVybiBjb21tYW5k
ICsgIlxuIgorCisgICAgZGVmIF9yZWFkX2ZpcnN0X2Jsb2NrKHNlbGYsIGRlYWRsaW5lKToKKyAg
ICAgICAgIyByZXR1cm5zICh0ZXh0X2NvbnRlbnQsIGF1ZGlvX2NvbnRlbnQpCisgICAgICAgIGJs
b2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKKyAgICAgICAgaWYgYmxvY2suY29udGVu
dF90eXBlID09ICdhdWRpby93YXYnOgorICAgICAgICAgICAgcmV0dXJuIChOb25lLCBibG9jay5k
ZWNvZGVkX2NvbnRlbnQpCisgICAgICAgIHJldHVybiAoYmxvY2suZGVjb2RlZF9jb250ZW50LCBO
b25lKQorCisgICAgZGVmIF9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKHNlbGYsIGRlYWRsaW5l
KToKKyAgICAgICAgIyByZXR1cm5zIChpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gpCisgICAgICAg
IGJsb2NrID0gc2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSwgd2FpdF9mb3Jfc3RkZXJyX2VvZj1U
cnVlKQorICAgICAgICBpZiBibG9jay5jb250ZW50IGFuZCBibG9jay5jb250ZW50X3R5cGUgPT0g
J2ltYWdlL3BuZyc6CisgICAgICAgICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29udGVudCwg
YmxvY2suY29udGVudF9oYXNoKQorICAgICAgICByZXR1cm4gKE5vbmUsIGJsb2NrLmNvbnRlbnRf
aGFzaCkKKworICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90
ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKKyAgICAgICAgaWYgbGluZS5z
dGFydHN3aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlz
IE5vbmU6CisgICAgICAgICAgICB2YWx1ZSA9IGxpbmUuc3BsaXQoKVsxXQorICAgICAgICAgICAg
aWYgaGVhZGVyX2ZpbHRlcjoKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGhlYWRlcl9maWx0ZXIo
dmFsdWUpCisgICAgICAgICAgICBzZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0ciwgdmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBf
cHJvY2Vzc19zdGRvdXRfbGluZShzZWxmLCBibG9jaywgbGluZSk6CisgICAgICAgIGlmIChzZWxm
Ll9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0NvbnRlbnQtVHlwZTogJywgJ2NvbnRlbnRfdHlw
ZScpCisgICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0NvbnRl
bnQtVHJhbnNmZXItRW5jb2Rpbmc6ICcsICdlbmNvZGluZycpCisgICAgICAgICAgICBvciBzZWxm
Ll9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0NvbnRlbnQtTGVuZ3RoOiAnLCAnX2NvbnRlbnRf
bGVuZ3RoJywgaW50KQorICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxp
bmUsICdBY3R1YWxIYXNoOiAnLCAnY29udGVudF9oYXNoJykpOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgICMgTm90ZSwgd2UncmUgbm90IHJlYWRpbmcgRXhwZWN0ZWRIYXNoOiBoZXJlLCBi
dXQgd2UgY291bGQuCisgICAgICAgICMgSWYgdGhlIGxpbmUgd2Fzbid0IGEgaGVhZGVyLCB3ZSBq
dXN0IGFwcGVuZCBpdCB0byB0aGUgY29udGVudC4KKyAgICAgICAgYmxvY2suY29udGVudCArPSBs
aW5lCisKKyAgICBkZWYgX3N0cmlwX2VvZihzZWxmLCBsaW5lKToKKyAgICAgICAgaWYgbGluZSBh
bmQgbGluZS5lbmRzd2l0aCgiI0VPRlxuIik6CisgICAgICAgICAgICByZXR1cm4gbGluZVs6LTVd
LCBUcnVlCisgICAgICAgIHJldHVybiBsaW5lLCBGYWxzZQorCisgICAgZGVmIF9yZWFkX2Jsb2Nr
KHNlbGYsIGRlYWRsaW5lLCB3YWl0X2Zvcl9zdGRlcnJfZW9mPUZhbHNlKToKKyAgICAgICAgYmxv
Y2sgPSBDb250ZW50QmxvY2soKQorICAgICAgICBvdXRfc2Vlbl9lb2YgPSBGYWxzZQorCisgICAg
ICAgIHdoaWxlIG5vdCBzZWxmLmhhc19jcmFzaGVkKCk6CisgICAgICAgICAgICBpZiBvdXRfc2Vl
bl9lb2YgYW5kIChzZWxmLmVycl9zZWVuX2VvZiBvciBub3Qgd2FpdF9mb3Jfc3RkZXJyX2VvZik6
CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgc2VsZi5lcnJfc2Vlbl9l
b2Y6CisgICAgICAgICAgICAgICAgb3V0X2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFk
X3N0ZG91dF9saW5lKGRlYWRsaW5lKQorICAgICAgICAgICAgICAgIGVycl9saW5lID0gTm9uZQor
ICAgICAgICAgICAgZWxpZiBvdXRfc2Vlbl9lb2Y6CisgICAgICAgICAgICAgICAgb3V0X2xpbmUg
PSBOb25lCisgICAgICAgICAgICAgICAgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5y
ZWFkX3N0ZGVycl9saW5lKGRlYWRsaW5lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBvdXRfbGluZSwgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2VpdGhl
cl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoZGVhZGxpbmUpCisKKyAgICAgICAgICAgIGlmIHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLmhhc19jcmFzaGVkKCk6CisgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgb3V0X2xpbmU6CisgICAgICAgICAgICAg
ICAgYXNzZXJ0IG5vdCBvdXRfc2Vlbl9lb2YKKyAgICAgICAgICAgICAgICBvdXRfbGluZSwgb3V0
X3NlZW5fZW9mID0gc2VsZi5fc3RyaXBfZW9mKG91dF9saW5lKQorICAgICAgICAgICAgaWYgZXJy
X2xpbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmVycl9zZWVuX2VvZgorICAg
ICAgICAgICAgICAgIGVycl9saW5lLCBzZWxmLmVycl9zZWVuX2VvZiA9IHNlbGYuX3N0cmlwX2Vv
ZihlcnJfbGluZSkKKworICAgICAgICAgICAgaWYgb3V0X2xpbmU6CisgICAgICAgICAgICAgICAg
aWYgb3V0X2xpbmVbLTFdICE9ICJcbiI6CisgICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
Ikxhc3QgY2hhcmFjdGVyIHJlYWQgZnJvbSBEUlQgc3Rkb3V0IGxpbmUgd2FzIG5vdCBhIG5ld2xp
bmUhICBUaGlzIGluZGljYXRlcyBlaXRoZXIgYSBOUldUIG9yIERSVCBidWcuIikKKyAgICAgICAg
ICAgICAgICBjb250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVyX2NoZWNrID0gYmxvY2suX2NvbnRl
bnRfbGVuZ3RoCisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19zdGRvdXRfbGluZShibG9j
aywgb3V0X2xpbmUpCisgICAgICAgICAgICAgICAgIyBGSVhNRTogVW5saWtlIEhUVFAsIERSVCBk
dW1wcyB0aGUgY29udGVudCByaWdodCBhZnRlciBwcmludGluZyBhIENvbnRlbnQtTGVuZ3RoIGhl
YWRlci4KKyAgICAgICAgICAgICAgICAjIERvbid0IHdhaXQgdW50aWwgd2UncmUgZG9uZSB3aXRo
IGhlYWRlcnMsIGp1c3QgcmVhZCB0aGUgYmluYXJ5IGJsb2IgcmlnaHQgbm93LgorICAgICAgICAg
ICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoX2JlZm9yZV9oZWFkZXJfY2hlY2sgIT0gYmxvY2suX2Nv
bnRlbnRfbGVuZ3RoOgorICAgICAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUsIGJsb2NrLl9jb250ZW50X2xlbmd0
aCkKKworICAgICAgICAgICAgaWYgZXJyX2xpbmU6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5f
Y2hlY2tfZm9yX2RyaXZlcl9jcmFzaChlcnJfbGluZSk6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9tX3Rlc3QgKz0gZXJyX2xpbmUKKwor
ICAgICAgICBibG9jay5kZWNvZGVfY29udGVudCgpCisgICAgICAgIHJldHVybiBibG9jaworCisK
K2NsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAg
ICAgICAgc2VsZi5jb250ZW50X3R5cGUgPSBOb25lCisgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBO
b25lCisgICAgICAgIHNlbGYuY29udGVudF9oYXNoID0gTm9uZQorICAgICAgICBzZWxmLl9jb250
ZW50X2xlbmd0aCA9IE5vbmUKKyAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5
IGRhdGEgZXZlbiB0aG91Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCisgICAg
ICAgIHNlbGYuY29udGVudCA9IHN0cigpICAjIEZJWE1FOiBTaG91bGQgYmUgYnl0ZWFycmF5KCkg
b25jZSB3ZSByZXF1aXJlIFB5dGhvbiAyLjYuCisgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50
ID0gTm9uZQorCisgICAgZGVmIGRlY29kZV9jb250ZW50KHNlbGYpOgorICAgICAgICBpZiBzZWxm
LmVuY29kaW5nID09ICdiYXNlNjQnOgorICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQg
PSBiYXNlNjQuYjY0ZGVjb2RlKHNlbGYuY29udGVudCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gc2VsZi5jb250ZW50CiAKIGNsYXNzIERyaXZlclBy
b3h5KG9iamVjdCk6CiAgICAgIiIiQSB3cmFwcGVyIGZvciBtYW5hZ2luZyB0d28gRHJpdmVyIGlu
c3RhbmNlcywgb25lIHdpdGggcGl4ZWwgdGVzdHMgYW5kCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlcl91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDAwYTQyZjQyZmU1ZmEwNDYzZDQxMDZmOGZlMGI0N2NiYTY5MGU1MjIuLjRiZWEwNWVhMTY3
OWU5Njg2NmJmZDhkNjE1NWY4MGNjOTU2ZjNiNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5CkBA
IC0zMyw2ICszMyw5IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21v
Y2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiAKKyMgRklYTUU6IHJlbW92ZSB0
aGUgZGVwZW5kZW5jeSBvbiBUZXN0V2ViS2l0UG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC53ZWJraXRfdW5pdHRlc3QgaW1wb3J0IFRlc3RXZWJLaXRQb3J0CisKIAogY2xhc3Mg
RHJpdmVyT3V0cHV0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RyaXBf
bWV0cmljcyhzZWxmKToKQEAgLTc5LDE5ICs4MiwxMCBAQCBjbGFzcyBEcml2ZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9wb3J0KHNlbGYpOgogICAgICAgICByZXR1cm4g
UG9ydChNb2NrU3lzdGVtSG9zdCgpKQogCi0gICAgZGVmIGFzc2VydFZpcnR1YWwoc2VsZiwgbWV0
aG9kLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBs
ZW1lbnRlZEVycm9yLCBtZXRob2QsICphcmdzLCAqKmt3YXJncykKLQogICAgIGRlZiBfYXNzZXJ0
X3dyYXBwZXIoc2VsZiwgd3JhcHBlcl9zdHJpbmcsIGV4cGVjdGVkX3dyYXBwZXIpOgogICAgICAg
ICB3cmFwcGVyID0gRHJpdmVyKHNlbGYubWFrZV9wb3J0KCksIE5vbmUsIHBpeGVsX3Rlc3RzPUZh
bHNlKS5fY29tbWFuZF93cmFwcGVyKHdyYXBwZXJfc3RyaW5nKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHdyYXBwZXIsIGV4cGVjdGVkX3dyYXBwZXIpCiAKLSAgICBkZWYgdGVzdF92aXJ0dWFs
X2RyaXZlcl9tZXRob2RzKHNlbGYpOgotICAgICAgICBkcml2ZXIgPSBEcml2ZXIoc2VsZi5tYWtl
X3BvcnQoKSwgTm9uZSwgcGl4ZWxfdGVzdHM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0Vmly
dHVhbChkcml2ZXIucnVuX3Rlc3QsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VmlydHVhbChk
cml2ZXIuc3RvcCkKLSAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKGRyaXZlci5jbWRfbGluZSwg
RmFsc2UsIFtdKQotCiAgICAgZGVmIHRlc3RfY29tbWFuZF93cmFwcGVyKHNlbGYpOgogICAgICAg
ICBzZWxmLl9hc3NlcnRfd3JhcHBlcihOb25lLCBbXSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X3dy
YXBwZXIoInZhbGdyaW5kIiwgWyJ2YWxncmluZCJdKQpAQCAtMTE1LDYgKzEwOSwxODMgQEAgY2xh
c3MgRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZHJpdmVyLnVyaV90b190ZXN0KCdodHRwOi8vMTI3LjAuMC4xOjgwMDAvZm9vLmh0bWwnKSwg
J2h0dHAvdGVzdHMvZm9vLmh0bWwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlci51
cmlfdG9fdGVzdCgnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9zc2wvYmFyLmh0bWwnKSwgJ2h0dHAv
dGVzdHMvc3NsL2Jhci5odG1sJykKIAorICAgIGRlZiB0ZXN0X3JlYWRfYmxvY2soc2VsZik6Cisg
ICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIGRyaXZlciA9IERyaXZlcihw
b3J0LCAwLCBwaXhlbF90ZXN0cz1GYWxzZSkKKyAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2Vz
cyA9IE1vY2tTZXJ2ZXJQcm9jZXNzKFsKKyAgICAgICAgICAgICdBY3R1YWxIYXNoOiBmb29iYXIn
LAorICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogbXlfdHlwZScsCisgICAgICAgICAgICAnQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogbm9uZScsCisgICAgICAgICAgICAiI0VPRiIsCisgICAg
ICAgIF0pCisgICAgICAgIGNvbnRlbnRfYmxvY2sgPSBkcml2ZXIuX3JlYWRfYmxvY2soMCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5jb250ZW50X3R5cGUsICdteV90
eXBlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5lbmNvZGluZywg
J25vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmNvbnRlbnRf
aGFzaCwgJ2Zvb2JhcicpCisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCisK
KyAgICBkZWYgdGVzdF9yZWFkX2JpbmFyeV9ibG9jayhzZWxmKToKKyAgICAgICAgcG9ydCA9IFRl
c3RXZWJLaXRQb3J0KCkKKyAgICAgICAgZHJpdmVyID0gRHJpdmVyKHBvcnQsIDAsIHBpeGVsX3Rl
c3RzPVRydWUpCisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBNb2NrU2VydmVyUHJv
Y2VzcyhbCisgICAgICAgICAgICAnQWN0dWFsSGFzaDogYWN0dWFsJywKKyAgICAgICAgICAgICdF
eHBlY3RlZEhhc2g6IGV4cGVjdGVkJywKKyAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGltYWdl
L3BuZycsCisgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDknLAorICAgICAgICAgICAgIjEy
MzQ1Njc4IiwKKyAgICAgICAgICAgICIjRU9GIiwKKyAgICAgICAgXSkKKyAgICAgICAgY29udGVu
dF9ibG9jayA9IGRyaXZlci5fcmVhZF9ibG9jaygwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhjb250ZW50X2Jsb2NrLmNvbnRlbnRfdHlwZSwgJ2ltYWdlL3BuZycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suY29udGVudF9oYXNoLCAnYWN0dWFsJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5jb250ZW50LCAnMTIzNDU2Nzhcbicp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suZGVjb2RlZF9jb250ZW50
LCAnMTIzNDU2NzhcbicpCisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCisK
KyAgICBkZWYgdGVzdF9yZWFkX2Jhc2U2NF9ibG9jayhzZWxmKToKKyAgICAgICAgcG9ydCA9IFRl
c3RXZWJLaXRQb3J0KCkKKyAgICAgICAgZHJpdmVyID0gRHJpdmVyKHBvcnQsIDAsIHBpeGVsX3Rl
c3RzPVRydWUpCisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBNb2NrU2VydmVyUHJv
Y2VzcyhbCisgICAgICAgICAgICAnQWN0dWFsSGFzaDogYWN0dWFsJywKKyAgICAgICAgICAgICdF
eHBlY3RlZEhhc2g6IGV4cGVjdGVkJywKKyAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGltYWdl
L3BuZycsCisgICAgICAgICAgICAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0JywK
KyAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTInLAorICAgICAgICAgICAgJ01USXpORFUy
TnpnSyNFT0YnLAorICAgICAgICBdKQorICAgICAgICBjb250ZW50X2Jsb2NrID0gZHJpdmVyLl9y
ZWFkX2Jsb2NrKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suY29u
dGVudF90eXBlLCAnaW1hZ2UvcG5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVu
dF9ibG9jay5jb250ZW50X2hhc2gsICdhY3R1YWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhjb250ZW50X2Jsb2NrLmVuY29kaW5nLCAnYmFzZTY0JykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoY29udGVudF9ibG9jay5jb250ZW50LCAnTVRJek5EVTJOemdLJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5kZWNvZGVkX2NvbnRlbnQsICcxMjM0NTY3OFxu
JykKKworICAgIGRlZiB0ZXN0X25vX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydCgpCisgICAgICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCAwLCBwaXhlbF90ZXN0
cz1UcnVlLCBub190aW1lb3V0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRyaXZl
ci5jbWRfbGluZShUcnVlLCBbXSksIFsnL21vY2stYnVpbGQvRHVtcFJlbmRlclRyZWUnLCAnLS1u
by10aW1lb3V0JywgJy0tcGl4ZWwtdGVzdHMnLCAnLSddKQorCisgICAgZGVmIHRlc3RfY2hlY2tf
Zm9yX2RyaXZlcl9jcmFzaChzZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkK
KyAgICAgICAgZHJpdmVyID0gRHJpdmVyKHBvcnQsIDAsIHBpeGVsX3Rlc3RzPVRydWUpCisKKyAg
ICAgICAgY2xhc3MgRmFrZVNlcnZlclByb2Nlc3Mob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjcmFzaGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmNyYXNoZWQgPSBj
cmFzaGVkCisKKyAgICAgICAgICAgIGRlZiBwaWQoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0
dXJuIDEyMzQKKworICAgICAgICAgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgICAgICAgICAg
cmV0dXJuICdGYWtlU2VydmVyUHJvY2VzcycKKworICAgICAgICAgICAgZGVmIGhhc19jcmFzaGVk
KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNyYXNoZWQKKworICAgICAgICAg
ICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBh
c3NlcnRfY3Jhc2goZHJpdmVyLCBlcnJvcl9saW5lLCBjcmFzaGVkLCBuYW1lLCBwaWQsIHVucmVz
cG9uc2l2ZT1GYWxzZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkcml2ZXIuX2No
ZWNrX2Zvcl9kcml2ZXJfY3Jhc2goZXJyb3JfbGluZSksIGNyYXNoZWQpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lLCBuYW1lKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZHJpdmVyLl9jcmFzaGVkX3BpZCwgcGlkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZHJpdmVyLl9zdWJwcm9jZXNzX3dhc191bnJlc3Bv
bnNpdmUsIHVucmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIGRyaXZlci5zdG9wKCkKKworICAgICAg
ICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gRmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCisgICAg
ICAgIGFzc2VydF9jcmFzaChkcml2ZXIsICcnLCBGYWxzZSwgTm9uZSwgTm9uZSkKKworICAgICAg
ICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQorICAgICAgICBkcml2ZXIuX2Ny
YXNoZWRfcGlkID0gTm9uZQorICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gRmFrZVNl
cnZlclByb2Nlc3MoRmFsc2UpCisgICAgICAgIGRyaXZlci5fc3VicHJvY2Vzc193YXNfdW5yZXNw
b25zaXZlID0gRmFsc2UKKyAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJyNDUkFTSEVEXG4n
LCBUcnVlLCAnRmFrZVNlcnZlclByb2Nlc3MnLCAxMjM0KQorCisgICAgICAgIGRyaXZlci5fY3Jh
c2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIGRyaXZlci5fY3Jhc2hlZF9waWQgPSBO
b25lCisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVyUHJvY2VzcyhG
YWxzZSkKKyAgICAgICAgZHJpdmVyLl9zdWJwcm9jZXNzX3dhc191bnJlc3BvbnNpdmUgPSBGYWxz
ZQorICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4n
LCBUcnVlLCAnV2ViUHJvY2VzcycsIE5vbmUpCisKKyAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3By
b2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKKyAg
ICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQor
ICAgICAgICBkcml2ZXIuX3N1YnByb2Nlc3Nfd2FzX3VucmVzcG9uc2l2ZSA9IEZhbHNlCisgICAg
ICAgIGFzc2VydF9jcmFzaChkcml2ZXIsICcjQ1JBU0hFRCAtIFdlYlByb2Nlc3MgKHBpZCA4Njc1
KVxuJywgVHJ1ZSwgJ1dlYlByb2Nlc3MnLCA4Njc1KQorCisgICAgICAgIGRyaXZlci5fY3Jhc2hl
ZF9wcm9jZXNzX25hbWUgPSBOb25lCisgICAgICAgIGRyaXZlci5fY3Jhc2hlZF9waWQgPSBOb25l
CisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVyUHJvY2VzcyhGYWxz
ZSkKKyAgICAgICAgZHJpdmVyLl9zdWJwcm9jZXNzX3dhc191bnJlc3BvbnNpdmUgPSBGYWxzZQor
ICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI1BST0NFU1MgVU5SRVNQT05TSVZFIC0gV2Vi
UHJvY2VzcyAocGlkIDg2NzUpXG4nLCBUcnVlLCAnV2ViUHJvY2VzcycsIDg2NzUsIFRydWUpCisK
KyAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUKKyAgICAgICAgZHJp
dmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKKyAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9
IEZha2VTZXJ2ZXJQcm9jZXNzKFRydWUpCisgICAgICAgIGRyaXZlci5fc3VicHJvY2Vzc193YXNf
dW5yZXNwb25zaXZlID0gRmFsc2UKKyAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJycsIFRy
dWUsICdGYWtlU2VydmVyUHJvY2VzcycsIDEyMzQpCisKKyAgICBkZWYgdGVzdF9jcmVhdGluZ19h
X3BvcnRfZG9lc19ub3Rfd3JpdGVfdG9fdGhlX2ZpbGVzeXN0ZW0oc2VsZik6CisgICAgICAgIHBv
cnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAgICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCAwLCBw
aXhlbF90ZXN0cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9maWxlc3lz
dGVtLndyaXR0ZW5fZmlsZXMsIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwb3J0Ll9m
aWxlc3lzdGVtLmxhc3RfdG1wZGlyLCBOb25lKQorCisgICAgZGVmIHRlc3Rfc3RvcF9jbGVhbnNf
dXBfcHJvcGVybHkoc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCisgICAg
ICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCAwLCBwaXhlbF90ZXN0cz1UcnVlKQorICAgICAgICBk
cml2ZXIuc3RhcnQoVHJ1ZSwgW10pCisgICAgICAgIGxhc3RfdG1wZGlyID0gcG9ydC5fZmlsZXN5
c3RlbS5sYXN0X3RtcGRpcgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFscyhsYXN0X3RtcGRp
ciwgTm9uZSkKKyAgICAgICAgZHJpdmVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHBvcnQuX2ZpbGVzeXN0ZW0uaXNkaXIobGFzdF90bXBkaXIpKQorCisgICAgZGVmIHRlc3RfdHdv
X3N0YXJ0c19jbGVhbnNfdXBfcHJvcGVybHkoc2VsZik6CisgICAgICAgIHBvcnQgPSBUZXN0V2Vi
S2l0UG9ydCgpCisgICAgICAgIGRyaXZlciA9IERyaXZlcihwb3J0LCAwLCBwaXhlbF90ZXN0cz1U
cnVlKQorICAgICAgICBkcml2ZXIuc3RhcnQoVHJ1ZSwgW10pCisgICAgICAgIGxhc3RfdG1wZGly
ID0gcG9ydC5fZmlsZXN5c3RlbS5sYXN0X3RtcGRpcgorICAgICAgICBkcml2ZXIuX3N0YXJ0KFRy
dWUsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuX2ZpbGVzeXN0ZW0uaXNkaXIo
bGFzdF90bXBkaXIpKQorCisKK2NsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzPU5vbmUpOgorICAgICAgICBzZWxmLnRpbWVkX291dCA9
IEZhbHNlCisgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcyBvciBbXQorICAgICAgICBzZWxmLmNy
YXNoZWQgPSBGYWxzZQorCisgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5jcmFzaGVkCisKKyAgICBkZWYgcmVhZF9zdGRvdXRfbGluZShzZWxmLCBkZWFkbGlu
ZSk6CisgICAgICAgIHJldHVybiBzZWxmLmxpbmVzLnBvcCgwKSArICJcbiIKKworICAgIGRlZiBy
ZWFkX3N0ZG91dChzZWxmLCBkZWFkbGluZSwgc2l6ZSk6CisgICAgICAgIGZpcnN0X2xpbmUgPSBz
ZWxmLmxpbmVzWzBdCisgICAgICAgIGlmIHNpemUgPiBsZW4oZmlyc3RfbGluZSk6CisgICAgICAg
ICAgICBzZWxmLmxpbmVzLnBvcCgwKQorICAgICAgICAgICAgcmVtYWluaW5nX3NpemUgPSBzaXpl
IC0gbGVuKGZpcnN0X2xpbmUpIC0gMQorICAgICAgICAgICAgaWYgbm90IHJlbWFpbmluZ19zaXpl
OgorICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdF9saW5lICsgIlxuIgorICAgICAgICAgICAg
cmV0dXJuIGZpcnN0X2xpbmUgKyAiXG4iICsgc2VsZi5yZWFkX3N0ZG91dChkZWFkbGluZSwgcmVt
YWluaW5nX3NpemUpCisgICAgICAgIHJlc3VsdCA9IHNlbGYubGluZXNbMF1bOnNpemVdCisgICAg
ICAgIHNlbGYubGluZXNbMF0gPSBzZWxmLmxpbmVzWzBdW3NpemU6XQorICAgICAgICByZXR1cm4g
cmVzdWx0CisKKyAgICBkZWYgcmVhZF9laXRoZXJfc3Rkb3V0X29yX3N0ZGVycl9saW5lKHNlbGYs
IGRlYWRsaW5lKToKKyAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGVzdHMgd2hpY2gg
aW50ZXJtaXggc3RkZXJyIGFuZCBzdGRvdXQgbGluZXMuCisgICAgICAgIHJldHVybiBzZWxmLnJl
YWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpLCBOb25lCisKKyAgICBkZWYgc3RhcnQoc2VsZik6Cisg
ICAgICAgIHJldHVybgorCisgICAgZGVmIHN0b3Aoc2VsZiwga2lsbF9kaXJlY3RseT1GYWxzZSk6
CisgICAgICAgIHJldHVybgorCisgICAgZGVmIGtpbGwoc2VsZik6CisgICAgICAgIHJldHVybgor
CiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4IDZj
NTk0MjdmM2MzMDgxYjA4YTQzNjYxMWVhOTBiYWI3OTY5ODRiMWMuLmViYjc2MWJiZDI1MjgxYjdl
ZmU3ZDU0ZGJmNTNhYjk0NDczMTNmZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CkBAIC0zMyw3ICszMyw3IEBAIGltcG9ydCBzdWJwcm9j
ZXNzCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRp
b24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0LnNlcnZlcl9wcm9jZXNzIGltcG9ydCBTZXJ2ZXJQcm9jZXNzCi1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0RHJpdmVyLCBXZWJLaXRQb3J0Citm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5wdWxzZWF1ZGlvX3Nhbml0aXplciBpbXBv
cnQgUHVsc2VBdWRpb1Nhbml0aXplcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC54
dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggYjJlOTY4OGM5MTZmYThjM2QzOWEx
NmNmNzM2N2Q0NWRmYWI0NTU5Ny4uZDViN2MwZDdmN2FhMzIyN2I2ZDZkMTdmZDYyYzRkZDQxZmJk
Y2EyOCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkKQEAgLTMxLDIwICszMSwxNCBAQAogCiAiIiJXZWJLaXQgaW1wbGVtZW50YXRp
b25zIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIAotaW1wb3J0IGJhc2U2NAogaW1wb3J0IGl0
ZXJ0b29scwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJlCi1pbXBv
cnQgc3lzCiBpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBv
cnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVp
bGRCb3QKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5lbnZpcm9ubWVudCBpbXBvcnQgRW52
aXJvbm1lbnQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoIGlt
cG9ydCBjeWdwYXRoCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBidWls
ZGVycywgc2VydmVyX3Byb2Nlc3MsIFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0Citmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcywgUG9ydAogCiAK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAgLTE3Nyw5ICsxNzEsNiBAQCBj
bGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogCiAgICAgICAgIHJldHVybiAob3V0cHV0X2ltYWdlLCBk
aWZmX3BlcmNlbnQpCiAKLSAgICBkZWYgX2RyaXZlcl9jbGFzcyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIFdlYktpdERyaXZlcgotCiAgICAgZGVmIF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKHNl
bGYpOgogICAgICAgICAjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBza2lwIGFueSBkaXJlY3RvcnkgdW5k
ZXIgTGF5b3V0VGVzdHMvcGxhdGZvcm0KICAgICAgICAgIyB0aGF0IGlzbid0IGluIG91ciBiYXNl
bGluZSBzZWFyY2ggcGF0aCAodGhpcyBtaXJyb3JzIHdoYXQKQEAgLTMwNSwyNzUgKzI5NiwzIEBA
IGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgIHRlc3RzX3RvX3NraXAudXBkYXRlKHNl
bGYuX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoKSkKICAgICAgICAgdGVzdHNfdG9fc2tpcC51
cGRhdGUoc2VsZi5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9s
aXN0KSkKICAgICAgICAgcmV0dXJuIHRlc3RzX3RvX3NraXAKLQotCi0KLWNsYXNzIFdlYktpdERy
aXZlcihEcml2ZXIpOgotICAgICIiIldlYktpdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRHVtcFJl
bmRlclRyZWUvV2ViS2l0VGVzdFJ1bm5lciBpbnRlcmZhY2UuIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3RpbWVvdXQ9RmFs
c2UpOgotICAgICAgICBEcml2ZXIuX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlciwg
cGl4ZWxfdGVzdHMsIG5vX3RpbWVvdXQpCi0gICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0g
Tm9uZQotICAgICAgICAjIFdlYktpdFRlc3RSdW5uZXIgY2FuIHJlcG9ydCBiYWNrIHN1YnByb2Nl
c3MgY3Jhc2hlcyBieSBwcmludGluZwotICAgICAgICAjICIjQ1JBU0hFRCAtIFBST0NFU1NOQU1F
Ii4gIFNpbmNlIHRob3NlIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUKLSAgICAgICAgIyBhbmQgU2Vy
dmVyUHJvY2VzcyB3b24ndCBiZSBhd2FyZSBvZiB0aGVtIChzaW5jZSB0aGUgYWN0dWFsIHRvb2wK
LSAgICAgICAgIyBkaWRuJ3QgY3Jhc2gsIGp1c3QgYSBzdWJwcm9jZXNzKSB3ZSByZWNvcmQgdGhl
IGNyYXNoZWQgc3VicHJvY2VzcyBuYW1lIGhlcmUuCi0gICAgICAgIHNlbGYuX2NyYXNoZWRfcHJv
Y2Vzc19uYW1lID0gTm9uZQotICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUKLQotICAg
ICAgICAjIFdlYktpdFRlc3RSdW5uZXIgY2FuIHJlcG9ydCBiYWNrIHN1YnByb2Nlc3NlcyB0aGF0
IGJlY2FtZSB1bnJlc3BvbnNpdmUKLSAgICAgICAgIyBUaGlzIGNvdWxkIG1lYW4gdGhleSBjcmFz
aGVkLgotICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX3dhc191bnJlc3BvbnNpdmUgPSBGYWxzZQot
Ci0gICAgICAgICMgc3RkZXJyIHJlYWRpbmcgaXMgc2NvcGVkIG9uIGEgcGVyLXRlc3QgKG5vdCBw
ZXItYmxvY2spIGJhc2lzLCBzbyB3ZSBzdG9yZSB0aGUgYWNjdW11bGF0ZWQKLSAgICAgICAgIyBz
dGRlcnIgb3V0cHV0LCBhcyB3ZWxsIGFzIGlmIHdlJ3ZlIHNlZW4gI0VPRiBvbiB0aGlzIGRyaXZl
ciBpbnN0YW5jZS4KLSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHJlbW92ZSBf
cmVhZF9maXJzdF9ibG9jayBhbmQgX3JlYWRfb3B0aW9uYWxfaW1hZ2VfYmxvY2sgYW5kCi0gICAg
ICAgICMgaW5zdGVhZCBzY29wZSB0aGVzZSBsb2NhbGx5IGluIHJ1bl90ZXN0LgotICAgICAgICBz
ZWxmLmVycm9yX2Zyb21fdGVzdCA9IHN0cigpCi0gICAgICAgIHNlbGYuZXJyX3NlZW5fZW9mID0g
RmFsc2UKLSAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCi0KLSAgICBkZWYgX19k
ZWxfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdG9wKCkKLQotICAgIGRlZiBjbWRfbGluZShzZWxm
LCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6Ci0gICAgICAgIGNtZCA9IHNlbGYuX2NvbW1h
bmRfd3JhcHBlcihzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dyYXBwZXInKSkKLSAgICAgICAgY21k
LmFwcGVuZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpKQotICAgICAgICBpZiBzZWxmLl9w
b3J0LmdldF9vcHRpb24oJ2djX2JldHdlZW5fdGVzdHMnKToKLSAgICAgICAgICAgIGNtZC5hcHBl
bmQoJy0tZ2MtYmV0d2Vlbi10ZXN0cycpCi0gICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlv
bignY29tcGxleF90ZXh0Jyk6Ci0gICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbXBsZXgtdGV4
dCcpCi0gICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigndGhyZWFkZWQnKToKLSAgICAg
ICAgICAgIGNtZC5hcHBlbmQoJy0tdGhyZWFkZWQnKQotICAgICAgICBpZiBzZWxmLl9ub190aW1l
b3V0OgotICAgICAgICAgICAgY21kLmFwcGVuZCgnLS1uby10aW1lb3V0JykKLSAgICAgICAgIyBG
SVhNRTogV2UgbmVlZCB0byBwYXNzIC0tdGltZW91dD1TRUNPTkRTIHRvIFdlYktpdFRlc3RSdW5u
ZXIgZm9yIFdlYktpdDIuCi0KLSAgICAgICAgY21kLmV4dGVuZChzZWxmLl9wb3J0LmdldF9vcHRp
b24oJ2FkZGl0aW9uYWxfZHJ0X2ZsYWcnLCBbXSkpCi0KLSAgICAgICAgaWYgcGl4ZWxfdGVzdHM6
Ci0gICAgICAgICAgICBjbWQuYXBwZW5kKCctLXBpeGVsLXRlc3RzJykKLSAgICAgICAgY21kLmV4
dGVuZChwZXJfdGVzdF9hcmdzKQotCi0gICAgICAgIGNtZC5hcHBlbmQoJy0nKQotICAgICAgICBy
ZXR1cm4gY21kCi0KLSAgICBkZWYgX3N0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9h
cmdzKToKLSAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIg
PSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSclcy0nICUgc2VsZi5fcG9y
dC5kcml2ZXJfbmFtZSgpKQotICAgICAgICBzZXJ2ZXJfbmFtZSA9IHNlbGYuX3BvcnQuZHJpdmVy
X25hbWUoKQotICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3BvcnQuc2V0dXBfZW52aXJvbl9m
b3Jfc2VydmVyKHNlcnZlcl9uYW1lKQotICAgICAgICBlbnZpcm9ubWVudFsnRFlMRF9MSUJSQVJZ
X1BBVEgnXSA9IHNlbGYuX3BvcnQuX2J1aWxkX3BhdGgoKQotICAgICAgICBlbnZpcm9ubWVudFsn
RFlMRF9GUkFNRVdPUktfUEFUSCddID0gc2VsZi5fcG9ydC5fYnVpbGRfcGF0aCgpCi0gICAgICAg
ICMgRklYTUU6IFdlJ3JlIGFzc3VtaW5nIHRoYXQgV2ViS2l0VGVzdFJ1bm5lciBjaGVja3MgdGhp
cyBEdW1wUmVuZGVyVHJlZS1uYW1lZCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgZW52
aXJvbm1lbnRbJ0RVTVBSRU5ERVJUUkVFX1RFTVAnXSA9IHN0cihzZWxmLl9kcml2ZXJfdGVtcGRp
cikKLSAgICAgICAgZW52aXJvbm1lbnRbJ0xPQ0FMX1JFU09VUkNFX1JPT1QnXSA9IHNlbGYuX3Bv
cnQubGF5b3V0X3Rlc3RzX2RpcigpCi0gICAgICAgIHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1l
ID0gTm9uZQotICAgICAgICBzZWxmLl9jcmFzaGVkX3BpZCA9IE5vbmUKLSAgICAgICAgc2VsZi5f
c2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQs
IHNlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKSwg
ZW52aXJvbm1lbnQpCi0KLSAgICBkZWYgaGFzX2NyYXNoZWQoc2VsZik6Ci0gICAgICAgIGlmIHNl
bGYuX3NlcnZlcl9wcm9jZXNzIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgaWYgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWU6Ci0gICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5oYXNfY3Jhc2hlZCgpOgotICAg
ICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5uYW1lKCkKLSAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gc2VsZi5fc2VydmVyX3By
b2Nlc3MucGlkKCkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxz
ZQotCi0gICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKHNlbGYsIGVycm9yX2xpbmUpOgot
ICAgICAgICBpZiBlcnJvcl9saW5lID09ICIjQ1JBU0hFRFxuIjoKLSAgICAgICAgICAgICMgVGhp
cyBpcyB1c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFzIGNyYXNo
ZWQKLSAgICAgICAgICAgICMgU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY1
NTM3LgotICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5uYW1lKCkKLSAgICAgICAgICAgIHNlbGYuX2NyYXNoZWRfcGlkID0gc2VsZi5f
c2VydmVyX3Byb2Nlc3MucGlkKCkKLSAgICAgICAgZWxpZiAoZXJyb3JfbGluZS5zdGFydHN3aXRo
KCIjQ1JBU0hFRCAtIFdlYlByb2Nlc3MiKQotICAgICAgICAgICAgb3IgZXJyb3JfbGluZS5zdGFy
dHN3aXRoKCIjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIikpOgotICAgICAgICAg
ICAgIyBXZWJLaXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQgdGhhdCB0aGUgV2ViUHJv
Y2VzcyBzdWJwcm9jZXNzIGNyYXNoZWQuCi0gICAgICAgICAgICBwaWQgPSBOb25lCi0gICAgICAg
ICAgICBtID0gcmUuc2VhcmNoKCdwaWQgKFxkKyknLCBlcnJvcl9saW5lKQotICAgICAgICAgICAg
aWYgbToKLSAgICAgICAgICAgICAgICBwaWQgPSBpbnQobS5ncm91cCgxKSkKLSAgICAgICAgICAg
IHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gJ1dlYlByb2Nlc3MnCi0gICAgICAgICAgICBz
ZWxmLl9jcmFzaGVkX3BpZCA9IHBpZAotICAgICAgICAgICAgIyBGSVhNRTogZGVsZXRlIHRoaXMg
YWZ0ZXIgd2UncmUgc3VyZSB0aGlzIGNvZGUgaXMgd29ya2luZyA6KQotICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygnV2ViUHJvY2VzcyBjcmFzaCwgcGlkID0gJXMsIGVycm9yX2xpbmUgPSAlcycgJSAo
c3RyKHBpZCksIGVycm9yX2xpbmUpKQotICAgICAgICAgICAgaWYgZXJyb3JfbGluZS5zdGFydHN3
aXRoKCIjUFJPQ0VTUyBVTlJFU1BPTlNJVkUgLSBXZWJQcm9jZXNzIik6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fc3VicHJvY2Vzc193YXNfdW5yZXNwb25zaXZlID0gVHJ1ZQotICAgICAgICAgICAg
cmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuaGFzX2NyYXNoZWQoKQotCi0gICAgZGVm
IF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9pbnB1dCk6Ci0gICAgICAg
ICMgRklYTUU6IHBlcmZvcm1hbmNlIHRlc3RzIHBhc3MgaW4gZnVsbCBVUkxzIGluc3RlYWQgb2Yg
dGVzdCBuYW1lcy4KLSAgICAgICAgaWYgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5zdGFydHN3aXRo
KCdodHRwOi8vJykgb3IgZHJpdmVyX2lucHV0LnRlc3RfbmFtZS5zdGFydHN3aXRoKCdodHRwczov
LycpICBvciBkcml2ZXJfaW5wdXQudGVzdF9uYW1lID09ICgnYWJvdXQ6YmxhbmsnKToKLSAgICAg
ICAgICAgIGNvbW1hbmQgPSBkcml2ZXJfaW5wdXQudGVzdF9uYW1lCi0gICAgICAgIGVsaWYgc2Vs
Zi5pc19odHRwX3Rlc3QoZHJpdmVyX2lucHV0LnRlc3RfbmFtZSk6Ci0gICAgICAgICAgICBjb21t
YW5kID0gc2VsZi50ZXN0X3RvX3VyaShkcml2ZXJfaW5wdXQudGVzdF9uYW1lKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX3BvcnQuYWJzcGF0aF9mb3JfdGVzdChk
cml2ZXJfaW5wdXQudGVzdF9uYW1lKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdj
eWd3aW4nOgotICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBjeWdwYXRoKGNvbW1hbmQpCi0KLSAg
ICAgICAgaWYgZHJpdmVyX2lucHV0LmltYWdlX2hhc2g6Ci0gICAgICAgICAgICAjICInIiBpcyB0
aGUgc2VwYXJhdG9yIG9mIGNvbW1hbmQgZmllbGRzLgotICAgICAgICAgICAgY29tbWFuZCArPSAi
JyIgKyBkcml2ZXJfaW5wdXQuaW1hZ2VfaGFzaAotICAgICAgICByZXR1cm4gY29tbWFuZCArICJc
biIKLQotICAgIGRlZiBfcmVhZF9maXJzdF9ibG9jayhzZWxmLCBkZWFkbGluZSk6Ci0gICAgICAg
ICMgcmV0dXJucyAodGV4dF9jb250ZW50LCBhdWRpb19jb250ZW50KQotICAgICAgICBibG9jayA9
IHNlbGYuX3JlYWRfYmxvY2soZGVhZGxpbmUpCi0gICAgICAgIGlmIGJsb2NrLmNvbnRlbnRfdHlw
ZSA9PSAnYXVkaW8vd2F2JzoKLSAgICAgICAgICAgIHJldHVybiAoTm9uZSwgYmxvY2suZGVjb2Rl
ZF9jb250ZW50KQotICAgICAgICByZXR1cm4gKGJsb2NrLmRlY29kZWRfY29udGVudCwgTm9uZSkK
LQotICAgIGRlZiBfcmVhZF9vcHRpb25hbF9pbWFnZV9ibG9jayhzZWxmLCBkZWFkbGluZSk6Ci0g
ICAgICAgICMgcmV0dXJucyAoaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNoKQotICAgICAgICBibG9j
ayA9IHNlbGYuX3JlYWRfYmxvY2soZGVhZGxpbmUsIHdhaXRfZm9yX3N0ZGVycl9lb2Y9VHJ1ZSkK
LSAgICAgICAgaWYgYmxvY2suY29udGVudCBhbmQgYmxvY2suY29udGVudF90eXBlID09ICdpbWFn
ZS9wbmcnOgotICAgICAgICAgICAgcmV0dXJuIChibG9jay5kZWNvZGVkX2NvbnRlbnQsIGJsb2Nr
LmNvbnRlbnRfaGFzaCkKLSAgICAgICAgcmV0dXJuIChOb25lLCBibG9jay5jb250ZW50X2hhc2gp
Ci0KLSAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgZHJpdmVyX2lucHV0KToKLSAgICAgICAgc3RhcnRf
dGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuc3RhcnQoZHJpdmVyX2lucHV0LnNob3Vs
ZF9ydW5fcGl4ZWxfdGVzdCwgZHJpdmVyX2lucHV0LmFyZ3MpCi0gICAgICAgIHRlc3RfYmVnaW5f
dGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ID0gc3RyKCkK
LSAgICAgICAgc2VsZi5lcnJfc2Vlbl9lb2YgPSBGYWxzZQotCi0gICAgICAgIGNvbW1hbmQgPSBz
ZWxmLl9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KGRyaXZlcl9pbnB1dCkKLSAgICAgICAgZGVh
ZGxpbmUgPSB0ZXN0X2JlZ2luX3RpbWUgKyBpbnQoZHJpdmVyX2lucHV0LnRpbWVvdXQpIC8gMTAw
MC4wCi0KLSAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mud3JpdGUoY29tbWFuZCkKLSAgICAg
ICAgdGV4dCwgYXVkaW8gPSBzZWxmLl9yZWFkX2ZpcnN0X2Jsb2NrKGRlYWRsaW5lKSAgIyBGaXJz
dCBibG9jayBpcyBlaXRoZXIgdGV4dCBvciBhdWRpbwotICAgICAgICBpbWFnZSwgYWN0dWFsX2lt
YWdlX2hhc2ggPSBzZWxmLl9yZWFkX29wdGlvbmFsX2ltYWdlX2Jsb2NrKGRlYWRsaW5lKSAgIyBU
aGUgc2Vjb25kIChvcHRpb25hbCkgYmxvY2sgaXMgaW1hZ2UgZGF0YS4KLQotICAgICAgICAjIFdl
IG1heSBub3QgaGF2ZSByZWFkIGFsbCBvZiB0aGUgb3V0cHV0IGlmIGFuIGVycm9yIChjcmFzaCkg
b2NjdXJlZC4KLSAgICAgICAgIyBTaW5jZSBzb21lIHBsYXRmb3JtcyBvdXRwdXQgdGhlIHN0YWNr
dHJhY2Ugb3ZlciBlcnJvciwgd2Ugc2hvdWxkCi0gICAgICAgICMgZHVtcCBhbnkgYnVmZmVyZWQg
ZXJyb3IgaW50byBzZWxmLmVycm9yX2Zyb21fdGVzdC4KLSAgICAgICAgIyBGSVhNRTogV2UgbWF5
IG5lZWQgdG8gYWxzbyByZWFkIHN0ZGVyciB1bnRpbCB0aGUgcHJvY2VzcyBkaWVzPwotICAgICAg
ICBzZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1
ZmZlcmVkX3N0ZGVycigpCi0KLSAgICAgICAgY3Jhc2hfbG9nID0gTm9uZQotICAgICAgICBpZiBz
ZWxmLmhhc19jcmFzaGVkKCk6Ci0gICAgICAgICAgICBjcmFzaF9sb2cgPSBzZWxmLl9wb3J0Ll9n
ZXRfY3Jhc2hfbG9nKHNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lLCBzZWxmLl9jcmFzaGVkX3Bp
ZCwgdGV4dCwgc2VsZi5lcnJvcl9mcm9tX3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2VyX3RoYW49c3RhcnRfdGltZSkKLQotICAgICAg
ICAgICAgIyBJZiB3ZSBkb24ndCBmaW5kIGEgY3Jhc2ggbG9nIHVzZSBhIHBsYWNlaG9sZGVyIGVy
cm9yIG1lc3NhZ2UgaW5zdGVhZC4KLSAgICAgICAgICAgIGlmIG5vdCBjcmFzaF9sb2c6Ci0gICAg
ICAgICAgICAgICAgY3Jhc2hfbG9nID0gJ25vIGNyYXNoIGxvZyBmb3VuZCBmb3IgJXM6JWQuJyAl
IChzZWxmLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSwgc2VsZi5fY3Jhc2hlZF9waWQpCi0gICAgICAg
ICAgICAgICAgIyBJZiB3ZSB3ZXJlIHVucmVzcG9uc2l2ZSBhcHBlbmQgYSBtZXNzYWdlIGluZm9y
bWluZyB0aGVyZSBtYXkgbm90IGhhdmUgYmVlbiBhIGNyYXNoLgotICAgICAgICAgICAgICAgIGlm
IHNlbGYuX3N1YnByb2Nlc3Nfd2FzX3VucmVzcG9uc2l2ZToKLSAgICAgICAgICAgICAgICAgICAg
Y3Jhc2hfbG9nICs9ICcgIFByb2Nlc3MgZmFpbGVkIHRvIGJlY29tZSByZXNwb25zaXZlIGJlZm9y
ZSB0aW1pbmcgb3V0LicKLQotICAgICAgICB0aW1lb3V0ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3Mu
dGltZWRfb3V0Ci0gICAgICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgICAgICAjIERSVCBkb2Vzbid0
IGhhdmUgYSBidWlsdCBpbiB0aW1lciB0byBhYm9ydCB0aGUgdGVzdCwgc28gd2UgbWlnaHQgYXMg
d2VsbAotICAgICAgICAgICAgIyBraWxsIHRoZSBwcm9jZXNzIGRpcmVjdGx5IGFuZCBub3Qgd2Fp
dCBmb3IgaXQgdG8gc2h1dCBkb3duIGNsZWFubHkgKHNpbmNlIGl0IG1heSBub3QpLgotICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mua2lsbCgpCi0KLSAgICAgICAgcmV0dXJuIERyaXZl
ck91dHB1dCh0ZXh0LCBpbWFnZSwgYWN0dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAotICAgICAgICAg
ICAgY3Jhc2g9c2VsZi5oYXNfY3Jhc2hlZCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSB0ZXN0
X2JlZ2luX3RpbWUsCi0gICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGVycm9yPXNlbGYuZXJy
b3JfZnJvbV90ZXN0LAotICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jh
c2hlZF9wcm9jZXNzX25hbWUsCi0gICAgICAgICAgICBjcmFzaGVkX3BpZD1zZWxmLl9jcmFzaGVk
X3BpZCwgY3Jhc2hfbG9nPWNyYXNoX2xvZykKLQotICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwg
YmxvY2ssIGxpbmUsIGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25l
KToKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihi
bG9jaywgaGVhZGVyX2F0dHIpIGlzIE5vbmU6Ci0gICAgICAgICAgICB2YWx1ZSA9IGxpbmUuc3Bs
aXQoKVsxXQotICAgICAgICAgICAgaWYgaGVhZGVyX2ZpbHRlcjoKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IGhlYWRlcl9maWx0ZXIodmFsdWUpCi0gICAgICAgICAgICBzZXRhdHRyKGJsb2NrLCBo
ZWFkZXJfYXR0ciwgdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgIGRlZiBfcHJvY2Vzc19zdGRvdXRfbGluZShzZWxmLCBibG9jaywgbGlu
ZSk6Ci0gICAgICAgIGlmIChzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0NvbnRlbnQt
VHlwZTogJywgJ2NvbnRlbnRfdHlwZScpCi0gICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hlYWRl
cihibG9jaywgbGluZSwgJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICcsICdlbmNvZGluZycp
Ci0gICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0NvbnRlbnQt
TGVuZ3RoOiAnLCAnX2NvbnRlbnRfbGVuZ3RoJywgaW50KQotICAgICAgICAgICAgb3Igc2VsZi5f
cmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdBY3R1YWxIYXNoOiAnLCAnY29udGVudF9oYXNoJykp
OgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgTm90ZSwgd2UncmUgbm90IHJlYWRpbmcg
RXhwZWN0ZWRIYXNoOiBoZXJlLCBidXQgd2UgY291bGQuCi0gICAgICAgICMgSWYgdGhlIGxpbmUg
d2Fzbid0IGEgaGVhZGVyLCB3ZSBqdXN0IGFwcGVuZCBpdCB0byB0aGUgY29udGVudC4KLSAgICAg
ICAgYmxvY2suY29udGVudCArPSBsaW5lCi0KLSAgICBkZWYgX3N0cmlwX2VvZihzZWxmLCBsaW5l
KToKLSAgICAgICAgaWYgbGluZSBhbmQgbGluZS5lbmRzd2l0aCgiI0VPRlxuIik6Ci0gICAgICAg
ICAgICByZXR1cm4gbGluZVs6LTVdLCBUcnVlCi0gICAgICAgIHJldHVybiBsaW5lLCBGYWxzZQot
Ci0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIGRlYWRsaW5lLCB3YWl0X2Zvcl9zdGRlcnJfZW9m
PUZhbHNlKToKLSAgICAgICAgYmxvY2sgPSBDb250ZW50QmxvY2soKQotICAgICAgICBvdXRfc2Vl
bl9lb2YgPSBGYWxzZQotCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLmhhc19jcmFzaGVkKCk6Ci0g
ICAgICAgICAgICBpZiBvdXRfc2Vlbl9lb2YgYW5kIChzZWxmLmVycl9zZWVuX2VvZiBvciBub3Qg
d2FpdF9mb3Jfc3RkZXJyX2VvZik6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAg
ICAgaWYgc2VsZi5lcnJfc2Vlbl9lb2Y6Ci0gICAgICAgICAgICAgICAgb3V0X2xpbmUgPSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQotICAgICAgICAgICAg
ICAgIGVycl9saW5lID0gTm9uZQotICAgICAgICAgICAgZWxpZiBvdXRfc2Vlbl9lb2Y6Ci0gICAg
ICAgICAgICAgICAgb3V0X2xpbmUgPSBOb25lCi0gICAgICAgICAgICAgICAgZXJyX2xpbmUgPSBz
ZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZGVycl9saW5lKGRlYWRsaW5lKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBvdXRfbGluZSwgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5yZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoZGVhZGxpbmUpCi0K
LSAgICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxmLmhh
c19jcmFzaGVkKCk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgaWYgb3V0
X2xpbmU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBvdXRfc2Vlbl9lb2YKLSAgICAgICAg
ICAgICAgICBvdXRfbGluZSwgb3V0X3NlZW5fZW9mID0gc2VsZi5fc3RyaXBfZW9mKG91dF9saW5l
KQotICAgICAgICAgICAgaWYgZXJyX2xpbmU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBz
ZWxmLmVycl9zZWVuX2VvZgotICAgICAgICAgICAgICAgIGVycl9saW5lLCBzZWxmLmVycl9zZWVu
X2VvZiA9IHNlbGYuX3N0cmlwX2VvZihlcnJfbGluZSkKLQotICAgICAgICAgICAgaWYgb3V0X2xp
bmU6Ci0gICAgICAgICAgICAgICAgaWYgb3V0X2xpbmVbLTFdICE9ICJcbiI6Ci0gICAgICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkxhc3QgY2hhcmFjdGVyIHJlYWQgZnJvbSBEUlQgc3Rkb3V0
IGxpbmUgd2FzIG5vdCBhIG5ld2xpbmUhICBUaGlzIGluZGljYXRlcyBlaXRoZXIgYSBOUldUIG9y
IERSVCBidWcuIikKLSAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVy
X2NoZWNrID0gYmxvY2suX2NvbnRlbnRfbGVuZ3RoCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJv
Y2Vzc19zdGRvdXRfbGluZShibG9jaywgb3V0X2xpbmUpCi0gICAgICAgICAgICAgICAgIyBGSVhN
RTogVW5saWtlIEhUVFAsIERSVCBkdW1wcyB0aGUgY29udGVudCByaWdodCBhZnRlciBwcmludGlu
ZyBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlci4KLSAgICAgICAgICAgICAgICAjIERvbid0IHdhaXQg
dW50aWwgd2UncmUgZG9uZSB3aXRoIGhlYWRlcnMsIGp1c3QgcmVhZCB0aGUgYmluYXJ5IGJsb2Ig
cmlnaHQgbm93LgotICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoX2JlZm9yZV9oZWFk
ZXJfY2hlY2sgIT0gYmxvY2suX2NvbnRlbnRfbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBi
bG9jay5jb250ZW50ID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVhZF9zdGRvdXQoZGVhZGxpbmUs
IGJsb2NrLl9jb250ZW50X2xlbmd0aCkKLQotICAgICAgICAgICAgaWYgZXJyX2xpbmU6Ci0gICAg
ICAgICAgICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChlcnJfbGluZSk6Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9mcm9t
X3Rlc3QgKz0gZXJyX2xpbmUKLQotICAgICAgICBibG9jay5kZWNvZGVfY29udGVudCgpCi0gICAg
ICAgIHJldHVybiBibG9jawotCi0gICAgZGVmIHN0YXJ0KHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJf
dGVzdF9hcmdzKToKLSAgICAgICAgaWYgbm90IHNlbGYuX3NlcnZlcl9wcm9jZXNzOgotICAgICAg
ICAgICAgc2VsZi5fc3RhcnQocGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpCi0KLSAgICBkZWYg
c3RvcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3M6Ci0gICAgICAgICAg
ICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdG9wKCkKLSAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9w
cm9jZXNzID0gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX2RyaXZlcl90ZW1wZGlyOgotICAgICAg
ICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ybXRyZWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1w
ZGlyKSkKLSAgICAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gTm9uZQotCi0KLWNsYXNz
IENvbnRlbnRCbG9jayhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAg
c2VsZi5jb250ZW50X3R5cGUgPSBOb25lCi0gICAgICAgIHNlbGYuZW5jb2RpbmcgPSBOb25lCi0g
ICAgICAgIHNlbGYuY29udGVudF9oYXNoID0gTm9uZQotICAgICAgICBzZWxmLl9jb250ZW50X2xl
bmd0aCA9IE5vbmUKLSAgICAgICAgIyBDb250ZW50IGlzIHRyZWF0ZWQgYXMgYmluYXJ5IGRhdGEg
ZXZlbiB0aG91Z2ggdGhlIHRleHQgb3V0cHV0IGlzIHVzdWFsbHkgVVRGLTguCi0gICAgICAgIHNl
bGYuY29udGVudCA9IHN0cigpICAjIEZJWE1FOiBTaG91bGQgYmUgYnl0ZWFycmF5KCkgb25jZSB3
ZSByZXF1aXJlIFB5dGhvbiAyLjYuCi0gICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gTm9u
ZQotCi0gICAgZGVmIGRlY29kZV9jb250ZW50KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmVuY29k
aW5nID09ICdiYXNlNjQnOgotICAgICAgICAgICAgc2VsZi5kZWNvZGVkX2NvbnRlbnQgPSBiYXNl
NjQuYjY0ZGVjb2RlKHNlbGYuY29udGVudCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
bGYuZGVjb2RlZF9jb250ZW50ID0gc2VsZi5jb250ZW50CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5Cmlu
ZGV4IDU0YWQzMTkxOTQ0NDUxYTIyOTQxM2NjNzFjZDRkYTRjOTkwNGMyMzMuLjA3ODE4MjU0MTVh
OGNkNDc3YmUyY2RjMTQ2OGQ5ZTRkODRhNDQ0MTEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBA
IC0zNCw3ICszNCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJl
IGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVt
aG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKLWZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0LCBXZWJL
aXREcml2ZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBX
ZWJLaXRQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmNvbmZpZ19tb2NrIGlt
cG9ydCBNb2NrQ29uZmlnCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tP
cHRpb25zCiAKQEAgLTIzMSwxODIgKzIzMSwzIEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRf
dGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICAgICAgIyBNb2NrIG91dCBfYXBhY2hlX2NvbmZp
Z19maWxlX25hbWVfZm9yX3BsYXRmb3JtIHRvIGlnbm9yZSB0aGUgcGFzc2VkIHN5cy5wbGF0Zm9y
bSB2YWx1ZS4KICAgICAgICAgcG9ydC5fYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRm
b3JtID0gbGFtYmRhIHBsYXRmb3JtOiAnaHR0cGQuY29uZicKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocG9ydC5fcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoKSwgJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL2h0dHAvY29uZi9odHRwZC5jb25mJykKLQotCi1jbGFzcyBNb2NrU2VydmVy
UHJvY2VzcyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcz1Ob25lKToKLSAg
ICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMg
b3IgW10KLSAgICAgICAgc2VsZi5jcmFzaGVkID0gRmFsc2UKLQotICAgIGRlZiBoYXNfY3Jhc2hl
ZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY3Jhc2hlZAotCi0gICAgZGVmIHJlYWRfc3Rk
b3V0X2xpbmUoc2VsZiwgZGVhZGxpbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5saW5lcy5wb3Ao
MCkgKyAiXG4iCi0KLSAgICBkZWYgcmVhZF9zdGRvdXQoc2VsZiwgZGVhZGxpbmUsIHNpemUpOgot
ICAgICAgICBmaXJzdF9saW5lID0gc2VsZi5saW5lc1swXQotICAgICAgICBpZiBzaXplID4gbGVu
KGZpcnN0X2xpbmUpOgotICAgICAgICAgICAgc2VsZi5saW5lcy5wb3AoMCkKLSAgICAgICAgICAg
IHJlbWFpbmluZ19zaXplID0gc2l6ZSAtIGxlbihmaXJzdF9saW5lKSAtIDEKLSAgICAgICAgICAg
IGlmIG5vdCByZW1haW5pbmdfc2l6ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RfbGlu
ZSArICJcbiIKLSAgICAgICAgICAgIHJldHVybiBmaXJzdF9saW5lICsgIlxuIiArIHNlbGYucmVh
ZF9zdGRvdXQoZGVhZGxpbmUsIHJlbWFpbmluZ19zaXplKQotICAgICAgICByZXN1bHQgPSBzZWxm
LmxpbmVzWzBdWzpzaXplXQotICAgICAgICBzZWxmLmxpbmVzWzBdID0gc2VsZi5saW5lc1swXVtz
aXplOl0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHJlYWRfZWl0aGVyX3N0ZG91
dF9vcl9zdGRlcnJfbGluZShzZWxmLCBkZWFkbGluZSk6Ci0gICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBoYXZlIHRlc3RzIHdoaWNoIGludGVybWl4IHN0ZGVyciBhbmQgc3Rkb3V0IGxpbmVzLgot
ICAgICAgICByZXR1cm4gc2VsZi5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKSwgTm9uZQotCi0g
ICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBzdG9wKHNlbGYs
IGtpbGxfZGlyZWN0bHk9RmFsc2UpOgotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBraWxsKHNl
bGYpOgotICAgICAgICByZXR1cm4KLQotCi1jbGFzcyBXZWJLaXREcml2ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZWFkX2Jsb2NrKHNlbGYpOgotICAgICAgICBwb3J0
ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBkcml2ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwg
MCwgcGl4ZWxfdGVzdHM9RmFsc2UpCi0gICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBN
b2NrU2VydmVyUHJvY2VzcyhbCi0gICAgICAgICAgICAnQWN0dWFsSGFzaDogZm9vYmFyJywKLSAg
ICAgICAgICAgICdDb250ZW50LVR5cGU6IG15X3R5cGUnLAotICAgICAgICAgICAgJ0NvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IG5vbmUnLAotICAgICAgICAgICAgIiNFT0YiLAotICAgICAgICBd
KQotICAgICAgICBjb250ZW50X2Jsb2NrID0gZHJpdmVyLl9yZWFkX2Jsb2NrKDApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suY29udGVudF90eXBlLCAnbXlfdHlwZScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suZW5jb2RpbmcsICdub25l
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5jb250ZW50X2hhc2gs
ICdmb29iYXInKQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQotCi0gICAg
ZGVmIHRlc3RfcmVhZF9iaW5hcnlfYmxvY2soc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0V2Vi
S2l0UG9ydCgpCi0gICAgICAgIGRyaXZlciA9IFdlYktpdERyaXZlcihwb3J0LCAwLCBwaXhlbF90
ZXN0cz1UcnVlKQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTW9ja1NlcnZlclBy
b2Nlc3MoWwotICAgICAgICAgICAgJ0FjdHVhbEhhc2g6IGFjdHVhbCcsCi0gICAgICAgICAgICAn
RXhwZWN0ZWRIYXNoOiBleHBlY3RlZCcsCi0gICAgICAgICAgICAnQ29udGVudC1UeXBlOiBpbWFn
ZS9wbmcnLAotICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiA5JywKLSAgICAgICAgICAgICIx
MjM0NTY3OCIsCi0gICAgICAgICAgICAiI0VPRiIsCi0gICAgICAgIF0pCi0gICAgICAgIGNvbnRl
bnRfYmxvY2sgPSBkcml2ZXIuX3JlYWRfYmxvY2soMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoY29udGVudF9ibG9jay5jb250ZW50X3R5cGUsICdpbWFnZS9wbmcnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmNvbnRlbnRfaGFzaCwgJ2FjdHVhbCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suY29udGVudCwgJzEyMzQ1Njc4XG4n
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmRlY29kZWRfY29udGVu
dCwgJzEyMzQ1Njc4XG4nKQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTm9uZQot
Ci0gICAgZGVmIHRlc3RfcmVhZF9iYXNlNjRfYmxvY2soc2VsZik6Ci0gICAgICAgIHBvcnQgPSBU
ZXN0V2ViS2l0UG9ydCgpCi0gICAgICAgIGRyaXZlciA9IFdlYktpdERyaXZlcihwb3J0LCAwLCBw
aXhlbF90ZXN0cz1UcnVlKQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gTW9ja1Nl
cnZlclByb2Nlc3MoWwotICAgICAgICAgICAgJ0FjdHVhbEhhc2g6IGFjdHVhbCcsCi0gICAgICAg
ICAgICAnRXhwZWN0ZWRIYXNoOiBleHBlY3RlZCcsCi0gICAgICAgICAgICAnQ29udGVudC1UeXBl
OiBpbWFnZS9wbmcnLAotICAgICAgICAgICAgJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJh
c2U2NCcsCi0gICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDEyJywKLSAgICAgICAgICAgICdN
VEl6TkRVMk56Z0sjRU9GJywKLSAgICAgICAgXSkKLSAgICAgICAgY29udGVudF9ibG9jayA9IGRy
aXZlci5fcmVhZF9ibG9jaygwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50X2Js
b2NrLmNvbnRlbnRfdHlwZSwgJ2ltYWdlL3BuZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGNvbnRlbnRfYmxvY2suY29udGVudF9oYXNoLCAnYWN0dWFsJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoY29udGVudF9ibG9jay5lbmNvZGluZywgJ2Jhc2U2NCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suY29udGVudCwgJ01USXpORFUyTnpnSycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suZGVjb2RlZF9jb250ZW50LCAnMTIz
NDU2NzhcbicpCi0KLSAgICBkZWYgdGVzdF9ub190aW1lb3V0KHNlbGYpOgotICAgICAgICBwb3J0
ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBkcml2ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwg
MCwgcGl4ZWxfdGVzdHM9VHJ1ZSwgbm9fdGltZW91dD1UcnVlKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhkcml2ZXIuY21kX2xpbmUoVHJ1ZSwgW10pLCBbJy9tb2NrLWJ1aWxkL0R1bXBSZW5k
ZXJUcmVlJywgJy0tbm8tdGltZW91dCcsICctLXBpeGVsLXRlc3RzJywgJy0nXSkKLQotICAgIGRl
ZiB0ZXN0X2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2goc2VsZik6Ci0gICAgICAgIHBvcnQgPSBUZXN0
V2ViS2l0UG9ydCgpCi0gICAgICAgIGRyaXZlciA9IFdlYktpdERyaXZlcihwb3J0LCAwLCBwaXhl
bF90ZXN0cz1UcnVlKQotCi0gICAgICAgIGNsYXNzIEZha2VTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6
Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY3Jhc2hlZCk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5jcmFzaGVkID0gY3Jhc2hlZAotCi0gICAgICAgICAgICBkZWYgcGlkKHNlbGYpOgot
ICAgICAgICAgICAgICAgIHJldHVybiAxMjM0Ci0KLSAgICAgICAgICAgIGRlZiBuYW1lKHNlbGYp
OgotICAgICAgICAgICAgICAgIHJldHVybiAnRmFrZVNlcnZlclByb2Nlc3MnCi0KLSAgICAgICAg
ICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5j
cmFzaGVkCi0KLSAgICAgICAgICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICAgICAgICAgIHBh
c3MKLQotICAgICAgICBkZWYgYXNzZXJ0X2NyYXNoKGRyaXZlciwgZXJyb3JfbGluZSwgY3Jhc2hl
ZCwgbmFtZSwgcGlkLCB1bnJlc3BvbnNpdmU9RmFsc2UpOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoZHJpdmVyLl9jaGVja19mb3JfZHJpdmVyX2NyYXNoKGVycm9yX2xpbmUpLCBjcmFz
aGVkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZHJpdmVyLl9jcmFzaGVkX3Byb2Nl
c3NfbmFtZSwgbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRyaXZlci5fY3Jh
c2hlZF9waWQsIHBpZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRyaXZlci5fc3Vi
cHJvY2Vzc193YXNfdW5yZXNwb25zaXZlLCB1bnJlc3BvbnNpdmUpCi0gICAgICAgICAgICBkcml2
ZXIuc3RvcCgpCi0KLSAgICAgICAgZHJpdmVyLl9zZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQ
cm9jZXNzKEZhbHNlKQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnJywgRmFsc2UsIE5v
bmUsIE5vbmUpCi0KLSAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3Byb2Nlc3NfbmFtZSA9IE5vbmUK
LSAgICAgICAgZHJpdmVyLl9jcmFzaGVkX3BpZCA9IE5vbmUKLSAgICAgICAgZHJpdmVyLl9zZXJ2
ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKEZhbHNlKQotICAgICAgICBkcml2ZXIuX3N1
YnByb2Nlc3Nfd2FzX3VucmVzcG9uc2l2ZSA9IEZhbHNlCi0gICAgICAgIGFzc2VydF9jcmFzaChk
cml2ZXIsICcjQ1JBU0hFRFxuJywgVHJ1ZSwgJ0Zha2VTZXJ2ZXJQcm9jZXNzJywgMTIzNCkKLQot
ICAgICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQotICAgICAgICBkcml2
ZXIuX2NyYXNoZWRfcGlkID0gTm9uZQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0g
RmFrZVNlcnZlclByb2Nlc3MoRmFsc2UpCi0gICAgICAgIGRyaXZlci5fc3VicHJvY2Vzc193YXNf
dW5yZXNwb25zaXZlID0gRmFsc2UKLSAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJyNDUkFT
SEVEIC0gV2ViUHJvY2Vzc1xuJywgVHJ1ZSwgJ1dlYlByb2Nlc3MnLCBOb25lKQotCi0gICAgICAg
IGRyaXZlci5fY3Jhc2hlZF9wcm9jZXNzX25hbWUgPSBOb25lCi0gICAgICAgIGRyaXZlci5fY3Jh
c2hlZF9waWQgPSBOb25lCi0gICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2Vy
dmVyUHJvY2VzcyhGYWxzZSkKLSAgICAgICAgZHJpdmVyLl9zdWJwcm9jZXNzX3dhc191bnJlc3Bv
bnNpdmUgPSBGYWxzZQotICAgICAgICBhc3NlcnRfY3Jhc2goZHJpdmVyLCAnI0NSQVNIRUQgLSBX
ZWJQcm9jZXNzIChwaWQgODY3NSlcbicsIFRydWUsICdXZWJQcm9jZXNzJywgODY3NSkKLQotICAg
ICAgICBkcml2ZXIuX2NyYXNoZWRfcHJvY2Vzc19uYW1lID0gTm9uZQotICAgICAgICBkcml2ZXIu
X2NyYXNoZWRfcGlkID0gTm9uZQotICAgICAgICBkcml2ZXIuX3NlcnZlcl9wcm9jZXNzID0gRmFr
ZVNlcnZlclByb2Nlc3MoRmFsc2UpCi0gICAgICAgIGRyaXZlci5fc3VicHJvY2Vzc193YXNfdW5y
ZXNwb25zaXZlID0gRmFsc2UKLSAgICAgICAgYXNzZXJ0X2NyYXNoKGRyaXZlciwgJyNQUk9DRVNT
IFVOUkVTUE9OU0lWRSAtIFdlYlByb2Nlc3MgKHBpZCA4Njc1KVxuJywgVHJ1ZSwgJ1dlYlByb2Nl
c3MnLCA4Njc1LCBUcnVlKQotCi0gICAgICAgIGRyaXZlci5fY3Jhc2hlZF9wcm9jZXNzX25hbWUg
PSBOb25lCi0gICAgICAgIGRyaXZlci5fY3Jhc2hlZF9waWQgPSBOb25lCi0gICAgICAgIGRyaXZl
ci5fc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVyUHJvY2VzcyhUcnVlKQotICAgICAgICBkcml2
ZXIuX3N1YnByb2Nlc3Nfd2FzX3VucmVzcG9uc2l2ZSA9IEZhbHNlCi0gICAgICAgIGFzc2VydF9j
cmFzaChkcml2ZXIsICcnLCBUcnVlLCAnRmFrZVNlcnZlclByb2Nlc3MnLCAxMjM0KQotCi0gICAg
ZGVmIHRlc3RfY3JlYXRpbmdfYV9wb3J0X2RvZXNfbm90X3dyaXRlX3RvX3RoZV9maWxlc3lzdGVt
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBkcml2ZXIg
PSBXZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9VHJ1ZSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocG9ydC5fZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLCB7fSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocG9ydC5fZmlsZXN5c3RlbS5sYXN0X3RtcGRpciwgTm9uZSkKLQot
ICAgIGRlZiB0ZXN0X3N0b3BfY2xlYW5zX3VwX3Byb3Blcmx5KHNlbGYpOgotICAgICAgICBwb3J0
ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBkcml2ZXIgPSBXZWJLaXREcml2ZXIocG9ydCwg
MCwgcGl4ZWxfdGVzdHM9VHJ1ZSkKLSAgICAgICAgZHJpdmVyLnN0YXJ0KFRydWUsIFtdKQotICAg
ICAgICBsYXN0X3RtcGRpciA9IHBvcnQuX2ZpbGVzeXN0ZW0ubGFzdF90bXBkaXIKLSAgICAgICAg
c2VsZi5hc3NlcnROb3RFcXVhbHMobGFzdF90bXBkaXIsIE5vbmUpCi0gICAgICAgIGRyaXZlci5z
dG9wKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0Ll9maWxlc3lzdGVtLmlzZGlyKGxh
c3RfdG1wZGlyKSkKLQotICAgIGRlZiB0ZXN0X3R3b19zdGFydHNfY2xlYW5zX3VwX3Byb3Blcmx5
KHNlbGYpOgotICAgICAgICBwb3J0ID0gVGVzdFdlYktpdFBvcnQoKQotICAgICAgICBkcml2ZXIg
PSBXZWJLaXREcml2ZXIocG9ydCwgMCwgcGl4ZWxfdGVzdHM9VHJ1ZSkKLSAgICAgICAgZHJpdmVy
LnN0YXJ0KFRydWUsIFtdKQotICAgICAgICBsYXN0X3RtcGRpciA9IHBvcnQuX2ZpbGVzeXN0ZW0u
bGFzdF90bXBkaXIKLSAgICAgICAgZHJpdmVyLl9zdGFydChUcnVlLCBbXSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShwb3J0Ll9maWxlc3lzdGVtLmlzZGlyKGxhc3RfdG1wZGlyKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQveHZmYmRyaXZl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQveHZmYmRyaXZl
ci5weQppbmRleCBjZmNiNWExOGNkMzUxMmIzOWI1MmFkNmU0MmVhZmIwYTJhOTM4NDFiLi5iMjBj
YTk4ZWVmMGFmMzJlNzk0OTVkNGQ2ZTNmNmFhODBiNDU3NWFmIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3h2ZmJkcml2ZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC94dmZiZHJpdmVyLnB5CkBAIC0z
MiwxMyArMzIsMTMgQEAgaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2VzcyBpbXBvcnQgU2VydmVyUHJv
Y2VzcwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktp
dERyaXZlcgorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaW1wb3J0IERy
aXZlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0
aXZlCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCi1jbGFzcyBYdmZi
RHJpdmVyKFdlYktpdERyaXZlcik6CitjbGFzcyBYdmZiRHJpdmVyKERyaXZlcik6CiAgICAgZGVm
IF9zdGFydChzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CiAKICAgICAgICAgIyBD
b2xsZWN0IHRoZSBudW1iZXIgb2YgWCBzZXJ2ZXJzIHJ1bm5pbmcgYWxyZWFkeSBhbmQgbWFrZQpA
QCAtNjYsNyArNjYsNyBAQCBjbGFzcyBYdmZiRHJpdmVyKFdlYktpdERyaXZlcik6CiAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gU2VydmVyUHJvY2VzcyhzZWxmLl9wb3J0LCBzZXJ2ZXJf
bmFtZSwgc2VsZi5jbWRfbGluZShwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyksIGVudmlyb25t
ZW50KQogCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIFdlYktpdERyaXZlci5zdG9wKHNl
bGYpCisgICAgICAgIHN1cGVyKFh2ZmJEcml2ZXIsIHNlbGYpLnN0b3AoKQogICAgICAgICBpZiBn
ZXRhdHRyKHNlbGYsICdfeHZmYl9wcm9jZXNzJywgTm9uZSk6CiAgICAgICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAgICAgc2VsZi5feHZmYl9wcm9jZXNzLnRlcm1pbmF0ZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>