<?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>115005</bug_id>
          
          <creation_ts>2013-04-22 18:23:23 -0700</creation_ts>
          <short_desc>Remove wxWebKit support from the Tools</short_desc>
          <delta_ts>2013-04-23 12:20:14 -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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>kevino</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>879550</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-22 18:23:23 -0700</bug_when>
    <thetext>Remove wxWebKit support from the Tools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879552</commentid>
    <comment_count>1</comment_count>
      <attachid>199136</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-22 18:26:26 -0700</bug_when>
    <thetext>Created attachment 199136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880071</commentid>
    <comment_count>2</comment_count>
      <attachid>199136</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-23 12:20:12 -0700</bug_when>
    <thetext>Comment on attachment 199136
Patch

Clearing flags on attachment: 199136

Committed r148980: &lt;http://trac.webkit.org/changeset/148980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880072</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-23 12:20:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199136</attachid>
            <date>2013-04-22 18:26:26 -0700</date>
            <delta_ts>2013-04-23 12:20:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115005-20130422182551.patch</filename>
            <type>text/plain</type>
            <size>119549</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4OTM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTY3YTc1YjhmZGUwODc3MDUyNmNmYWIzYzU2YjI2MjA4
NmVkMGE2Zi4uMDI0MzAyMWQ2MjEzYTI0MDFhNGMzYWZlZGY4MTA2M2U2OTRhNGYwOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2
IEBACisyMDEzLTA0LTIyICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSB3eFdlYktpdCBzdXBwb3J0IGZyb20gdGhlIFRvb2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUwMDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd3hXZWJLaXQgcG9y
dCBpcyBubyBsb25nZXIgYWN0aXZlbHkgbWFpbnRhaW5lZCBieSBLZXZpbgorICAgICAgICBvbiB3
ZWJraXQub3JnLiBSZW1vdmUgdGhlIGNvZGUgdW50aWwgbmV3IG1haW50YWluZXJzIHJlc3VtZSB0
aGUgd29yay4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd3NjcmlwdDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVu
ZGVyVHJlZVd4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9EdW1w
UmVuZGVyVHJlZVd4Lmg6IFJlbW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvR0ND
b250cm9sbGVyV3guY3BwOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rl
c3RSdW5uZXJXeC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvV29y
a1F1ZXVlSXRlbVd4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLWR1bXBy
ZW5kZXJ0cmVlOgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtanNjOgorICAgICAgICAoYnVpbGRN
eVByb2plY3QpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorICAgICAgICAqIFNj
cmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy9ydW4tbGF1bmNo
ZXI6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOgorICAgICAgICAoYXJndW1lbnRz
Rm9yQ29uZmlndXJhdGlvbik6CisgICAgICAgIChkZXRlcm1pbmVDb25maWd1cmF0aW9uUHJvZHVj
dERpcik6CisgICAgICAgIChkZXRlcm1pbmVQYXNzZWRBcmNoaXRlY3R1cmUpOgorICAgICAgICAo
YnVpbHREeWxpYlBhdGhGb3JOYW1lKToKKyAgICAgICAgKGRldGVybWluZUlzUXQpOgorICAgICAg
ICAoaXNBcHBsZVdlYktpdCk6CisgICAgICAgIChsYXVuY2hlclBhdGgpOgorICAgICAgICAobGF1
bmNoZXJOYW1lKToKKyAgICAgICAgKGNoZWNrUmVxdWlyZWRTeXN0ZW1Db25maWcpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRpb25hcmVhcy5weToK
KyAgICAgICAgKiB3YWYvYnVpbGQvYnVpbGRfdXRpbHMucHk6IFJlbW92ZWQuCisgICAgICAgICog
d2FmL2J1aWxkL3NldHRpbmdzLnB5OiBSZW1vdmVkLgorICAgICAgICAqIHdhZi9idWlsZC93YWZf
ZXh0ZW5zaW9ucy5weTogUmVtb3ZlZC4KKyAgICAgICAgKiB3YWYvYnVpbGQvd3hwcmVzZXRzLnB5
OiBSZW1vdmVkLgorICAgICAgICAqIHd4L2Jyb3dzZXIvYnJvd3Nlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogd3gvYnJvd3Nlci93c2NyaXB0OiBSZW1vdmVkLgorICAgICAgICAqIHd4L2luc3Rh
bGwtdW5peC1leHRyYXM6IFJlbW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2J1aWxkLWRl
Ymlhbi1pbnN0YWxsZXIucHk6IFJlbW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2J1aWxk
LW1hYy1pbnN0YWxsZXIucHk6IFJlbW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2J1aWxk
LXdpbi1pbnN0YWxsZXIucHk6IFJlbW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2RlYmlh
bi9jaGFuZ2Vsb2c6IFJlbW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2RlYmlhbi9jb21w
YXQ6IFJlbW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2RlYmlhbi9jb250cm9sOiBSZW1v
dmVkLgorICAgICAgICAqIHd4L3BhY2thZ2luZy9kZWJpYW4vY29weXJpZ2h0OiBSZW1vdmVkLgor
ICAgICAgICAqIHd4L3BhY2thZ2luZy9kZWJpYW4vcHl0aG9uLXdlYmtpdHd4Lmluc3RhbGw6IFJl
bW92ZWQuCisgICAgICAgICogd3gvcGFja2FnaW5nL2RlYmlhbi9ydWxlczogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3eC9wYWNrYWdpbmcvd3hXZWJLaXRJbnN0YWxsZXIuaXNzLmluOiBSZW1vdmVkLgor
CiAyMDEzLTA0LTIyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0
dHA6Ly93ZWJraXQub3JnL2IvMTE0OTg5PiBBZGQgYSB1c2VyIGRlZmF1bHQgdG8gYWxsb3cgdXNl
IG9mIHRoZSBTYWZhcmkgYmluYXJ5IHJhdGhlciB0aGFuIFNhZmFyaUZvcldlYktpdERldmVsb3Bt
ZW50CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuaAppbmRleCA2Mjc4OWI1M2I1OTY4
ZGIzZjJiYTEzNmUzMWQ4ZjI0OGFjN2MxODZkLi40N2Y4OGU1OGY1MGM4ZjA5ZjQzOTNlNmI0Y2Q3
YThlZjZlOTU2NDUyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmgKQEAgLTQw
LDggKzQwLDYgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVdpbi5oIgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlR3RrLmgiCi0jZWxpZiBQTEFURk9STShX
WCkKLSNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVd4LmgiCiAjZWxpZiBQTEFURk9STShFRkwpCiAj
aW5jbHVkZSAiRHVtcFJlbmRlclRyZWVFZmwuaCIKICNlbGlmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jb25maWcuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NvbmZpZy5oCmluZGV4IGI1YWVkY2NiMGMzNGQ4YjMzYzU3NjcwOGY0NzNjM2Rj
ZTVkODM4YjcuLjY0MjQ0NjVkYzMxNmY1NmU4NTEyMjU1OTBmYjc4NGUyNDc4MTg3MzYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NvbmZpZy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NvbmZpZy5oCkBAIC0zMiwxMyArMzIsNiBAQAogI2luY2x1ZGUgPHd0Zi9FeHBvcnRN
YWNyb3MuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CiAKLS8vIE9uIE1T
Vywgd3ggaGVhZGVycyBuZWVkIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5kb3dzLmggaXMuCi0v
LyBUaGUgb25seSB3YXkgd2UgY2FuIGFsd2F5cyBlbnN1cmUgdGhpcyBpcyBpZiB3ZSBpbmNsdWRl
IHd4IGhlcmUuCi0jaWYgUExBVEZPUk0oV1gpCi0jaW5jbHVkZSA8d3gvZGVmcy5oPgotI2VuZGlm
Ci0KLQogI2lmZGVmIF9fY3BsdXNwbHVzCiAjdW5kZWYgbmV3CiAjdW5kZWYgZGVsZXRlCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93c2NyaXB0IGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3NjcmlwdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFhMDM1NmZhODlmZDIz
MjIxMzQ5MWMzM2QwMjVhYzI3MDcyNzVmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93c2NyaXB0CisrKyAvZGV2L251
bGwKQEAgLTEsNjcgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIENvcHlyaWdo
dCAoQykgMjAwOSBLZXZpbiBPbGxpdmllciAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0jIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0jCi0jIHd4QnJvd3NlciBzYW1wbGUgYXBwIGJ1
aWxkIHNjcmlwdCBmb3IgdGhlIHdhZiBidWlsZCBzeXN0ZW0KLQotaW1wb3J0IHN5cwotCi1mcm9t
IHNldHRpbmdzIGltcG9ydCAqCi0KLWluY2x1ZGVfcGF0aHMgPSBbCi0gICAgICAgICAgICAgICAg
b3MucGF0aC5qb2luKG91dHB1dF9kaXIpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3
a19yb290LCAnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJyksCi0gICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV1RGJyksCi0gICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScpLAotICAgICAgICAgICAgICAg
IG9zLnBhdGguam9pbih3a19yb290LCAnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAn
d3gnKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJjZScsICdX
ZWJLaXQnLCAnd3gnKSwgCi0gICAgICAgICAgICAgICAgJy4nLCAKLSAgICAgICAgICAgICAgICAn
d3gnCi0gICAgICAgICAgICAgICAgXQotc291cmNlcyA9IFsKLSAgICAgICAgICAgICdEdW1wUmVu
ZGVyVHJlZUNvbW1vbi5jcHAnLAotICAgICAgICAgICAgJ1Rlc3RSdW5uZXIuY3BwJywKLSAgICAg
ICAgICAgICdXb3JrUXVldWUuY3BwJywKLSAgICAgICAgICAgICd3eC9EdW1wUmVuZGVyVHJlZVd4
LmNwcCcsCi0gICAgICAgICAgICAnd3gvVGVzdFJ1bm5lcld4LmNwcCcsCi0gICAgICAgICAgICAn
d3gvV29ya1F1ZXVlSXRlbVd4LmNwcCcKLSAgICAgICAgICBdCi0KLWRlZiBzZXRfb3B0aW9ucyhv
cHQpOgotICAgIGNvbW1vbl9zZXRfb3B0aW9ucyhvcHQpCi0KLWRlZiBjb25maWd1cmUoY29uZik6
Ci0gICAgY29tbW9uX2NvbmZpZ3VyZShjb25mKQotICAgIAotZGVmIGJ1aWxkKGJsZCk6Ci0gICAg
b2JqID0gYmxkLm5ld190YXNrX2dlbigKLSAgICAgICAgZmVhdHVyZXMgPSAnY3h4IGNwcm9ncmFt
JywKLSAgICAgICAgaW5jbHVkZXMgPSAnICcuam9pbihpbmNsdWRlX3BhdGhzKSwKLSAgICAgICAg
c291cmNlID0gc291cmNlcywKLSAgICAgICAgdGFyZ2V0ID0gJ0R1bXBSZW5kZXJUcmVlJywKLSAg
ICAgICAgdXNlbGliID0gJ0lDVSBXWCAnICsgZ2V0X2NvbmZpZygpLAotICAgICAgICBsaWJwYXRo
ID0gW291dHB1dF9kaXJdLAotICAgICAgICB1c2VsaWJfbG9jYWwgPSAnanNjb3JlIHd4d2Via2l0
JywKLSAgICAgICAgaW5zdGFsbF9wYXRoID0gb3V0cHV0X2RpcikKLSAgICAgICAgCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYWRlY2FmOGYwNWZjODFkNTlkNzBkNTBhNjk3ZTQ5YTMzOTk5YTUwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0R1bXBSZW5kZXJUcmVlV3guY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzM3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2V2aW4gT2xsaXZpZXIgPGtldmlu
b0B0aGVvbGxpdmllcnMuY29tPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZS5oIgotCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgotI2luY2x1ZGUgIldvcmtRdWV1
ZS5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHQuaD4KLQotI2luY2x1ZGUgPHd4L3d4Lmg+Ci0jaW5jbHVkZSAiV2ViVmll
dy5oIgotI2luY2x1ZGUgIldlYkZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViQnJvd3NlclNoZWxsLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNp
bmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx0aW1lLmg+
Ci0KLXZvbGF0aWxlIGJvb2wgZG9uZSA9IHRydWU7Ci12b2xhdGlsZSBib29sIG5vdGlmaWVkID0g
ZmFsc2U7Ci1zdGF0aWMgYm9vbCBwcmludFNlcGFyYXRvcnMgPSB0cnVlOwotc3RhdGljIGludCBk
dW1wUGl4ZWxzRm9yQWxsVGVzdHMgPSBmYWxzZTsKLXN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckN1
cnJlbnRUZXN0Owotc3RhdGljIGludCBkdW1wVHJlZSA9IDE7Ci10aW1lX3Qgc3RhcnRUaW1lOyAv
LyB0byBkZXRlY3QgdGltZW91dHMgLyBmYWlsZWQgdGVzdHMKLQotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLUZJTEUqIGxvZ091dHB1dDsKLQotUmVmUHRy
PFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwotc3RhdGljIFdlYlZpZXcqIHdlYlZpZXc7Ci1zdGF0
aWMgd3hUaW1lciogaWRsZVRpbWVyOwotCi1jb25zdCB1bnNpZ25lZCB0aW1lT3V0ID0gMTA7Ci1j
b25zdCB1bnNpZ25lZCBtYXhWaWV3SGVpZ2h0ID0gNjAwOwotY29uc3QgdW5zaWduZWQgbWF4Vmll
d1dpZHRoID0gODAwOwotCi1jbGFzcyBMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyIDogcHVibGlj
IHd4RXZ0SGFuZGxlciB7Ci0KLXB1YmxpYzoKLSAgICBMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVy
KFdlYlZpZXcqIHdlYlZpZXcpCi0gICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi0gICAgewot
ICAgIH0KLSAgICAKLSAgICB2b2lkIGJpbmRFdmVudHMoKSAKLSAgICB7Ci0gICAgICAgIG1fd2Vi
Vmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0xPQUQsIFdlYlZpZXdMb2FkRXZlbnRIYW5kbGVy
KExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9uTG9hZEV2ZW50KSwgMCwgdGhpcyk7Ci0gICAg
ICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0pTX0FMRVJULCBXZWJWaWV3QWxl
cnRFdmVudEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6T25BbGVydEV2ZW50KSwg
MCwgdGhpcyk7Ci0gICAgICAgIG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0pTX0NP
TkZJUk0sIFdlYlZpZXdDb25maXJtRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRs
ZXI6Ok9uQ29uZmlybUV2ZW50KSwgMCwgdGhpcyk7Ci0gICAgICAgIG1fd2ViVmlldy0+Q29ubmVj
dCh3eEVWVF9XRUJWSUVXX0pTX1BST01QVCwgV2ViVmlld1Byb21wdEV2ZW50SGFuZGxlcihMYXlv
dXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPblByb21wdEV2ZW50KSwgMCwgdGhpcyk7Ci0gICAgICAg
IG1fd2ViVmlldy0+Q29ubmVjdCh3eEVWVF9XRUJWSUVXX0NPTlNPTEVfTUVTU0FHRSwgV2ViVmll
d0NvbnNvbGVNZXNzYWdlRXZlbnRIYW5kbGVyKExheW91dFdlYlZpZXdFdmVudEhhbmRsZXI6Ok9u
Q29uc29sZU1lc3NhZ2VFdmVudCksIDAsIHRoaXMpOwotICAgICAgICBtX3dlYlZpZXctPkNvbm5l
Y3Qod3hFVlRfV0VCVklFV19SRUNFSVZFRF9USVRMRSwgV2ViVmlld1JlY2VpdmVkVGl0bGVFdmVu
dEhhbmRsZXIoTGF5b3V0V2ViVmlld0V2ZW50SGFuZGxlcjo6T25SZWNlaXZlZFRpdGxlRXZlbnQp
LCAwLCB0aGlzKTsKLSAgICAgICAgbV93ZWJWaWV3LT5Db25uZWN0KHd4RVZUX1dFQlZJRVdfV0lO
RE9XX09CSkVDVF9DTEVBUkVELCBXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50SGFuZGxl
cihMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVyOjpPbldpbmRvd09iamVjdENsZWFyZWRFdmVudCks
IDAsIHRoaXMpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIE9uTG9hZEV2ZW50KFdlYlZpZXdMb2Fk
RXZlbnQmIGV2ZW50KSAKLSAgICB7Ci0KLSAgICAgICAgaWYgKGV2ZW50LkdldFN0YXRlKCkgPT0g
V0VCVklFV19MT0FEX0ZBSUxFRCB8fCBldmVudC5HZXRTdGF0ZSgpID09IFdFQlZJRVdfTE9BRF9T
VE9QUEVEKQotICAgICAgICAgICAgZG9uZSA9IHRydWU7IAotICAgICAgICAKLSAgICAgICAgaWYg
KGV2ZW50LkdldFN0YXRlKCkgPT0gV0VCVklFV19MT0FEX09OTE9BRF9IQU5ETEVEKSB7Ci0gICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFnVGVz
dFJ1bm5lci0+d2FpdFRvRHVtcCgpIHx8IG5vdGlmaWVkKSB7Ci0gICAgICAgICAgICAgICAgZHVt
cCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZvaWQgT25B
bGVydEV2ZW50KFdlYlZpZXdBbGVydEV2ZW50JiBldmVudCkKLSAgICB7Ci0gICAgICAgIHd4RnBy
aW50ZihzdGRvdXQsICJBTEVSVDogJVNcbiIsIGV2ZW50LkdldE1lc3NhZ2UoKSk7Ci0gICAgfQot
ICAgIAotICAgIHZvaWQgT25Db25maXJtRXZlbnQoV2ViVmlld0NvbmZpcm1FdmVudCYgZXZlbnQp
Ci0gICAgewotICAgICAgICB3eEZwcmludGYoc3Rkb3V0LCAiQ09ORklSTTogJVNcbiIsIGV2ZW50
LkdldE1lc3NhZ2UoKSk7Ci0gICAgICAgIGV2ZW50LlNldFJldHVybkNvZGUoMSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBPblByb21wdEV2ZW50KFdlYlZpZXdQcm9tcHRFdmVudCYgZXZlbnQpCi0gICAg
ewotICAgICAgICB3eEZwcmludGYoc3Rkb3V0LCAiUFJPTVBUOiAlUywgZGVmYXVsdCB0ZXh0OiAl
U1xuIiwgZXZlbnQuR2V0TWVzc2FnZSgpLCBldmVudC5HZXRSZXNwb25zZSgpKTsKLSAgICAgICAg
ZXZlbnQuU2V0UmV0dXJuQ29kZSgxKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBPbkNvbnNvbGVN
ZXNzYWdlRXZlbnQoV2ViVmlld0NvbnNvbGVNZXNzYWdlRXZlbnQmIGV2ZW50KQotICAgIHsKLSAg
ICAgICAgZnByaW50ZihzdGRvdXQsICJDT05TT0xFIE1FU1NBR0U6ICIpOwotICAgICAgICBpZiAo
ZXZlbnQuR2V0TGluZU51bWJlcigpKQotICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJsaW5l
ICVkOiAiLCBldmVudC5HZXRMaW5lTnVtYmVyKCkpOwotICAgICAgICB3eEZwcmludGYoc3Rkb3V0
LCAiJVNcbiIsIGV2ZW50LkdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgT25S
ZWNlaXZlZFRpdGxlRXZlbnQoV2ViVmlld1JlY2VpdmVkVGl0bGVFdmVudCYgZXZlbnQpCi0gICAg
ewotICAgICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBUaXRsZUNoYW5nZXMoKSAmJiAhZG9uZSkK
LSAgICAgICAgICAgIHd4RnByaW50ZihzdGRvdXQsICJUSVRMRSBDSEFOR0VEOiAnJVMnXG4iLCBl
dmVudC5HZXRUaXRsZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBPbldpbmRvd09iamVjdENs
ZWFyZWRFdmVudChXZWJWaWV3V2luZG93T2JqZWN0Q2xlYXJlZEV2ZW50JiBldmVudCkKLSAgICB7
Ci0gICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICAgICAgZ1Rlc3RSdW5uZXIt
Pm1ha2VXaW5kb3dPYmplY3QoZXZlbnQuR2V0SlNDb250ZXh0KCksIGV2ZW50LkdldFdpbmRvd09i
amVjdCgpLCAmZXhjZXB0aW9uKTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIFdlYlZpZXcq
IG1fd2ViVmlldzsKLQotfTsKLQotdm9pZCBub3RpZnlEb25lRmlyZWQoKSAKLXsKLSAgICBub3Rp
ZmllZCA9IHRydWU7Ci0gICAgaWYgKGRvbmUpCi0gICAgICAgIGR1bXAoKTsKLX0KLQotTGF5b3V0
V2ViVmlld0V2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyID0gMDsKLQotc3RhdGljIHd4U3RyaW5n
IGR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUqIGZyYW1lKQotewotICAgIC8vIFRPRE86IGltcGxl
bWVudCB0aGlzLiBsZWF2aW5nIHRoaXMgaGVyZSBzbyB3ZSBkb24ndCBmb3JnZXQgdGhpcyBjYXNl
LgotICAgIGlmIChnVGVzdFJ1bm5lci0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIGZyYW1lLT5HZXRJbm5lclRleHQoKTsKLX0KLQotdm9pZCBkdW1w
KCkKLXsgICAgCi0gICAgaWYgKCFkb25lKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYg
KGdUZXN0UnVubmVyLT53YWl0VG9EdW1wKCkgJiYgIW5vdGlmaWVkKQotICAgICAgICByZXR1cm47
Ci0gICAgICAgIAotICAgIGlmIChkdW1wVHJlZSkgewotICAgICAgICBjb25zdCBjaGFyKiByZXN1
bHQgPSAwOwotCi0gICAgICAgIGJvb2wgZHVtcEFzVGV4dCA9IGdUZXN0UnVubmVyLT5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgIHd4U3RyaW5nIHN0cjsKLSAgICAgICAgaWYgKGdUZXN0UnVubmVyLT5k
dW1wQXNUZXh0KCkpCi0gICAgICAgICAgICBzdHIgPSBkdW1wRnJhbWVzQXNUZXh0KHdlYlZpZXct
PkdldE1haW5GcmFtZSgpKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0ciA9IHdlYlZp
ZXctPkdldE1haW5GcmFtZSgpLT5HZXRFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCk7Ci0KLSAgICAg
ICAgcmVzdWx0ID0gc3RyLlRvVVRGOCgpOwotICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlOwotICAgICAgICAgICAgaWYgKGdUZXN0UnVu
bmVyLT5kdW1wQXNUZXh0KCkpCi0gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIldlYkZy
YW1lOjpHZXRJbm5lclRleHQiOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVy
cm9yTWVzc2FnZSA9ICJXZWJGcmFtZTo6R2V0RXh0ZXJuYWxSZXByZXNlbnRhdGlvbiI7Ci0gICAg
ICAgICAgICBwcmludGYoIkVSUk9SOiAwIHJlc3VsdCBmcm9tICVzIiwgZXJyb3JNZXNzYWdlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHJlc3VsdCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBCYWNrRm9yd2FyZExpc3Qo
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IG5vdCBpbXBsZW1lbnRlZAotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHByaW50U2VwYXJhdG9ycykgewotICAgICAgICAgICAgcHV0cygiI0VPRiIp
OwotICAgICAgICAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZGVycik7Ci0gICAgICAgICAgICBmZmx1
c2goc3Rkb3V0KTsKLSAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKGR1bXBQaXhlbHNGb3JDdXJyZW50VGVzdAotICAgICAgICAmJiBnVGVzdFJ1
bm5lci0+Z2VuZXJhdGVQaXhlbFJlc3VsdHMoKQotICAgICAgICAmJiAhZ1Rlc3RSdW5uZXItPmR1
bXBET01Bc1dlYkFyY2hpdmUoKQotICAgICAgICAmJiAhZ1Rlc3RSdW5uZXItPmR1bXBTb3VyY2VB
c1dlYkFyY2hpdmUoKSkgewotICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGR1bXBp
bmcgcGl4ZWxzCi0gICAgICAgIGZmbHVzaChzdGRvdXQpOwotICAgIH0KLQotICAgIHB1dHMoIiNF
T0YiKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLQotICAgIGdU
ZXN0UnVubmVyLmNsZWFyKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgd3hTdHJp
bmcgaW5wdXRMaW5lKQotewotICAgIGRvbmUgPSBmYWxzZTsKLSAgICB0aW1lKCZzdGFydFRpbWUp
OwotCi0gICAgVGVzdENvbW1hbmQgY29tbWFuZCA9IHBhcnNlSW5wdXRMaW5lKHN0ZDo6c3RyaW5n
KGlucHV0TGluZS5Ub0FzY2lpKCkpKTsKLSAgICBzdHJpbmcmIHBhdGhPclVSTCA9IGNvbW1hbmQu
cGF0aE9yVVJMOwotICAgIGR1bXBQaXhlbHNGb3JDdXJyZW50VGVzdCA9IGNvbW1hbmQuc2hvdWxk
RHVtcFBpeGVscyB8fCBkdW1wUGl4ZWxzRm9yQWxsVGVzdHM7Ci0gICAgCi0gICAgLy8gQ1VSTCBp
c24ndCBoYXBweSBpZiB3ZSBkb24ndCBoYXZlIGEgcHJvdG9jb2wuCi0gICAgc2l6ZV90IGh0dHAg
PSBwYXRoT3JVUkwuZmluZCgiaHR0cDovLyIpOwotICAgIGlmIChodHRwID09IHN0cmluZzo6bnBv
cykKLSAgICAgICAgcGF0aE9yVVJMLmluc2VydCgwLCAiZmlsZTovLyIpOwotICAgIAotICAgIGdU
ZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKHBhdGhPclVSTCwgY29tbWFuZC5leHBlY3Rl
ZFBpeGVsSGFzaCk7Ci0gICAgaWYgKCFnVGVzdFJ1bm5lcikgewotICAgICAgICB3eFRoZUFwcC0+
RXhpdE1haW5Mb29wKCk7Ci0gICAgfQotCi0gICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+Y2xlYXIo
KTsKLSAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96ZW4oZmFsc2UpOwotCi0gICAgd2Vi
Vmlldy0+TG9hZFVSTCh3eFN0cmluZyhwYXRoT3JVUkwuY19zdHIoKSwgd3hDb252VVRGOCkpOwot
ICAgIAotICAgIC8vIHdhaXQgdW50aWwgbG9hZCBjb21wbGV0ZXMgYW5kIHRoZSByZXN1bHRzIGFy
ZSBkdW1wZWQKLSAgICB3aGlsZSAoIWRvbmUpCi0gICAgICAgIHd4U2FmZVlpZWxkKCk7Ci19Ci0K
LWNsYXNzIE15QXBwIDogcHVibGljIHd4QXBwCi17Ci1wdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgT25Jbml0KCk7Ci0gICAgCi1wcml2YXRlOgotICAgIHd4TG9nKiBsb2dnZXI7Ci19OwotCi0K
LUlNUExFTUVOVF9BUFAoTXlBcHApCi0KLWJvb2wgTXlBcHA6Ok9uSW5pdCgpCi17Ci0gICAgbG9n
T3V0cHV0ID0gZm9wZW4oIm91dHB1dC50eHQiLCAiYWIiKTsKLSAgICBpZiAobG9nT3V0cHV0KSB7
Ci0gICAgICAgIGxvZ2dlciA9IG5ldyB3eExvZ1N0ZGVycihsb2dPdXRwdXQpOwotICAgICAgICB3
eExvZzo6U2V0QWN0aXZlVGFyZ2V0KGxvZ2dlcik7Ci0gICAgfQotCi0gICAgd3hMb2dNZXNzYWdl
KHd4VCgiU3RhcnRpbmcgRHVtcFJlbmRlclRvb2wsICVkIGFyZ3MuXG4iKSwgYXJnYyk7Ci0KLSAg
ICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7ICsraSkgewotICAgICAgICB3eFN0cmluZyBvcHRp
b24gPSB3eFN0cmluZyhhcmd2W2ldKTsKLSAgICAgICAgaWYgKCFvcHRpb24uQ21wTm9DYXNlKF9U
KCItLW5vdHJlZSIpKSkgewotICAgICAgICAgICAgZHVtcFRyZWUgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIW9wdGlvbi5D
bXBOb0Nhc2UoX1QoIi0tdHJlZSIpKSkgewotICAgICAgICAgICAgZHVtcFRyZWUgPSB0cnVlOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW9wdGlvbi5D
bXBOb0Nhc2UoX1QoIi0tcGl4ZWwtdGVzdHMiKSkpIHsKLSAgICAgICAgICAgIGR1bXBQaXhlbHNG
b3JBbGxUZXN0cyA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAg
IH0KLSAgICB3eEluaXRBbGxJbWFnZUhhbmRsZXJzKCk7Ci0gICAgICAgIAotICAgIC8vIGNyZWF0
ZSB0aGUgbWFpbiBhcHBsaWNhdGlvbiB3aW5kb3cKLSAgICBXZWJCcm93c2VyU2hlbGwqIHdlYkZy
YW1lID0gbmV3IFdlYkJyb3dzZXJTaGVsbChfVCgid3hXZWJLaXQgRHVtcFJlbmRlclRyZWUgQXBw
IiksICJhYm91dDpibGFuayIpOwotICAgIFNldFRvcFdpbmRvdyh3ZWJGcmFtZSk7Ci0gICAgd2Vi
VmlldyA9IHdlYkZyYW1lLT53ZWJ2aWV3OwotICAgIHdlYlZpZXctPlNldFNpemUod3hTaXplKG1h
eFZpZXdXaWR0aCwgbWF4Vmlld0hlaWdodCkpOwotICAgIAotICAgIGlmICghZXZlbnRIYW5kbGVy
KSB7Ci0gICAgICAgIGV2ZW50SGFuZGxlciA9IG5ldyBMYXlvdXRXZWJWaWV3RXZlbnRIYW5kbGVy
KHdlYlZpZXcpOwotICAgICAgICBldmVudEhhbmRsZXItPmJpbmRFdmVudHMoKTsKLSAgICB9Ci0K
LSAgICBpbnQgb3B0aW5kID0gMTsKLSAgICB0aW1lKCZzdGFydFRpbWUpOwotICAgIHd4U3RyaW5n
IG9wdGlvbl9zdHIgPSB3eFN0cmluZyhhcmd2W29wdGluZF0pOwotICAgIGlmIChhcmdjID09IG9w
dGluZCsxICYmIG9wdGlvbl9zdHIuRmluZChfVCgiLSIpKSA9PSAwKSB7Ci0gICAgICAgIGNoYXIg
ZmlsZW5hbWVCdWZmZXJbMjA0OF07Ci0gICAgICAgIHdoaWxlIChmZ2V0cyhmaWxlbmFtZUJ1ZmZl
ciwgc2l6ZW9mKGZpbGVuYW1lQnVmZmVyKSwgc3RkaW4pKSB7Ci0gICAgICAgICAgICB3eFN0cmlu
ZyBmaWxlbmFtZSA9IHd4U3RyaW5nOjpGcm9tVVRGOChmaWxlbmFtZUJ1ZmZlcik7Ci0gICAgICAg
ICAgICBjaGFyKiBuZXdMaW5lQ2hhcmFjdGVyID0gc3RyY2hyKGZpbGVuYW1lQnVmZmVyLCAnXG4n
KTsKLSAgICAgICAgICAgIGlmIChuZXdMaW5lQ2hhcmFjdGVyKQotICAgICAgICAgICAgICAgICpu
ZXdMaW5lQ2hhcmFjdGVyID0gJ1wwJzsKLQotICAgICAgICAgICAgaWYgKHN0cmxlbihmaWxlbmFt
ZUJ1ZmZlcikgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHd4
TG9nTWVzc2FnZSh3eFQoIlJ1bm5pbmcgdGVzdCAlUy5cbiIpLCBmaWxlbmFtZUJ1ZmZlcik7Ci0g
ICAgICAgICAgICBydW5UZXN0KGZpbGVuYW1lKTsKLSAgICAgICAgfQotICAgIAotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHByaW50U2VwYXJhdG9ycyA9IChvcHRpbmQgPCBhcmdjIC0gMSB8fCAoZHVt
cFBpeGVsc0ZvckN1cnJlbnRUZXN0ICYmIGR1bXBUcmVlKSk7Ci0gICAgICAgIGZvciAoaW50IGkg
PSBvcHRpbmQ7IGkgIT0gYXJnYzsgKytpKSB7Ci0gICAgICAgICAgICBydW5UZXN0KHd4VGhlQXBw
LT5hcmd2WzFdKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB3ZWJGcmFtZS0+Q2xvc2Uo
KTsKLSAgICBkZWxldGUgZXZlbnRIYW5kbGVyOwotCi0gICAgd3hMb2c6OlNldEFjdGl2ZVRhcmdl
dCgwKTsKLSAgICBkZWxldGUgbG9nZ2VyOwotICAgIGZjbG9zZShsb2dPdXRwdXQpOwotICAgIAot
ICAgIC8vIHJldHVybmluZyBmYWxzZSBzaHV0cyB0aGUgYXBwIGRvd24KLSAgICByZXR1cm4gZmFs
c2U7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJl
ZVd4LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9EdW1wUmVuZGVyVHJlZVd4LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MDkyYjg0NTI5MzZhOGUyYTgyYjMwYzUwYjM3NGEx
YThiODEzYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvRHVtcFJlbmRlclRyZWVXeC5oCisrKyAvZGV2L251bGwK
QEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBLZXZpbiBPbGxpdmll
ciA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEdW1wUmVuZGVyVHJlZVd4X2gKLSNk
ZWZpbmUgRHVtcFJlbmRlclRyZWVXeF9oCi0KLWV4dGVybiB2b2lkIG5vdGlmeURvbmVGaXJlZCgp
OwotCi0jZW5kaWYgLy8gRHVtcFJlbmRlclRyZWVXeF9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93eC9HQ0NvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
eC9HQ0NvbnRyb2xsZXJXeC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZGY2
MmZmYmFlMjgzYWFmNzg0OTM5NTc4MjM3ZmIxNmIzZTM3N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvR0NDb250
cm9sbGVyV3guY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBLZXZpbiBPbGxpdmllciA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgotCi12b2lkIEdDQ29u
dHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0Ci17Ci19Ci0KLXZvaWQgR0NDb250cm9sbGVyOjpjb2xs
ZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAotewotfQotCi1z
aXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJX
eC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjhkNzFhNmYyYTQxZGM3NGFmNTA1NmZhYjZhMTc0YzMw
MjljZjdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1MzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBLZXZpbiBPbGxpdmllciA8
a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXN0
UnVubmVyLmgiCi0KLSNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgotI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1JldGFpblB0ci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Lmg+Ci0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0KLQotVGVzdFJ1bm5lcjo6flRlc3RSdW5uZXIo
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjphZGRE
aXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QoKQotewotfQotCi1K
U1N0cmluZ1JlZiBUZXN0UnVubmVyOjpjb3B5RGVjb2RlZEhvc3ROYW1lKEpTU3RyaW5nUmVmIG5h
bWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotCi1KU1N0
cmluZ1JlZiBUZXN0UnVubmVyOjpjb3B5RW5jb2RlZEhvc3ROYW1lKEpTU3RyaW5nUmVmIG5hbWUp
Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotCi12b2lkIFRl
c3RSdW5uZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgdGVzdGluZyBmaXggZm9yIDY3Mjc0OTUKLX0KLQotdm9pZCBUZXN0UnVu
bmVyOjpkaXNwbGF5KCkKLXsKLX0KLQotdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgp
Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12b2lkIFRlc3RSdW5uZXI6Om5vdGlm
eURvbmUoKQotewotICAgIGlmIChtX3dhaXRUb0R1bXAgJiYgIVdvcmtRdWV1ZTo6c2hhcmVkKCkt
PmNvdW50KCkpCi0gICAgICAgIG5vdGlmeURvbmVGaXJlZCgpOwotICAgIG1fd2FpdFRvRHVtcCA9
IGZhbHNlOwotfQotCi1KU1N0cmluZ1JlZiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiB1cmwpCi17Ci0gICAgLy8gRnVuY3Rp
b24gaW50cm9kdWNlZCBpbiByMjg2OTAuIFRoaXMgbWF5IG5lZWQgc3BlY2lhbC1jYXNpbmcgb24g
V2luZG93cy4KLSAgICByZXR1cm4gSlNTdHJpbmdSZXRhaW4odXJsKTsgLy8gRG8gbm90aGluZyBv
biBVbml4LgotfQotCi12b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmws
IEpTU3RyaW5nUmVmIHRhcmdldCkKLXsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byByZXNvbHZl
IHJlbGF0aXZlIFVSTHMgaGVyZQotICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBM
b2FkSXRlbSh1cmwsIHRhcmdldCkpOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNldEFjY2VwdHNF
ZGl0aW5nKGJvb2wgYWNjZXB0c0VkaXRpbmcpCi17Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6c2V0
QWx3YXlzQWNjZXB0Q29va2llcyhib29sIGFsd2F5c0FjY2VwdENvb2tpZXMpCi17Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzIChhbmQgcmVzdG9yZSB0aGUgZGVmYXVsdCB2YWx1ZSBiZWZv
cmUgcnVubmluZyBlYWNoIHRlc3QgaW4gRHVtcFJlbmRlclRyZWUuY3BwKS4KLX0KLQotdm9pZCBU
ZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sLCBib29sKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRNYWluRnJhbWVJc0Zp
cnN0UmVzcG9uZGVyKGJvb2wgZmxhZykKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0K
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgY3lj
bGVzKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpz
ZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudAotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5h
YmxlZChib29sIGZsYWcpCi17Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQotewotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNl
dFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBlbGVtZW50LCBK
U1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYgbW9kZSkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6c2V0V2luZG93
SXNLZXkoYm9vbCB3aW5kb3dJc0tleSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0K
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0V2FpdFRvRHVtcChib29sIHdhaXRVbnRpbERvbmUpCi17Ci0g
ICAgc3RhdGljIGNvbnN0IGludCB0aW1lb3V0U2Vjb25kcyA9IDEwOwotCi0gICAgbV93YWl0VG9E
dW1wID0gd2FpdFVudGlsRG9uZTsKLX0KLQotaW50IFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KCkK
LXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLXZvaWQgVGVz
dFJ1bm5lcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12b2lkIFRlc3RSdW5uZXI6
OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCBlbmFibGVkKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRYU1NBdWRpdG9yRW5h
YmxlZChib29sIGVuYWJsZWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12b2lk
IFRlc3RSdW5uZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5h
YmxlZCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQot
dm9pZCBUZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIHBvcHVwQmxvY2tp
bmdFbmFibGVkKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVu
bmVyOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGZsYWcpCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudAotfQotCi12b2lkIFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5nUmVmIG5hbWUs
IEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9p
ZCBUZXN0UnVubmVyOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmlu
Z1JlZiBqc1VSTCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQgVGVzdFJ1
bm5lcjo6Y2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXQoKQotewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVz
KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgYXBwbGljYXRpb24gY2Fj
aGUgcXVvdGFzLgotfQotCi12b2lkIFRlc3RSdW5uZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZv
ck9yaWdpbihKU1N0cmluZ1JlZiB1cmwpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBz
dXBwb3J0IGRlbGV0aW5nIGFsbCBhcHBsaWNhdGlvbiBjYWNoZSBmb3IgYW4gb3JpZ2luLgotfQot
Ci1sb25nIGxvbmcgVGVzdFJ1bm5lcjo6bG9jYWxTdG9yYWdlRGlza1VzYWdlRm9yT3JpZ2luKEpT
U3RyaW5nUmVmIG9yaWdpbklkZW50aWZpZXIpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0
byBzdXBwb3J0IGdldHRpbmcgZGlzayB1c2FnZSBpbiBieXRlcyBmb3IgYW4gb3JpZ2luLgotICAg
IHJldHVybiAwOwotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCB0byBzdXBwb3J0IGFwcGxpY2F0aW9uIGNhY2hlIHF1b3Rhcy4KLX0KLQotbG9uZyBsb25n
IFRlc3RSdW5uZXI6OmFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdS
ZWYgb3JpZ2luKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gc3VwcG9ydCBnZXR0aW5n
IGRpc2sgdXNhZ2UgYnkgYWxsIGFwcGxpY2F0aW9uIGNhY2hlcyBmb3IgYW4gb3JpZ2luLgotICAg
IHJldHVybiAwOwotfQotCi0KLUpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhBcHBs
aWNhdGlvbkNhY2hlKEpTQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdG8gZ2V0IG9yaWdpbnMgdGhhdCBoYXZlIGFwcGxpY2F0aW9uIGNhY2hlcy4KLSAgICBy
ZXR1cm4gMDsKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpjbGVhckFsbERhdGFiYXNlcygpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotIAotdm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFz
ZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKLXsgICAgCi0gICAgLy8gRklYTUU6IGlt
cGxlbWVudAotfQotCi12b2lkIFRlc3RSdW5uZXI6OmdvQmFjaygpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0byBlbmFibGUgbG9hZGVyL25hdmlnYXRpb24td2hpbGUtZGVmZXJyaW5nLWxv
YWRzLmh0bWwKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wpCi17
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBlbmFibGUgbG9hZGVyL25hdmlnYXRpb24td2hp
bGUtZGVmZXJyaW5nLWxvYWRzLmh0bWwKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXREb21haW5S
ZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wsIEpTU3RyaW5nUmVmKQotewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRBcHBDYWNoZU1h
eGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCi17Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgotICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCi19
Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxh
dGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
ZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVh
ZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgotICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCi19Ci0KLXZvaWQgVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3Ry
aW5nUmVmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91
dCB0ZXN0cy4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4MjY0LgotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihib29sIGFsbG93KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9u
IGxheW91dCB0ZXN0cy4KLSAgICBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYWxsb3cp
OwotfQotCi1pbnQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHMoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9u
IGxheW91dCB0ZXN0cy4KLSAgICByZXR1cm4gLTE7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6YWRk
TW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVu
Y2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KLSAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgotfQotCi12b2lkIFRlc3RSdW5u
ZXI6OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKLXsKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgotICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCi19Ci0K
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFz
ZUVuYWJsZWQpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12b2lkIFRlc3RSdW5u
ZXI6OnNldENhY2hlTW9kZWwoaW50KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQot
Ym9vbCBUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIC8qbmFtZSovKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXNpemVf
dCBUZXN0UnVubmVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGlj
eURlbGVnYXRlKCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KLXZvaWQg
VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIC8qIGtleSAqLywgSlNT
dHJpbmdSZWYgLyogdmFsdWUgKi8pCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12
b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQoSlNTdHJpbmdSZWYgc291cmNlLCBib29sIHJ1
bkF0U3RhcnQsIGJvb2wgYWxsRnJhbWVzKQotewotICAgIHByaW50ZigiVGVzdFJ1bm5lcjo6YWRk
VXNlclNjcmlwdCBub3QgaW1wbGVtZW50ZWQuXG4iKTsKLX0KLQotdm9pZCBUZXN0UnVubmVyOjph
ZGRVc2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UsIGJvb2wgYWxsRnJhbWVzKQotewot
ICAgIHByaW50ZigiVGVzdFJ1bm5lcjo6YWRkVXNlclN0eWxlU2hlZXQgbm90IGltcGxlbWVudGVk
LlxuIik7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCi17Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotfQotCi12b2lkIFRlc3RSdW5uZXI6OmNsb3NlV2Vi
SW5zcGVjdG9yKCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi19Ci0KLXZvaWQg
VGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJpbmdS
ZWYgc2NyaXB0KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0KLQotdm9pZCBU
ZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KLX0KLQotdm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0
ZWRXb3JsZEFuZFJldHVyblZhbHVlKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2JqZWN0UmVmIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmdSZWYgc2NyaXB0KQotewotCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6
ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgSlNPYmplY3RS
ZWYgZ2xvYmFsT2JqZWN0LCBKU1N0cmluZ1JlZiBzY3JpcHQpCi17Ci0KLX0KLQotdm9pZCBUZXN0
UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VP
cmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVmIGRlc3Rp
bmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0
aW5hdGlvblByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12
b2lkIFRlc3RSdW5uZXI6OnNldFNjcm9sbGJhclBvbGljeShKU1N0cmluZ1JlZiBvcmllbnRhdGlv
biwgSlNTdHJpbmdSZWYgcG9saWN5KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQot
dm9pZCBUZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5n
UmVmIHV0ZjhEYXRhLCBKU1N0cmluZ1JlZiBiYXNlVVJMKQotewotCi19Ci0KLXZvaWQgVGVzdFJ1
bm5lcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKLXsKLQotfQotCi12b2lk
IFRlc3RSdW5uZXI6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sKQotewotCi19Ci0K
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpCi17Ci19Ci0KLWJvb2wg
VGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCkKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1Jl
ZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQotewotfQotCi12b2lkIFRlc3RSdW5uZXI6OmFi
b3J0TW9kYWwoKQotewotfQotCi1ib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHRhcmdldCwgSlNPYmplY3RSZWYgb3B0aW9uc0FycmF5
KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpCi17Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudC4KLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzeW5jTG9jYWxTdG9yYWdlKCkK
LXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotfQotCi12b2lkIFRlc3RSdW5uZXI6Om9ic2Vy
dmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnModW5zaWduZWQgbnVtYmVyKQotewotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6ZGVsZXRlQWxsTG9jYWxT
dG9yYWdlKCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotfQotCi1KU1ZhbHVlUmVmIFRl
c3RSdW5uZXI6Om9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0KQot
ewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgVGVz
dFJ1bm5lcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIFVSTCkKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNldFRleHRE
aXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCi17Ci19Ci0K
LXZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCi17Ci19Ci0KLXZvaWQg
VGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KCkKLXsKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRC
YWNraW5nU2NhbGVGYWN0b3IoZG91YmxlKQotewotfQotCi12b2lkIFRlc3RSdW5uZXI6OnNpbXVs
YXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrKEpTU3RyaW5nUmVmIHRpdGxlKQotewotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCi19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6cmVzZXRQYWdlVmlzaWJp
bGl0eSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotfQotCi12b2lkIFRlc3RS
dW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqKQotewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KLX0KLQotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZChib29sKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0K
LQotdm9pZCBUZXN0UnVubmVyOjpzZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91Ymxl
KQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLX0KLQotdm9pZCBUZXN0UnVubmVy
OjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKQotewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1dvcmtR
dWV1ZUl0ZW1XeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9Xb3JrUXVldWVJdGVtV3gu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmVjYjc1MmJkODJiMmQxZjYyMGRk
MDk1YjI2Y2JiYzQ1NDljNzdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1dvcmtRdWV1ZUl0ZW1XeC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEtl
dmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV29ya1F1ZXVlSXRlbS5oIgotCi0jaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUu
aCIKLQotYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAotewotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZWxvYWRJdGVtOjppbnZva2UoKSBjb25zdAotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBTY3JpcHRJdGVtOjppbnZva2UoKSBjb25zdAotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBCYWNrRm9yd2FyZEl0ZW06Omludm9rZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9i
dWlsZC1kdW1wcmVuZGVydHJlZSBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUK
aW5kZXggNGUyMDZmNGJjZmJkMDUxZTIzODdlZjY0NjdjMDg3N2NlM2IzYjc3OS4uNzBmMTMyODNl
OTQxZThkZTBlNmNlNWQ1OTcyZTkxNzFmNWQ4N2U0OSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9idWlsZC1kdW1wcmVuZGVydHJlZQorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5k
ZXJ0cmVlCkBAIC00NCw3ICs0NCw2IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtv
cHRpb25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQogICAtLWNsZWFuICAgICAgIENsZWFuIHVw
IHRoZSBidWlsZCBkaXJlY3RvcnkKICAgLS1ndGsgICAgICAgICBCdWlsZCB0aGUgR1RLKyBwb3J0
CiAgIC0tcXQgICAgICAgICAgQnVpbGQgdGhlIFF0IHBvcnQKLSAgLS13eCAgICAgICAgICBCdWls
ZCB0aGUgd3hXaW5kb3dzIHBvcnQKICAgLS1jaHJvbWl1bSAgICBCdWlsZCB0aGUgQ2hyb21pdW0g
cG9ydAogICAtLWVmbCAgICAgICAgIEJ1aWxkIHRoZSBFRkwgcG9ydAogRU9GCkBAIC03MSw4ICs3
MCw4IEBAIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICAkcmVzdWx0ID0gYnVpbGRYQ29k
ZVByb2plY3QoIkR1bXBSZW5kZXJUcmVlIiwgJGNsZWFuLCBYY29kZU9wdGlvbnMoKSwgQEFSR1Yp
OwogfSBlbHNpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlz
dWFsU3R1ZGlvUHJvamVjdCgiRHVtcFJlbmRlclRyZWUuc2xuIiwgJGNsZWFuKTsKLX0gZWxzaWYg
KGlzUXQoKSB8fCBpc0d0aygpIHx8IGlzV3goKSB8fCBpc0Nocm9taXVtKCkgfHwgaXNFZmwoKSkg
ewotICAgICMgUXQsIEd0ayB3eFdpbmRvd3MsIENocm9taXVtIGFuZCBFRkwgYnVpbGQgZXZlcnl0
aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgorfSBlbHNp
ZiAoaXNRdCgpIHx8IGlzR3RrKCkgfHwgaXNDaHJvbWl1bSgpIHx8IGlzRWZsKCkpIHsKKyAgICAj
IFF0LCBHdGsgQ2hyb21pdW0gYW5kIEVGTCBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90LiBO
byBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGhlcmUuCiAgICAgJHJlc3VsdCA9IDA7CiB9IGVsc2Ug
ewogICAgIGRpZSAiQnVpbGRpbmcgbm90IGRlZmluZWQgZm9yIHRoaXMgcGxhdGZvcm0hXG4iOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWpzYwppbmRleCBjYTA1NmY4ZDdlZDFiNTQ3OGY5MmI5MTFiYzRmYWJkMWY0YzNiYmU5Li40Nzdi
YmE1ZGExYzhkZTk0ZWExMzk5NzNmNzZjNjExY2U4ODdiOWI0IDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL2J1aWxkLWpzYworKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYwpAQCAtODYsOSAr
ODYsNiBAQCBzdWIgYnVpbGRNeVByb2plY3QKICAgICB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAg
ICAgIGNoZWNrRm9yQXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1ndGsiKTsKICAgICAgICAg
JHJlc3VsdCA9IGJ1aWxkR3RrUHJvamVjdCgkcHJvamVjdE5hbWUsIDApOwotICAgIH0gZWxzaWYg
KGlzV3goKSkgewotICAgICAgICAjIEJ1aWxkcyBldmVyeXRoaW5nIGluIG9uZS1zaG90LiBObyBu
ZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGhlcmUuCi0gICAgICAgICRyZXN1bHQgPSAwOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGRpZSAiQnVpbGRpbmcgbm90IGRlZmluZWQgZm9yIHRoaXMgcGxhdGZv
cm0hXG4iOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggODg5NDhhNmM3ZGJiMTAwMGNjNWQwOGI3
MTI2ZmZkZThmNWE2N2MyYy4uOWU5NGQyYmRlNTljMWRhMWFiMzdhNjFkMGI1MDY5NGU5NGJkNWU3
ZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQKQEAgLTI4MSwxNiArMjgxLDYgQEAgaWYgKGlzSW5zcGVjdG9yRnJv
bnRlbmQoKSkgewogCiBteSAkcmVzdWx0ID0gMDsKIAotaWYgKGlzV3goKSkgewotICAgICRtYWtl
QXJncyAuPSAiIC0tcG9ydD13eCI7Ci0KLSAgICBkb3dubG9hZFdhZklmTmVlZGVkKCk7Ci0gICAg
QG9wdGlvbnMgPSBzcGxpdCgvIC8sICRtYWtlQXJncyk7Ci0gICAgQHByb2plY3RzID0gKCk7Ci0g
ICAgJHJlc3VsdCA9IGJ1aWxkV2FmUHJvamVjdCgnLicsICRjbGVhbiwgQG9wdGlvbnMpOwotICAg
IGV4aXQgZXhpdFN0YXR1cygkcmVzdWx0KSBpZiBleGl0U3RhdHVzKCRyZXN1bHQpOwotfQotCiBp
ZiAoaXNDaHJvbWl1bSgpKSB7CiAgICAgIyBDdXJyZW50bHkgY2hyb21pdW0gZG9lcyBub3QgaG9u
b3VyIHRoZSBmZWF0dXJlcyBwYXNzZWQgdG8gYnVpbGQtd2Via2l0LgogICAgICMgVW50aWwgdGhp
cyBpcyBzb2x2ZWQsIHdlIGlzc3VlIGEgd2FybmluZyBhYm91dCB0aGF0LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvb2xkLXJ1
bi13ZWJraXQtdGVzdHMKaW5kZXggYWE0ZTQ4NDIyMjk0ZTcwNDVmMmQ0MGRlNDgxMjU4YTczNWQ0
MTNlNi4uNDkxYTkyMDBmMzQ4Nzc0NGI0ZjdlY2U2YWM4MzBjYTE5ZDY4MjdjZCAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cworKysgYi9Ub29scy9TY3JpcHRz
L29sZC1ydW4td2Via2l0LXRlc3RzCkBAIC0xOTQsOSArMTk0LDYgQEAgaWYgKGlzV2luZG93cygp
KSB7CiAgICAgZXhpdCAxOwogfQogCi0jIERlZmF1bHQgdG8gLS1uby1odHRwIGZvciB3eCBmb3Ig
bm93LgotJHRlc3RIVFRQID0gMCBpZiAoaXNXeCgpKTsKLQogbXkgJHBlcmxJbnRlcnByZXRlciA9
ICJwZXJsIjsKIAogbXkgJGV4cGVjdGVkVGFnID0gImV4cGVjdGVkIjsKQEAgLTIzNiw4ICsyMzMs
NiBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAgICAgJHBsYXRmb3JtID0gInF0IjsKIH0g
ZWxzaWYgKGlzR3RrKCkpIHsKICAgICAkcGxhdGZvcm0gPSAiZ3RrIjsKLX0gZWxzaWYgKGlzV3go
KSkgewotICAgICRwbGF0Zm9ybSA9ICJ3eCI7CiB9IGVsc2lmIChpc1dpbkNhaXJvKCkpIHsKICAg
ICAkcGxhdGZvcm0gPSAid2luY2Fpcm8iOwogfSBlbHNpZiAoaXNDeWd3aW4oKSB8fCBpc1dpbmRv
d3MoKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIgYi9Ub29scy9T
Y3JpcHRzL3J1bi1sYXVuY2hlcgppbmRleCAzMmUyYjhlOGI0ZGI4YjhhMGU0ZGZlM2ZiNDIxYWVi
ZmQxN2FjY2Q5Li42Njg4NmZlMGIxOTc0YjIzMTkzODQxZGM3Yzk3ZTM4MTk4Yjg5OWM3IDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcgorKysgYi9Ub29scy9TY3JpcHRzL3J1
bi1sYXVuY2hlcgpAQCAtODMsMTUgKzgzLDYgQEAgaWYgKGlzUXQoKSkgewogICAgICAgICB1bnNo
aWZ0KEBBUkdWLCAoIi0tZWZsIiwgInJ1biIpKTsKICAgICB9CiAKLSAgICBpZiAoaXNXeCgpKSB7
Ci0gICAgICAgIGlmIChpc0RhcndpbigpKSB7Ci0gICAgICAgICAgICAkbGF1bmNoZXJQYXRoID0g
Y2F0ZGlyKCRsYXVuY2hlclBhdGgsICd3eEJyb3dzZXIuYXBwJywgJ0NvbnRlbnRzJywgJ01hY09T
JywgJ3d4QnJvd3NlcicpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJEVOVntMRF9M
SUJSQVJZX1BBVEh9ID0gJEVOVntMRF9MSUJSQVJZX1BBVEh9ID8gIiRwcm9kdWN0RGlyOiRFTlZ7
TERfTElCUkFSWV9QQVRIfSIgOiAkcHJvZHVjdERpcjsKLSAgICAgICAgICAgICRsYXVuY2hlclBh
dGggPSBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgJ3d4QnJvd3NlcicpOwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgcHJpbnQgIlN0YXJ0aW5nIHdlYmtpdCBsYXVuY2hlci5cbiI7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
ZGlycy5wbQppbmRleCA4YTZmNzFhYzA4N2QxODQ2ZjVkOGRmMjdlNDdjNTZjNmUxMTJmMjdiLi4w
MDQ0ZTg2NDhhYTVkNDYxMDY3NWFhYTliYzQwMGM0ODMwM2U1YWExIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
CkBAIC05NCw5ICs5NCw3IEBAIG15ICRxbWFrZWJpbiA9ICJxbWFrZSI7ICMgQWxsb3cgb3ZlcnJp
ZGUgb2YgdGhlIHFtYWtlIGJpbmFyeSBmcm9tICRQQVRICiBteSAkaXNHdGs7CiBteSAkaXNXaW5D
RTsKIG15ICRpc1dpbkNhaXJvOwotbXkgJGlzV3g7CiBteSAkaXNFZmw7Ci1teSBAd3hBcmdzOwog
bXkgJGlzQmxhY2tCZXJyeTsKIG15ICRpc0Nocm9taXVtOwogbXkgJGlzQ2hyb21pdW1BbmRyb2lk
OwpAQCAtMzk3LDcgKzM5NSw2IEBAIHN1YiBhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCkKICAg
ICBwdXNoKEBhcmdzLCAnLS1lZmwnKSBpZiBpc0VmbCgpOwogICAgIHB1c2goQGFyZ3MsICctLXdp
bmNhaXJvJykgaWYgaXNXaW5DYWlybygpOwogICAgIHB1c2goQGFyZ3MsICctLXdpbmNlJykgaWYg
aXNXaW5DRSgpOwotICAgIHB1c2goQGFyZ3MsICctLXd4JykgaWYgaXNXeCgpOwogICAgIHB1c2go
QGFyZ3MsICctLWJsYWNrYmVycnknKSBpZiBpc0JsYWNrQmVycnkoKTsKICAgICBwdXNoKEBhcmdz
LCAnLS1jaHJvbWl1bScpIGlmIGlzQ2hyb21pdW0oKSAmJiAhaXNDaHJvbWl1bUFuZHJvaWQoKTsK
ICAgICBwdXNoKEBhcmdzLCAnLS1jaHJvbWl1bS1hbmRyb2lkJykgaWYgaXNDaHJvbWl1bUFuZHJv
aWQoKTsKQEAgLTQ1MSw3ICs0NDgsNyBAQCBzdWIgZGV0ZXJtaW5lQ29uZmlndXJhdGlvblByb2R1
Y3REaXIKICAgICByZXR1cm4gaWYgZGVmaW5lZCAkY29uZmlndXJhdGlvblByb2R1Y3REaXI7CiAg
ICAgZGV0ZXJtaW5lQmFzZVByb2R1Y3REaXIoKTsKICAgICBkZXRlcm1pbmVDb25maWd1cmF0aW9u
KCk7Ci0gICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSAmJiAhaXNXeCgpKSB7CisgICAgaWYgKGlz
QXBwbGVXaW5XZWJLaXQoKSkgewogICAgICAgICAkY29uZmlndXJhdGlvblByb2R1Y3REaXIgPSBG
aWxlOjpTcGVjLT5jYXRkaXIoJGJhc2VQcm9kdWN0RGlyLCBjb25maWd1cmF0aW9uRm9yVmlzdWFs
U3R1ZGlvKCksICJiaW4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAodXNlc1BlckNvbmZp
Z3VyYXRpb25CdWlsZERpcmVjdG9yeSgpKSB7CkBAIC02NDQsNyArNjQxLDcgQEAgc3ViIGRldGVy
bWluZVBhc3NlZEFyY2hpdGVjdHVyZQogICAgICAgICBteSAkb3B0ID0gJEFSR1ZbJGldOwogICAg
ICAgICBpZiAoJG9wdCA9fiAvXi0tMzItYml0JC9pKSB7CiAgICAgICAgICAgICBzcGxpY2UoQEFS
R1YsICRpLCAxKTsKLSAgICAgICAgICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkgfHwgaXNXeCgp
KSB7CisgICAgICAgICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAgICAgICAgICAgICAg
ICAgJHBhc3NlZEFyY2hpdGVjdHVyZSA9IGBhcmNoYDsKICAgICAgICAgICAgICAgICBjaG9tcCAk
cGFzc2VkQXJjaGl0ZWN0dXJlOwogICAgICAgICAgICAgfQpAQCAtODA5LDkgKzgwNiw2IEBAIHN1
YiBidWlsdER5bGliUGF0aEZvck5hbWUKIAogICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICB9
Ci0gICAgaWYgKGlzV3goKSkgewotICAgICAgICByZXR1cm4gIiRjb25maWd1cmF0aW9uUHJvZHVj
dERpci9saWJ3eHdlYmtpdC5keWxpYiI7Ci0gICAgfQogICAgIGlmIChpc0d0aygpKSB7CiAgICAg
ICAgICMgV2ViS2l0R1RLKyBmb3IgR1RLMiwgV2ViS2l0R1RLKyBmb3IgR1RLMywgYW5kIFdlYktp
dDIgcmVzcGVjdGl2ZWx5LgogICAgICAgICBteSBAbGlicmFyaWVzID0gKCJsaWJ3ZWJraXRndGst
MS4wIiwgImxpYndlYmtpdGd0ay0zLjAiLCAibGlid2Via2l0Mmd0ay0zLjAiKTsKQEAgLTk3Miw4
ICs5NjYsOCBAQCBzdWIgZGV0ZXJtaW5lSXNRdCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICAjIFRoZSBwcmVzZW5jZSBvZiBRVERJUiBvbmx5IG1lYW5zIFF0IGlmIC0tZ3RrIG9yIC0t
d3ggb3IgLS1lZmwgb3IgLS1ibGFja2JlcnJ5IG9yIC0tY2hyb21pdW0gb3IgLS13aW5jYWlybyBh
cmUgbm90IG9uIHRoZSBjb21tYW5kLWxpbmUKLSAgICBpZiAoaXNHdGsoKSB8fCBpc1d4KCkgfHwg
aXNFZmwoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc0Nocm9taXVtKCkgfHwgaXNXaW5DYWlybygp
KSB7CisgICAgIyBUaGUgcHJlc2VuY2Ugb2YgUVRESVIgb25seSBtZWFucyBRdCBpZiAtLWd0ayBv
ciAtLWVmbCBvciAtLWJsYWNrYmVycnkgb3IgLS1jaHJvbWl1bSBvciAtLXdpbmNhaXJvIGFyZSBu
b3Qgb24gdGhlIGNvbW1hbmQtbGluZQorICAgIGlmIChpc0d0aygpIHx8IGlzRWZsKCkgfHwgaXNC
bGFja0JlcnJ5KCkgfHwgaXNDaHJvbWl1bSgpIHx8IGlzV2luQ2Fpcm8oKSkgewogICAgICAgICAk
aXNRdCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTQ4LDM1ICsxMTQyLDYgQEAg
c3ViIGRldGVybWluZUlzV2luQ0UoKQogICAgICRpc1dpbkNFID0gY2hlY2tGb3JBcmd1bWVudEFu
ZFJlbW92ZUZyb21BUkdWKCItLXdpbmNlIik7CiB9CiAKLXN1YiBpc1d4KCkKLXsKLSAgICBkZXRl
cm1pbmVJc1d4KCk7Ci0gICAgcmV0dXJuICRpc1d4OwotfQotCi1zdWIgZGV0ZXJtaW5lSXNXeCgp
Ci17Ci0gICAgcmV0dXJuIGlmIGRlZmluZWQoJGlzV3gpOwotICAgICRpc1d4ID0gY2hlY2tGb3JB
cmd1bWVudEFuZFJlbW92ZUZyb21BUkdWKCItLXd4Iik7Ci19Ci0KLXN1YiBnZXRXeEFyZ3MoKQot
ewotICAgIGlmICghQHd4QXJncykgewotICAgICAgICBAd3hBcmdzID0gKCIiKTsKLSAgICAgICAg
bXkgJHJhd1d4QXJncyA9ICIiOwotICAgICAgICBmb3JlYWNoIG15ICRvcHQgKEBBUkdWKSB7Ci0g
ICAgICAgICAgICBpZiAoJG9wdCA9fiAvXi0td3gtYXJncy9pICkgewotICAgICAgICAgICAgICAg
IEBBUkdWID0gZ3JlcCghL14tLXd4LWFyZ3MvaSwgQEFSR1YpOwotICAgICAgICAgICAgICAgICRy
YXdXeEFyZ3MgPSAkb3B0OwotICAgICAgICAgICAgICAgICRyYXdXeEFyZ3MgPX4gcy8tLXd4LWFy
Z3M9Ly9pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEB3eEFyZ3MgPSBzcGxp
dCgvLC8sICRyYXdXeEFyZ3MpOwotICAgIH0KLSAgICByZXR1cm4gQHd4QXJnczsKLX0KLQogIyBE
ZXRlcm1pbmUgaWYgdGhpcyBpcyBkZWJpYW4sIHVidW50dSwgbGluc3BpcmUsIG9yIHNvbWV0aGlu
ZyBzaW1pbGFyLgogc3ViIGlzRGViaWFuQmFzZWQoKQogewpAQCAtMTM4Niw3ICsxMzUxLDcgQEAg
c3ViIGlzQ3Jvc3NDb21waWxhdGlvbigpCiAKIHN1YiBpc0FwcGxlV2ViS2l0KCkKIHsKLSAgICBy
ZXR1cm4gIShpc1F0KCkgb3IgaXNHdGsoKSBvciBpc1d4KCkgb3IgaXNDaHJvbWl1bSgpIG9yIGlz
RWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsKKyAgICByZXR1cm4gIShpc1F0
KCkgb3IgaXNHdGsoKSBvciBpc0Nocm9taXVtKCkgb3IgaXNFZmwoKSBvciBpc1dpbkNFKCkgb3Ig
aXNCbGFja0JlcnJ5KCkpOwogfQogCiBzdWIgaXNBcHBsZU1hY1dlYktpdCgpCkBAIC0xNTYxLDcg
KzE1MjYsNyBAQCBzdWIgcmVsYXRpdmVTY3JpcHRzRGlyKCkKIHN1YiBsYXVuY2hlclBhdGgoKQog
ewogICAgIG15ICRyZWxhdGl2ZVNjcmlwdHNQYXRoID0gcmVsYXRpdmVTY3JpcHRzRGlyKCk7Ci0g
ICAgaWYgKGlzR3RrKCkgfHwgaXNRdCgpIHx8IGlzV3goKSB8fCBpc0VmbCgpIHx8IGlzV2luQ0Uo
KSkgeworICAgIGlmIChpc0d0aygpIHx8IGlzUXQoKSB8fCBpc0VmbCgpIHx8IGlzV2luQ0UoKSkg
ewogICAgICAgICByZXR1cm4gIiRyZWxhdGl2ZVNjcmlwdHNQYXRoL3J1bi1sYXVuY2hlciI7CiAg
ICAgfSBlbHNpZiAoaXNBcHBsZVdlYktpdCgpKSB7CiAgICAgICAgIHJldHVybiAiJHJlbGF0aXZl
U2NyaXB0c1BhdGgvcnVuLXNhZmFyaSI7CkBAIC0xNTc0LDggKzE1MzksNiBAQCBzdWIgbGF1bmNo
ZXJOYW1lKCkKICAgICAgICAgcmV0dXJuICJHdGtMYXVuY2hlciI7CiAgICAgfSBlbHNpZiAoaXNR
dCgpKSB7CiAgICAgICAgIHJldHVybiAiUXRUZXN0QnJvd3NlciI7Ci0gICAgfSBlbHNpZiAoaXNX
eCgpKSB7Ci0gICAgICAgIHJldHVybiAid3hCcm93c2VyIjsKICAgICB9IGVsc2lmIChpc0FwcGxl
V2ViS2l0KCkpIHsKICAgICAgICAgcmV0dXJuICJTYWZhcmkiOwogICAgIH0gZWxzaWYgKGlzRWZs
KCkpIHsKQEAgLTE2MDgsNyArMTU3MSw3IEBAIHN1YiBjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmln
CiAgICAgICAgICAgICBwcmludCAiaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vdG9vbHMveGNv
ZGVcbiI7CiAgICAgICAgICAgICBwcmludCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKICAgICAgICAgfQotICAgIH0gZWxz
aWYgKGlzR3RrKCkgb3IgaXNRdCgpIG9yIGlzV3goKSBvciBpc0VmbCgpKSB7CisgICAgfSBlbHNp
ZiAoaXNHdGsoKSBvciBpc1F0KCkgb3IgaXNFZmwoKSkgewogICAgICAgICBteSBAY21kcyA9IHF3
KGJpc29uIGdwZXJmKTsKICAgICAgICAgaWYgKGlzUXQoKSBhbmQgaXNXaW5kb3dzKCkpIHsKICAg
ICAgICAgICAgIHB1c2ggQGNtZHMsICJ3aW5fZmxleCI7CkBAIC0xODk3LDUwICsxODYwLDYgQEAg
c3ViIGJ1aWxkVmlzdWFsU3R1ZGlvUHJvamVjdAogICAgIHJldHVybiBzeXN0ZW0gQGNvbW1hbmQ7
CiB9CiAKLXN1YiBkb3dubG9hZFdhZklmTmVlZGVkCi17Ci0gICAgIyBnZXQgLyB1cGRhdGUgd2Fm
IGlmIG5lZWRlZAotICAgIG15ICR3YWYgPSAiJHNvdXJjZURpci9Ub29scy93YWYvd2FmIjsKLSAg
ICBteSAkd2FmVVJMID0gJ2h0dHA6Ly93eHdlYmtpdC5rb3NvZnR3b3Jrcy5jb20vZG93bmxvYWRz
L2RlcHMvd2FmJzsKLSAgICBpZiAoIS1mICR3YWYpIHsKLSAgICAgICAgbXkgJHJlc3VsdCA9IHN5
c3RlbSAiY3VybCAtbyAkd2FmICR3YWZVUkwiOwotICAgICAgICBjaG1vZCAwNzU1LCAkd2FmOwot
ICAgIH0KLX0KLQotc3ViIGJ1aWxkV2FmUHJvamVjdAotewotICAgIG15ICgkcHJvamVjdCwgJHNo
b3VsZENsZWFuLCBAb3B0aW9ucykgPSBAXzsKLSAgICAKLSAgICAjIHNldCB0aGUgUFlUSE9OUEFU
SCBmb3Igd2FmCi0gICAgbXkgJHB5dGhvblBhdGggPSAkRU5WeydQWVRIT05QQVRIJ307Ci0gICAg
aWYgKCFkZWZpbmVkKCRweXRob25QYXRoKSkgewotICAgICAgICAkcHl0aG9uUGF0aCA9ICcnOwot
ICAgIH0KLSAgICBteSAkc291cmNlRGlyID0gc291cmNlRGlyKCk7Ci0gICAgbXkgJG5ld1B5dGhv
blBhdGggPSAiJHNvdXJjZURpci9Ub29scy93YWYvYnVpbGQ6JHB5dGhvblBhdGgiOwotICAgIGlm
IChpc0N5Z3dpbigpKSB7Ci0gICAgICAgICRuZXdQeXRob25QYXRoID0gYGN5Z3BhdGggLS1taXhl
ZCAtLXBhdGggJG5ld1B5dGhvblBhdGhgOwotICAgIH0KLSAgICAkRU5WeydQWVRIT05QQVRIJ30g
PSAkbmV3UHl0aG9uUGF0aDsKLSAgICAKLSAgICBwcmludCAiQnVpbGRpbmcgJHByb2plY3RcbiI7
Ci0KLSAgICBteSAkd2FmQ29tbWFuZCA9ICIkc291cmNlRGlyL1Rvb2xzL3dhZi93YWYiOwotICAg
IGlmICgkRU5WeydXWFdFQktJVF9XQUYnfSkgewotICAgICAgICAkd2FmQ29tbWFuZCA9ICRFTlZ7
J1dYV0VCS0lUX1dBRid9OwotICAgIH0KLSAgICBpZiAoaXNDeWd3aW4oKSkgewotICAgICAgICAk
d2FmQ29tbWFuZCA9IGBjeWdwYXRoIC0td2luZG93cyAiJHdhZkNvbW1hbmQiYDsKLSAgICAgICAg
Y2hvbXAoJHdhZkNvbW1hbmQpOwotICAgIH0KLSAgICBpZiAoJHNob3VsZENsZWFuKSB7Ci0gICAg
ICAgIHJldHVybiBzeXN0ZW0gJHdhZkNvbW1hbmQsICJ1bmluc3RhbGwiLCAiY2xlYW4iLCAiZGlz
dGNsZWFuIjsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHN5c3RlbSAkd2FmQ29tbWFuZCwgJ2Nv
bmZpZ3VyZScsICdidWlsZCcsICdpbnN0YWxsJywgQG9wdGlvbnM7Ci19Ci0KIHN1YiByZXRyaWV2
ZVFNYWtlc3BlY1ZhcgogewogICAgIG15ICRta3NwZWMgPSAkX1swXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRpb25hcmVhcy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRpb25hcmVhcy5w
eQppbmRleCBiNDhkZjJhNTViNGQyZjVhZTIyNzJkNTZlODU2OWE0YjczOTY0ZWQzLi43YTY3NDg0
NWZkNDFhNDJiMWU1Y2FkODQ1OTk3MDVlN2NhNWZmNDkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0aW9uYXJlYXMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dGlvbmFyZWFzLnB5CkBA
IC0xNDQsNyArMTQ0LDYgQEAgY29udHJpYnV0aW9uX2FyZWFzID0gWwogICAgIF9BcmVhKCdUaGUg
UXRXZWJLaXQgUG9ydCcsIFsncXQnXSksCiAgICAgX0FyZWEoJ1RoZSBXaW5DRSBQb3J0JywgWyd3
aW5jZSddKSwKICAgICBfQXJlYSgnVGhlIFdpbkNhaXJvIFBvcnQnLCBbJ2NhaXJvJ10pLAotICAg
IF9BcmVhKCdUaGUgd3hXZWJLaXQgUG9ydCcsIFsnd3gnXSksCiAgICAgX0FyZWEoJ1RocmVhZGlu
ZycsIFsndGhyZWFkJ10pLAogICAgIF9BcmVhKCdUb29scycpLAogICAgIF9BcmVhKCdUb3VjaCBT
dXBwb3J0JywgWyd0b3VjaCddKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL3dhZi9idWlsZC9idWlsZF91
dGlscy5weSBiL1Rvb2xzL3dhZi9idWlsZC9idWlsZF91dGlscy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTBhODhjMjdhNWVhNWFjMTNjNzk1ZWFiMWFhZDI5YzNkZDljNDY0My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy93YWYv
YnVpbGQvYnVpbGRfdXRpbHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNDkgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMDkgS2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0jIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIHRoZSBXZWJLaXQgYnVpbGQuCi0KLWltcG9ydCBjb21tYW5kcwotaW1wb3J0IGdsb2IKLWlt
cG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9y
dCBzb2NrZXQKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIyCi1pbXBvcnQgdXJsbGliCi1pbXBv
cnQgdXJscGFyc2UKLQotCi1kZWYgZ2V0X291dHB1dChjb21tYW5kKToKLSAgICAiIiIKLSAgICBX
aW5kb3dzLWNvbXBhdGlibGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgb3V0cHV0IGZyb20gYSBjb21t
YW5kLgotICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAg
ICAgICAgZiA9IG9zLnBvcGVuKGNvbW1hbmQpCi0gICAgICAgIHJldHVybiBmLnJlYWQoKS5zdHJp
cCgpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGNvbW1hbmRzLmdldG91dHB1dChjb21tYW5k
KQotCi0KLWRlZiBnZXRfZXhjbHVkZXMocm9vdCwgcGF0dGVybnMpOgotICAgICIiIgotICAgIEdl
dCBhIGxpc3Qgb2YgZXhjbHVkZSBwYXR0ZXJucyBmb3Igcm9vdCBhbmQgYWxsIGl0cyBzdWJkaXJz
LgotICAgICIiIgotICAgIGV4Y2x1ZGVzID0gW10KLQotICAgIGZvciBhZmlsZSBpbiBvcy5saXN0
ZGlyKHJvb3QpOgotICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290LCBhZmlsZSkK
LSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmdWxscGF0aCk6Ci0gICAgICAgICAgICBleGNsdWRl
cy5leHRlbmQoZ2V0X2V4Y2x1ZGVzKGZ1bGxwYXRoLCBwYXR0ZXJucykpCi0gICAgICAgICAgICAK
LSAgICBmb3IgcGF0dGVybiBpbiBwYXR0ZXJuczoKLSAgICAgICAgYWRpciA9IHJvb3QgKyBvcy5z
ZXAgKyBwYXR0ZXJuCi0gICAgICAgIGZpbGVzID0gZ2xvYi5nbG9iKGFkaXIpCi0gICAgICAgIGZv
ciBhZmlsZSBpbiBmaWxlczoKLSAgICAgICAgICAgIGV4Y2x1ZGVzLmFwcGVuZChvcy5wYXRoLmJh
c2VuYW1lKGFmaWxlKSkKLQotICAgIHJldHVybiBleGNsdWRlcwotCi1kZWYgZ2V0X2V4Y2x1ZGVz
X2luX2RpcnMoZGlycywgcGF0dGVybnMpOgotICAgIGV4Y2x1ZGVzID0gW10KLSAgICBmb3IgYWRp
ciBpbiBkaXJzOgotICAgICAgICBleGNsdWRlcy5leHRlbmQoZ2V0X2V4Y2x1ZGVzKGFkaXIsIHBh
dHRlcm5zKSkKLSAgICByZXR1cm4gZXhjbHVkZXMKLQotZGVmIGdldF9kaXJzX2Zvcl9mZWF0dXJl
cyhyb290LCBmZWF0dXJlcywgZGlycyk6Ci0gICAgIiIiCi0gICAgRmluZCB3aGljaCBkaXJlY3Rv
cmllcyB0byBpbmNsdWRlIGluIHRoZSBsaXN0IG9mIGJ1aWxkIGRpcnMgYmFzZWQgdXBvbiB0aGUK
LSAgICBlbmFibGVkIHBvcnQocykgYW5kIGZlYXR1cmVzLgotICAgICIiIgotICAgIG91dGRpcnMg
PSBkaXJzCi0gICAgZm9yIGFkaXIgaW4gZGlyczoKLSAgICAgICAgZm9yIGZlYXR1cmUgaW4gZmVh
dHVyZXM6Ci0gICAgICAgICAgICByZWxwYXRoID0gb3MucGF0aC5qb2luKGFkaXIsIGZlYXR1cmUp
Ci0gICAgICAgICAgICBmZWF0dXJlZGlyID0gb3MucGF0aC5qb2luKHJvb3QsIHJlbHBhdGgpCi0g
ICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmZWF0dXJlZGlyKSBhbmQgbm90IHJlbHBhdGgg
aW4gb3V0ZGlyczoKLSAgICAgICAgICAgICAgICBvdXRkaXJzLmFwcGVuZChyZWxwYXRoKQotCi0g
ICAgcmV0dXJuIG91dGRpcnMKLQotCi1kZWYgZG93bmxvYWRfaWZfbmV3ZXIodXJsLCBkZXN0ZGly
KToKLSAgICAiIiIKLSAgICBDaGVja3MgaWYgdGhlIGZpbGUgb24gdGhlIHNlcnZlciBpcyBuZXdl
ciB0aGFuIHRoZSBvbmUgaW4gdGhlIHVzZXIncyB0cmVlLAotICAgIGFuZCBpZiBzbywgZG93bmxv
YWRzIGl0LgotCi0gICAgUmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGRvd25sb2FkZWQgZmls
ZSBpZiBkb3dubG9hZGVkLCBvciBOb25lIGlmCi0gICAgdGhlIGV4aXN0aW5nIGZpbGUgbWF0Y2hl
cyB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIuCi0gICAgIiIiCi0gICAgb2JqID0gdXJscGFyc2UudXJs
cGFyc2UodXJsKQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShvYmoucGF0aCkKLSAg
ICBkZXN0ZmlsZSA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBmaWxlbmFtZSkKLQotICAgIHRyeToK
LSAgICAgICAgdXJsb2JqID0gdXJsbGliMi51cmxvcGVuKHVybCwgdGltZW91dD0yMCkKLSAgICBl
eGNlcHQ6Ci0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc3RmaWxlKToKLSAgICAgICAgICAg
IHJldHVybiBOb25lICMgV2UndmUgYXQgbGVhc3QgZ290IGEgZmlsZSwgdXNlIGl0IGZvciBub3cu
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZQotICAgIHNpemUgPSBsb25nKHVybG9i
ai5pbmZvKCkuZ2V0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcpKQotCi0gICAgZGVmIGRvd25sb2Fk
X2NhbGxiYWNrKGRvd25sb2FkZWQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpOgotICAgICAgICBk
b3dubG9hZGVkID0gYmxvY2tfc2l6ZSAqIGRvd25sb2FkZWQKLSAgICAgICAgaWYgZG93bmxvYWRl
ZCA+IHRvdGFsX3NpemU6Ci0gICAgICAgICAgICBkb3dubG9hZGVkID0gdG90YWxfc2l6ZQotICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCclcyAlZCBvZiAlZCBieXRlcyBkb3dubG9hZGVkXHInICUg
KGZpbGVuYW1lLCBkb3dubG9hZGVkLCB0b3RhbF9zaXplKSkKLSAgICAKLSAgICB0cnk6Ci0gICAg
ICAgIHVybG9iaiA9IHVybGxpYi51cmxvcGVuKHVybCkKLSAgICAgICAgc2l6ZSA9IGxvbmcodXJs
b2JqLmluZm8oKS5nZXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykpCi0KLSAgICAgICAgIyBOQjog
V2UgZG9uJ3QgY2hlY2sgbW9kaWZpZWQgdGltZSBhcyBQeXRob24gZG9lc24ndCB5ZXQgaGFuZGxl
IHRpbWV6b25lIGNvbnZlcnNpb24KLSAgICAgICAgIyBwcm9wZXJseSB3aGVuIGNvbnZlcnRpbmcg
c3RyaW5ncyB0byB0aW1lIG9iamVjdHMuCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhk
ZXN0ZmlsZSkgb3Igb3MucGF0aC5nZXRzaXplKGRlc3RmaWxlKSAhPSBzaXplOgotICAgICAgICAg
ICAgdXJsbGliLnVybHJldHJpZXZlKHVybCwgZGVzdGZpbGUsIGRvd25sb2FkX2NhbGxiYWNrKQot
ICAgICAgICAgICAgcHJpbnQgJycKLSAgICAgICAgICAgIHJldHVybiBkZXN0ZmlsZQotICAgIGV4
Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICMgaWYgdGhlcmUncyBhIGNvbm5lY3Rpb24gZXJy
b3IsIGp1c3QgaWdub3JlIGl0Ci0gICAgICAgIHByaW50IGUKLSAgICAgICAgcGFzcwotICAgICAg
ICAKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiB1cGRhdGVfd3hfZGVwcyhjb25mLCB3a19yb290
LCBtc3ZjX3ZlcnNpb249J21zdmMyMDA4Jyk6Ci0gICAgIiIiCi0gICAgRG93bmxvYWQgYW5kIHVw
ZGF0ZSB0b29scyBuZWVkZWQgdG8gYnVpbGQgdGhlIHd4IHBvcnQuCi0gICAgIiIiCi0gICAgaW1w
b3J0IExvZ3MKLSAgICBMb2dzLmluZm8oJ0Vuc3VyaW5nIHd4V2ViS2l0IGRlcGVuZGVuY2llcyBh
cmUgdXAtdG8tZGF0ZS4nKQotCi0gICAgd2tsaWJzX2RpciA9IG9zLnBhdGguam9pbih3a19yb290
LCAnV2ViS2l0TGlicmFyaWVzJykKLSAgICB3YWYgPSBkb3dubG9hZF9pZl9uZXdlcignaHR0cDov
L3d4d2Via2l0Lmtvc29mdHdvcmtzLmNvbS9kb3dubG9hZHMvZGVwcy93YWYnLCBvcy5wYXRoLmpv
aW4od2tfcm9vdCwgJ1Rvb2xzJywgJ3d4JykpCi0gICAgaWYgd2FmOgotICAgICAgICAjIFRPRE86
IE1ha2UgdGhlIGJ1aWxkIHJlc3RhcnQgaXRzZWxmIGFmdGVyIGFuIHVwZGF0ZS4KLSAgICAgICAg
TG9ncy53YXJuKCdCdWlsZCBzeXN0ZW0gdXBkYXRlZCwgcGxlYXNlIHJlc3RhcnQgYnVpbGQuJykK
LSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgc2luY2UgdGhpcyBtb2R1bGUgaXMgc3RpbGwg
ZXhwZXJpbWVudGFsCi0gICAgd3hweV9kaXIgPSBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJj
ZScsICdXZWJLaXQnLCAnd3gnLCAnYmluZGluZ3MnLCAncHl0aG9uJykKLSAgICBzd2lnX21vZHVs
ZSA9IGRvd25sb2FkX2lmX25ld2VyKCdodHRwOi8vd3h3ZWJraXQua29zb2Z0d29ya3MuY29tL2Rv
d25sb2Fkcy9kZXBzL3N3aWcucHkudHh0Jywgd3hweV9kaXIpCi0gICAgaWYgc3dpZ19tb2R1bGU6
Ci0gICAgICAgIHNodXRpbC5jb3B5KG9zLnBhdGguam9pbih3eHB5X2RpciwgJ3N3aWcucHkudHh0
JyksIG9zLnBhdGguam9pbih3eHB5X2RpciwgJ3N3aWcucHknKSkKLQotICAgIGlmIHN5cy5wbGF0
Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgTG9ncy5pbmZvKCdkb3dubG9hZGluZyBk
ZXBzIHBhY2thZ2UnKQotICAgICAgICBhcmNoaXZlID0gZG93bmxvYWRfaWZfbmV3ZXIoJ2h0dHA6
Ly93eHdlYmtpdC5rb3NvZnR3b3Jrcy5jb20vZG93bmxvYWRzL2RlcHMvd3hXZWJLaXREZXBzLSVz
LnppcCcgJSBtc3ZjX3ZlcnNpb24sIHdrbGlic19kaXIpCi0gICAgICAgIGlmIGFyY2hpdmUgYW5k
IG9zLnBhdGguZXhpc3RzKGFyY2hpdmUpOgotICAgICAgICAgICAgb3Muc3lzdGVtKCd1bnppcCAt
byAlcyAtZCAlcycgJSAoYXJjaGl2ZSwgb3MucGF0aC5qb2luKHdrbGlic19kaXIsIG1zdmNfdmVy
c2lvbikpKQotCi0gICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZGFyd2luJyk6Ci0g
ICAgICAgICMgZXhwb3J0IHRoZSByaWdodCBjb21waWxlciBmb3IgYnVpbGRpbmcgdGhlIGRlcGVu
ZGVuY2llcwotICAgICAgICBpZiBwbGF0Zm9ybS5yZWxlYXNlKCkuc3RhcnRzd2l0aCgnMTAnKTog
ICMgU25vdyBMZW9wYXJkCi0gICAgICAgICAgICBvcy5lbnZpcm9uWydDQyddID0gY29uZi5lbnZb
J0NDJ11bMF0KLSAgICAgICAgICAgIG9zLmVudmlyb25bJ0NYWCddID0gY29uZi5lbnZbJ0NYWCdd
WzBdCi0gICAgICAgIG9zLnN5c3RlbSgnJXMvVG9vbHMvd3gvaW5zdGFsbC11bml4LWV4dHJhcycg
JSB3a19yb290KQotCi0KLWRlZiBpbmNsdWRlRGlyc0ZvclNvdXJjZXMoc291cmNlcyk6Ci0gICAg
aW5jbHVkZV9kaXJzID0gW10KLSAgICBmb3IgZ3JvdXAgaW4gc291cmNlczoKLSAgICAgICAgZm9y
IHNvdXJjZSBpbiBncm91cDoKLSAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUo
c291cmNlKQotICAgICAgICAgICAgaWYgbm90IGRpcm5hbWUgaW4gaW5jbHVkZV9kaXJzOgotICAg
ICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoZGlybmFtZSkKLQotICAgIHJldHVybiBp
bmNsdWRlX2RpcnMKLQotCi1kZWYgZmxhdHRlblNvdXJjZXMoc291cmNlcyk6Ci0gICAgZmxhdF9z
b3VyY2VzID0gW10KLSAgICBmb3IgZ3JvdXAgaW4gc291cmNlczoKLSAgICAgICAgZmxhdF9zb3Vy
Y2VzLmV4dGVuZChncm91cCkKLQotICAgIHJldHVybiBmbGF0X3NvdXJjZXMKLQotZGVmIGdpdF9i
cmFuY2hfbmFtZSgpOgotICAgIHRyeToKLSAgICAgICAgYnJhbmNoZXMgPSBjb21tYW5kcy5nZXRv
dXRwdXQoImdpdCBicmFuY2ggLS1uby1jb2xvciIpCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNo
KCdeXCogKC4qKScsIGJyYW5jaGVzLCByZS5NVUxUSUxJTkUpCi0gICAgICAgIGlmIG1hdGNoOgot
ICAgICAgICAgICAgcmV0dXJuICIlcyIgJSBtYXRjaC5ncm91cCgxKQotICAgIGV4Y2VwdDoKLSAg
ICAgICAgcGFzcwotCi0gICAgcmV0dXJuICIiCi0KLWRlZiBpc19naXRfYnJhbmNoX2J1aWxkKCk6
Ci0gICAgYnJhbmNoID0gZ2l0X2JyYW5jaF9uYW1lKCkKLSAgICBpc19icmFuY2hfYnVpbGQgPSBj
b21tYW5kcy5nZXRvdXRwdXQoImdpdCBjb25maWcgLS1ib29sIGJyYW5jaC4lcy53ZWJLaXRCcmFu
Y2hCdWlsZCIgJSBicmFuY2gpCi0gICAgaWYgaXNfYnJhbmNoX2J1aWxkID09ICJ0cnVlIjoKLSAg
ICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIGlzX2JyYW5jaF9idWlsZCA9PSAiZmFsc2UiOgot
ICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgCi0gICAgIyBub3QgZGVmaW5lZCBmb3IgdGhp
cyBicmFuY2gsIHVzZSB0aGUgZGVmYXVsdAotICAgIGlzX2JyYW5jaF9idWlsZCA9IGNvbW1hbmRz
LmdldG91dHB1dCgiZ2l0IGNvbmZpZyAtLWJvb2wgY29yZS53ZWJLaXRCcmFuY2hCdWlsZCIpCi0g
ICAgcmV0dXJuIGlzX2JyYW5jaF9idWlsZCA9PSAidHJ1ZSIKLQotZGVmIGdldF9iYXNlX3Byb2R1
Y3RfZGlyKHdrX3Jvb3QpOgotICAgIGJ1aWxkX2RpciA9IG9zLnBhdGguam9pbih3a19yb290LCAn
V2ViS2l0QnVpbGQnKQotICAgIGdpdF9icmFuY2ggPSBnaXRfYnJhbmNoX25hbWUoKQotICAgIGlm
IGdpdF9icmFuY2ggIT0gIiIgYW5kIGlzX2dpdF9icmFuY2hfYnVpbGQoKToKLSAgICAgICAgYnVp
bGRfZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgZ2l0X2JyYW5jaCkKLSAgICAgICAgCi0g
ICAgcmV0dXJuIGJ1aWxkX2RpcgotCi1kZWYgZ2V0X2NvbmZpZyh3a19yb290KToKLSAgICBjb25m
aWdfZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmFzZV9wcm9kdWN0X2Rpcih3a19yb290KSwgJ0Nv
bmZpZ3VyYXRpb24nKQotICAgIGNvbmZpZyA9ICdEZWJ1ZycKLQotICAgIGlmIG9zLnBhdGguZXhp
c3RzKGNvbmZpZ19maWxlKToKLSAgICAgICAgY29uZmlnID0gb3Blbihjb25maWdfZmlsZSkucmVh
ZCgpCi0KLSAgICByZXR1cm4gY29uZmlnCi0KLQotZGVmIGdldF9hcmNoKHdrX3Jvb3QpOgotICAg
IGFyY2hfZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmFzZV9wcm9kdWN0X2Rpcih3a19yb290KSwg
J0FyY2hpdGVjdHVyZScpCi0gICAgYXJjaCA9ICd4ODZfNjQnCi0KLSAgICBpZiBvcy5wYXRoLmV4
aXN0cyhhcmNoX2ZpbGUpOgotICAgICAgICBhcmNoID0gb3BlbihhcmNoX2ZpbGUpLnJlYWQoKQot
Ci0gICAgcmV0dXJuIGFyY2gKLQotCi1kZWYgc3ZuX3JldmlzaW9uKCk6Ci0gICAgaWYgb3Muc3lz
dGVtKCJnaXQtc3ZuIGluZm8iKSA9PSAwOgotICAgICAgICBpbmZvID0gY29tbWFuZHMuZ2V0b3V0
cHV0KCJnaXQtc3ZuIGluZm8gLi4vLi4iKQotICAgIGVsc2U6Ci0gICAgICAgIGluZm8gPSBjb21t
YW5kcy5nZXRvdXRwdXQoInN2biBpbmZvIikKLQotICAgIGZvciBsaW5lIGluIGluZm8uc3BsaXQo
IlxuIik6Ci0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUmV2aXNpb246ICIpOgotICAgICAg
ICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZSgiUmV2aXNpb246ICIsICIiKS5zdHJpcCgpCi0KLSAg
ICByZXR1cm4gIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL3dhZi9idWlsZC9zZXR0aW5ncy5weSBiL1Rv
b2xzL3dhZi9idWlsZC9zZXR0aW5ncy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTVlYTJlODI0OTUzNTk5NTM2MzYzMjBiZDQ0NzBlY2ZjNmRiMGQ2Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy93YWYvYnVpbGQvc2V0dGluZ3Mu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkg
S2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0jCi0jIENvbW1vbiBlbGVtZW50cyBvZiB0aGUgd2FmIGJ1aWxkIHN5
c3RlbSBzaGFyZWQgYnkgYWxsIHByb2plY3RzLgotCi1pbXBvcnQgY29tbWFuZHMKLWltcG9ydCBv
cwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotaW1wb3J0IExvZ3MK
LWltcG9ydCBPcHRpb25zCi0KLWZyb20gYnVpbGRfdXRpbHMgaW1wb3J0ICoKLWZyb20gd2FmX2V4
dGVuc2lvbnMgaW1wb3J0ICoKLQotIyB0byBiZSBtb3ZlZCB0byB3eCB3aGVuIGl0IHN1cHBvcnRz
IG1vcmUgY29uZmlncwotZnJvbSB3eHByZXNldHMgaW1wb3J0ICoKLQotd2tfcm9vdCA9IG9zLnBh
dGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uLy4u
Ly4uJykpCi0KLWlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICBpZiBub3Qg
J1dYV0lOJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICBwcmludCAiUGxlYXNlIHNldCBXWFdJTiB0
byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgd3hXaWRnZXRzLiIKLSAgICAgICAgc3lzLmV4aXQo
MSkKLQotICAgIHd4X3Jvb3QgPSBvcy5lbnZpcm9uWydXWFdJTiddCi1lbHNlOgotICAgIHd4X3Jv
b3QgPSBjb21tYW5kcy5nZXRvdXRwdXQoJ3d4LWNvbmZpZyAtLXByZWZpeCcpCi0KLXd0Zl9kaXIg
PSBvcy5wYXRoLmpvaW4od2tfcm9vdCwgJ1NvdXJjZScsICdXVEYnKQotanNjb3JlX2RpciA9IG9z
LnBhdGguam9pbih3a19yb290LCAnU291cmNlJywgJ0phdmFTY3JpcHRDb3JlJykKLXdlYmNvcmVf
ZGlyID0gb3MucGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScpCi13a2xpYnNf
ZGlyID0gb3MucGF0aC5qb2luKHdrX3Jvb3QsICdXZWJLaXRMaWJyYXJpZXMnKQotCi1jb21tb25f
ZGVmaW5lcyA9IFtdCi1jb21tb25fY3h4ZmxhZ3MgPSBbXQotY29tbW9uX2luY2x1ZGVzID0gW10K
LWNvbW1vbl9saWJzID0gW10KLWNvbW1vbl9saWJwYXRocyA9IFtdCi1jb21tb25fZnJhbWV3b3Jr
cyA9IFtdCi0KLXBvcnRzID0gWwotICAgICdCbGFja0JlcnJ5JywKLSAgICAnQ2hyb21pdW0nLAot
ICAgICdFZmwnLAotICAgICdHdGsnLAotICAgICdNYWMnLAotICAgICdOb25lJywKLSAgICAnUXQn
LAotICAgICdTYWZhcmknLAotICAgICdXaW4nLAotICAgICdXaW5DRScsCi0gICAgJ3d4JywKLV0K
LQotdXNlcyA9IFsKLSAgICAnQ0YnLAotICAgICdDRk5ldCcsCi0gICAgJ0NVUkwnLAotICAgICdX
WEdDJywKLV0KLQotcG9ydF91c2VzID0gewotICAgICd3eCc6IFsnQ1VSTCcsICdXWEdDJ10sCi19
Ci0KLWpzY29yZV9kaXJzID0gWwotICAgICdBUEknLAotICAgICdhc3NlbWJsZXInLAotICAgICdi
eXRlY29kZScsCi0gICAgJ2J5dGVjb21waWxlcicsCi0gICAgJ2RlYnVnZ2VyJywKLSAgICAnZGlz
YXNzZW1ibGVyJywKLSAgICAnZGlzYXNzZW1ibGVyL3VkaXM4NicsCi0gICAgJ0Rlcml2ZWRTb3Vy
Y2VzJywKLSAgICAnZGZnJywKLSAgICAnaGVhcCcsCi0gICAgJ2ludGVycHJldGVyJywKLSAgICAn
aml0JywKLSAgICAnbGxpbnQnLAotICAgICdwYXJzZXInLAotICAgICdwcm9maWxlcicsCi0gICAg
J3J1bnRpbWUnLAotICAgICd0b29scycsCi0gICAgJ3lhcnInLAotICAgICcuLi9XVEYvd3RmJywK
LSAgICAnLi4vV1RGL3d0Zi9kdG9hJywKLSAgICAnLi4vV1RGL3d0Zi90ZXh0JywKLSAgICAnLi4v
V1RGL3d0Zi91bmljb2RlJywKLSAgICAnLi4vV1RGL3d0Zi91bmljb2RlL2ljdScsCi1dCi0KLXdl
YmNvcmVfZGlyc19jb21tb24gPSBbCi0gICAgJ1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHknLAotICAgICdTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2NwcCcsCi0g
ICAgJ1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMnLAotICAgICdTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL2JyaWRnZScsCi0gICAgJ1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jJywKLSAgICAnU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYycsCi0g
ICAgJ1NvdXJjZS9XZWJDb3JlL2NzcycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzJywKLSAgICAnU291cmNlL1dlYkNvcmUvZG9tJywKLSAgICAnU291cmNlL1dlYkNvcmUvZG9t
L2RlZmF1bHQnLAotICAgICdTb3VyY2UvV2ViQ29yZS9lZGl0aW5nJywKLSAgICAnU291cmNlL1dl
YkNvcmUvZmlsZWFwaScsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL2hpc3RvcnknLAotICAgICdTb3Vy
Y2UvV2ViQ29yZS9odG1sJywKLSAgICAnU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMnLAotICAg
ICdTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlcicsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93JywKLSAgICAnU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yJywKLSAgICAnU291cmNlL1dl
YkNvcmUvbG9hZGVyJywKLSAgICAnU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlJywKLSAg
ICAnU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUnLAotICAgICdTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUnLAotICAgICdTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbicsCi0gICAgJ1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbScsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24nLAotICAgICdTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMnLAotICAgICdTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYicsCi0gICAgJ1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEnLAotICAgICdTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlJywKLSAgICAnU291cmNlL1dlYkNvcmUvcGFnZScsCi0gICAgJ1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uJywKLSAgICAnU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcnLAotICAgICdTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybScsCi0gICAgJ1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbicsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzJywKLSAgICAnU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycycsCi0g
ICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtJywKLSAgICAn
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcycsCi0gICAgJ1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzJywKLSAgICAnU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wJywKLSAgICAnU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmJywKLSAgICAnU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvJywKLSAgICAnU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAn
LAotICAgICdTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrJywKLSAgICAnU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yaycsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
JywKLSAgICAnU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsJywKLSAgICAnU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dCcsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJh
bnNjb2RlcicsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMnLAotICAgICdTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcnLAotICAgICdTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUnLAot
ICAgICdTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnJywKLSAgICAnU291cmNlL1dlYkNvcmUv
c3RvcmFnZScsCi0gICAgJ1NvdXJjZS9XZWJDb3JlL3N2ZycsCi0gICAgJ1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24nLAotICAgICdTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MnLAotICAg
ICdTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycycsCi0gICAgJ1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzJywKLSAgICAnU291cmNlL1dlYkNvcmUvdGVzdGluZycsCi0gICAg
J1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMnLAotICAgICdTb3VyY2UvV2ViQ29yZS93b3JrZXJz
JywKLSAgICAnU291cmNlL1dlYkNvcmUveG1sJywKLSAgICAnU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlcicsCi1dCi0KLWNvbmZpZyA9IGdldF9jb25maWcod2tfcm9vdCkKLWFyY2ggPSBnZXRfYXJj
aCh3a19yb290KQotY29uZmlnX2RpciA9IGNvbmZpZwotCi1vdXRwdXRfZGlyID0gb3MucGF0aC5q
b2luKGdldF9iYXNlX3Byb2R1Y3RfZGlyKHdrX3Jvb3QpLCBjb25maWdfZGlyKQotCi1idWlsZGlu
Z19vbl93aW4zMiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKQotCi1kZWZhdWx0X3Bv
cnQgPSAnTWFjJwotaWYgYnVpbGRpbmdfb25fd2luMzI6Ci0gICAgZGVhZnVsdF9wb3J0ID0gIldp
biIKLQotYnVpbGRfcG9ydCA9IGRlZmF1bHRfcG9ydAotCi1kZWYgZ2V0X3BvcnRfZXhjbHVkZXMo
dGhpc3BvcnQpOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIGxpc3Qgb2Yg
ZmlsZSBwYXR0ZXJucyB0byBleGNsdWRlCi0gICAgYmFzZWQgb24gd2hhdCBwb3J0IHlvdSBhcmUg
dXNpbmcgYW5kIHdoYXQgVVNFUyBpdCBoYXMgZGVmaW5lZC4KLSAgICAiIiIKLSAgICBleGNsdWRl
X3BhdHRlcm5zID0gW10KLSAgICBnbG9iYWwgcG9ydHMKLSAgICBmb3IgcG9ydCBpbiBwb3J0czoK
LSAgICAgICAgaWYgbm90IHBvcnQgPT0gdGhpc3BvcnQ6Ci0gICAgICAgICAgICBleGNsdWRlID0g
Iiolcy5jcHAiICUgcG9ydAotICAgICAgICAgICAgaWYgcG9ydCA9PSAnQ2hyb21pdW0nOgotICAg
ICAgICAgICAgICAgIGV4Y2x1ZGUgPSAiKkNocm9taXVtKi5jcHAiCi0gICAgICAgICAgICBleGNs
dWRlX3BhdHRlcm5zLmFwcGVuZChleGNsdWRlKQotICAgIAotICAgIGdsb2JhbCB1c2VzCi0gICAg
Zm9yIHVzZSBpbiB1c2VzOgotICAgICAgICBpZiB0aGlzcG9ydCBub3QgaW4gcG9ydF91c2VzIG9y
IG5vdCB1c2UgaW4gcG9ydF91c2VzW3RoaXNwb3J0XToKLSAgICAgICAgICAgIGV4Y2x1ZGVfcGF0
dGVybnMuYXBwZW5kKCIqJXMuY3BwIiAlIHVzZSkKLSAgICAgICAgICAgIAotICAgIHJldHVybiBl
eGNsdWRlX3BhdHRlcm5zCi0KLWRlZiBnZXRfY29uZmlnKCk6Ci0gICAgd2FmX2NvbmZpZ25hbWUg
PSBjb25maWcudXBwZXIoKS5zdHJpcCgpCi0gICAgaWYgYnVpbGRpbmdfb25fd2luMzI6Ci0gICAg
ICAgIGlzUmVsZWFzZUNSVCA9IChjb25maWcgPT0gJ1JlbGVhc2UnKQotICAgICAgICBpZiBidWls
ZF9wb3J0ID09ICd3eCc6Ci0gICAgICAgICAgICBpZiBPcHRpb25zLm9wdGlvbnMud3hweXRob246
Ci0gICAgICAgICAgICAgICAgaXNSZWxlYXNlQ1JUID0gVHJ1ZQotCi0gICAgICAgIGlmIGlzUmVs
ZWFzZUNSVDoKLSAgICAgICAgICAgIHdhZl9jb25maWduYW1lID0gd2FmX2NvbmZpZ25hbWUgKyAn
IENSVF9NVUxUSVRIUkVBREVEX0RMTCcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdhZl9j
b25maWduYW1lID0gd2FmX2NvbmZpZ25hbWUgKyAnIENSVF9NVUxUSVRIUkVBREVEX0RMTF9EQkcn
Ci0KLSAgICByZXR1cm4gd2FmX2NvbmZpZ25hbWUKLQotY3JlYXRlX2hhc2hfdGFibGUgPSB3a19y
b290ICsgIi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUiCi1pZiBidWls
ZGluZ19vbl93aW4zMjoKLSAgICBjcmVhdGVfaGFzaF90YWJsZSA9IGdldF9vdXRwdXQoJ2N5Z3Bh
dGggLS11bml4ICIlcyInICUgY3JlYXRlX2hhc2hfdGFibGUpCi1vcy5lbnZpcm9uWydDUkVBVEVf
SEFTSF9UQUJMRSddID0gY3JlYXRlX2hhc2hfdGFibGUKLQotZmVhdHVyZV9kZWZpbmVzID0gW10K
LQotbXN2Y192ZXJzaW9uID0gJ21zdmMyMDA4JwotCi1tc3ZjbGlic19kaXIgPSBvcy5wYXRoLmpv
aW4od2tsaWJzX2RpciwgbXN2Y192ZXJzaW9uLCAnd2luJykKLQotCi1kZWYgZ2V0X3BhdGhfdG9f
d3hjb25maWcoKToKLSAgICBpZiAnV1hfQ09ORklHJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICBy
ZXR1cm4gb3MuZW52aXJvblsnV1hfQ09ORklHJ10KLSAgICBlbHNlOgotICAgICAgICByZXR1cm4g
J3d4LWNvbmZpZycKLQotCi1kZWYgY29tbW9uX3NldF9vcHRpb25zKG9wdCk6Ci0gICAgIiIiCi0g
ICAgSW5pdGlhbGl6ZSBjb21tb24gb3B0aW9ucyBwcm92aWRlZCB0byB0aGUgdXNlci4KLSAgICAi
IiIKLSAgICBvcHQudG9vbF9vcHRpb25zKCdjb21waWxlcl9jeHgnKQotICAgIG9wdC50b29sX29w
dGlvbnMoJ2NvbXBpbGVyX2NjJykKLSAgICBvcHQudG9vbF9vcHRpb25zKCdweXRob24nKQotCi0g
ICAgb3B0LmFkZF9vcHRpb24oJy0tcG9ydCcsIGFjdGlvbj0nc3RvcmUnLCBkZWZhdWx0PWRlZmF1
bHRfcG9ydCwgaGVscD0nV2hpY2ggV2ViS2l0IHBvcnQgdG8gYnVpbGQuJykKLSAgICBvcHQuYWRk
X29wdGlvbignLS13eHB5dGhvbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9J0NyZWF0ZSB0aGUgd3hQeXRob24gYmluZGluZ3MuJykKLSAgICBvcHQuYWRkX29wdGlv
bignLS13eC1jb21waWxlci1wcmVmaXgnLCBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD0ndmMnLAot
ICAgICAgICAgICAgICAgICAgIGhlbHA9J1NwZWNpZnkgYSBkaWZmZXJlbnQgY29tcGlsZXIgcHJl
Zml4IChkbyB0aGlzIGlmIHlvdSB1c2VkIENPTVBJTEVSX1BSRUZJWCB3aGVuIGJ1aWxkaW5nIHd4
IGl0c2VsZiknKQotICAgIG9wdC5hZGRfb3B0aW9uKCctLW1hY29zeC12ZXJzaW9uJywgYWN0aW9u
PSdzdG9yZScsIGRlZmF1bHQ9JycsIGhlbHA9IlZlcnNpb24gb2YgT1MgWCB0byBidWlsZCBmb3Iu
IikKLSAgICBvcHQuYWRkX29wdGlvbignLS1tc3ZjLXZlcnNpb24nLCBhY3Rpb249J3N0b3JlJywg
ZGVmYXVsdD0nJywgaGVscD0iTVNWQyB2ZXJzaW9uIHRvIHVzZSB0byBidWlsZC4gVXNlIDggZm9y
IDIwMDUsIDkgZm9yIDIwMDgiKQotICAgIG9wdC5hZGRfb3B0aW9uKCctLW1hY191bml2ZXJzYWxf
YmluYXJ5JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwgaGVscD0nQnVpbGQg
TWFjIGFzIHVuaXZlcnNhbCAoaTM4NiwgeDg2XzY0LCBwcGMpIGJpbmFyeS4nKQotICAgIG9wdC5h
ZGRfb3B0aW9uKCctLW1hY19hcmNocycsIGFjdGlvbj0nc3RvcmUnLCBkZWZhdWx0PScnLCBoZWxw
PSdDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhcmNoaXRlY3R1cmVzIChpMzg2LCB4ODZfNjQsIHBw
YykgdG8gYnVpbGQgb24gTWFjLicpCi0gICAgb3B0LmFkZF9vcHRpb24oJy0tY2Fpcm8nLCBhY3Rp
b249J3N0b3JlX3RydWUnLCBkZWZhdWx0PXN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcp
LCBoZWxwPSdVc2UgY2Fpcm8gZm9yIGRyYXdpbmcgKGV4cGVyaW1lbnRhbCBmb3IgV2luL01hYycp
Ci0KLWRlZiBjb21tb25fY29uZmlndXJlKGNvbmYpOgotICAgICIiIgotICAgIENvbmZpZ3VyYXRp
b24gdXNlZCBieSBhbGwgdGFyZ2V0cywgY2FsbGVkIGZyb20gdGhlIHRhcmdldCdzIGNvbmZpZ3Vy
ZSgpIHN0ZXAuCi0gICAgIiIiCi0KLSAgICBjb25mLmVudlsnTVNWQ19UQVJHRVRTJ10gPSBbJ3g4
NiddCi0KLSAgICBidWlsZF9wb3J0ID0gT3B0aW9ucy5vcHRpb25zLnBvcnQKLQotICAgIGZlYXR1
cmVfZGVmaW5lcyA9IFsnRU5BQkxFX0RBVEFCQVNFJywgJ0VOQUJMRV9TUUxfREFUQUJBU0UnLCAn
RU5BQkxFX1hTTFQnLCAnRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVInLAotICAgICAgICAgICAg
ICAgICAgICAnRU5BQkxFX1NWRycsICdFTkFCTEVfRklMVEVSUycsICdFTkFCTEVfU1ZHX0ZPTlRT
JywgJ0VOQUJMRV9JTlNQRUNUT1InLCAnRU5BQkxFX1dPUktFUlMnLAotICAgICAgICAgICAgICAg
ICAgICAnQlVJTERJTkdfJXMnICUgYnVpbGRfcG9ydC51cHBlcigpXQotCi0gICAgY29uZi5lbnZb
IkZFQVRVUkVfREVGSU5FUyJdID0gJyAnLmpvaW4oZmVhdHVyZV9kZWZpbmVzKQotCi0gICAgaWYg
T3B0aW9ucy5vcHRpb25zLm1zdmNfdmVyc2lvbiBhbmQgT3B0aW9ucy5vcHRpb25zLm1zdmNfdmVy
c2lvbiAhPSAnJzoKLSAgICAgICAgY29uZi5lbnZbJ01TVkNfVkVSU0lPTlMnXSA9IFsnbXN2YyAl
cy4wJyAlIE9wdGlvbnMub3B0aW9ucy5tc3ZjX3ZlcnNpb25dCi0gICAgZWxzZToKLSAgICAgICAg
Y29uZi5lbnZbJ01TVkNfVkVSU0lPTlMnXSA9IFsnbXN2YyA5LjAnLCAnbXN2YyA4LjAnXQotCi0g
ICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2N5Z3dpbicpOgotICAgICAgICBwcmludCAi
RVJST1I6IFlvdSBtdXN0IHVzZSB0aGUgV2luMzIgUHl0aG9uIGZyb20gcHl0aG9uLm9yZywgbm90
IEN5Z3dpbiBQeXRob24sIHdoZW4gYnVpbGRpbmcgb24gV2luZG93cy4iCi0gICAgICAgIHN5cy5l
eGl0KDEpCi0KLSAgICBjb25mLmNoZWNrX3Rvb2woJ2NvbXBpbGVyX2N4eCcpCi0gICAgY29uZi5j
aGVja190b29sKCdjb21waWxlcl9jYycpCi0KLSAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgnZGFyd2luJyk6Ci0gICAgICAgIGNvbmYuY2hlY2tfdG9vbCgnb3N4JykKLQotICAgIGdsb2Jh
bCBtc3ZjX3ZlcnNpb24KLSAgICBnbG9iYWwgbXN2Y2xpYnNfZGlyCi0KLSAgICBsaWJwcmVmaXgg
PSAnJwotCi0gICAgaWYgT3B0aW9ucy5vcHRpb25zLmNhaXJvIGFuZCBidWlsZF9wb3J0ID09ICd3
eCc6Ci0gICAgICAgIGlmIGJ1aWxkaW5nX29uX3dpbjMyIGFuZCBub3QgIkNBSVJPX1JPT1QiIGlu
IG9zLmVudmlyb246Ci0gICAgICAgICAgICBMb2dzLmVycm9yKCJUbyBidWlsZCB3aXRoIENhaXJv
IG9uIFdpbmRvd3MsIHlvdSBtdXN0IHNldCB0aGUgQ0FJUk9fUk9PVCBlbnZpcm9ubWVudCB2YXJp
YWJsZS4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIGJ1aWxkaW5nX29uX3dp
bjMyOgotICAgICAgICBsaWJwcmVmaXggPSAnbGliJwotCi0gICAgICAgIGZvdW5kID0gY29uZi5n
ZXRfbXN2Y192ZXJzaW9ucygpCi0gICAgICAgIGZvdW5kX3ZlcnNpb25zID0gW10KLSAgICAgICAg
Zm9yIHZlcnNpb24gaW4gZm91bmQ6Ci0gICAgICAgICAgICBmb3VuZF92ZXJzaW9ucy5hcHBlbmQo
dmVyc2lvblswXSkKLQotICAgICAgICBpZiAnbXN2YyA5LjAnIGluIGNvbmYuZW52WydNU1ZDX1ZF
UlNJT05TJ10gYW5kICdtc3ZjIDkuMCcgaW4gZm91bmRfdmVyc2lvbnM6Ci0gICAgICAgICAgICBt
c3ZjX3ZlcnNpb24gPSAnbXN2YzIwMDgnCi0gICAgICAgIGVsaWYgJ21zdmMgOC4wJyBpbiBjb25m
LmVudlsnTVNWQ19WRVJTSU9OUyddIGFuZCAnbXN2YyA4LjAnIGluIGZvdW5kX3ZlcnNpb25zOgot
ICAgICAgICAgICAgbXN2Y192ZXJzaW9uID0gJ21zdmMyMDA1JwotCi0gICAgICAgIG1zdmNsaWJz
X2RpciA9IG9zLnBhdGguam9pbih3a2xpYnNfZGlyLCBtc3ZjX3ZlcnNpb24sICd3aW4nKQotCi0g
ICAgICAgICMgRGlzYWJsZSBzZXZlcmFsIHdhcm5pbmdzIHdoaWNoIG9jY3VyIG1hbnkgdGltZXMg
ZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgIyBTb21lIG9mIHRoZW0gYXJlIGhhcm1sZXNzICg0
MDk5LCA0MzQ0LCA0Mzk2LCA0ODAwKSBhbmQgd29ya2luZyBhcm91bmQKLSAgICAgICAgIyB0aGVt
IGluIFdlYktpdCBjb2RlIGlzIHByb2JhYmx5IGp1c3Qgbm90IHdvcnRoIGl0LiBXZSBjYW4gc2lt
cGx5IGRvCi0gICAgICAgICMgbm90aGluZyBhYm91dCB0aGUgb3RoZXJzICg0NTAzKS4gQSBjb3Vw
bGUgYXJlIHBvc3NpYmx5IHZhbGlkIGJ1dAotICAgICAgICAjIHRoZXJlIGFyZSBqdXN0IHRvbyBt
YW55IG9mIHRoZW0gaW4gdGhlIGNvZGUgc28gZml4aW5nIHRoZW0gaXMKLSAgICAgICAgIyBpbXBv
c3NpYmxlIGluIHByYWN0aWNlIGFuZCBqdXN0IHJlc3VsdHMgaW4gdG9ucyBvZiBkaXN0cmFjdGlu
ZyBvdXRwdXQKLSAgICAgICAgIyAoNDI0NCwgNDI5MSkuIEZpbmFsbHkgNDk5NiBpcyBhY3RpdmVs
eSBoYXJtZnVsIGFzIGl0IGlzIGdpdmVuIGZvcgotICAgICAgICAjIGp1c3QgYWJvdXQgYW55IHVz
ZSBvZiBzdGFuZGFyZCBDL0MrKyBsaWJyYXJ5IGZhY2lsaXRpZXMuCi0gICAgICAgIGNvbmYuZW52
LmFwcGVuZF92YWx1ZSgnQ1hYRkxBR1MnLCBbCi0gICAgICAgICAgICAnL3dkNDA5OScsICAjIHR5
cGUgbmFtZSBmaXJzdCBzZWVuIHVzaW5nICdzdHJ1Y3QnIG5vdyBzZWVuIHVzaW5nICdjbGFzcycK
LSAgICAgICAgICAgICcvd2Q0MjQ0JywgICMgY29udmVyc2lvbiBmcm9tICd4eHgnIHRvICd5eXkn
LCBwb3NzaWJsZSBsb3NzIG9mIGRhdGE6Ci0gICAgICAgICAgICAnL3dkNDI5MScsICAjIG5vIG1h
dGNoaW5nIG9wZXJhdG9yIGRlbGV0ZSBmb3VuZCAoZm9yIHBsYWNlbWVudCBuZXcpCi0gICAgICAg
ICAgICAnL3dkNDM0NCcsICAjIGJlaGF2aW91ciBjaGFuZ2UgaW4gdGVtcGxhdGUgZGVkdWN0aW9u
Ci0gICAgICAgICAgICAnL3dkNDM5NicsICAjIGlubGluZSBjYW4ndCBiZSB1c2VkIGluIGZyaWVu
ZCBkZWNsYXJhdGlvbgotICAgICAgICAgICAgJy93ZDQ1MDMnLCAgIyBkZWNvcmF0ZWQgbmFtZSBs
ZW5ndGggZXhjZWVkZWQsIG5hbWUgd2FzIHRydW5jYXRlZAotICAgICAgICAgICAgJy93ZDQ4MDAn
LCAgIyBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgJ3RydWUnIG9yICdmYWxzZScKLSAgICAgICAgICAg
ICcvd2Q0OTk2JywgICMgZGVwcmVjYXRlZCBmdW5jdGlvbgotICAgICAgICBdKQotCi0gICAgICAg
ICMgVGhpcyBvbmUgYWxzbyBvY2N1cnMgaW4gQyBjb2RlLCBzbyBkaXNhYmxlIGl0IHRoZXJlIGFz
IHdlbGwuCi0gICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ0NGTEFHUycsIFsnL3dkNDk5
NiddKQotCi0gICAgaWYgYnVpbGRfcG9ydCA9PSAid3giOgotICAgICAgICB1cGRhdGVfd3hfZGVw
cyhjb25mLCB3a19yb290LCBtc3ZjX3ZlcnNpb24pCi0KLSAgICAgICAgY29uZi5lbnYuYXBwZW5k
X3ZhbHVlKCdDWFhERUZJTkVTJywgWydCVUlMRElOR19XWF9fPTEnXSkKLQotICAgICAgICBpZiBi
dWlsZGluZ19vbl93aW4zMjoKLSAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnTElC
UEFUSCcsIG9zLnBhdGguam9pbihtc3ZjbGlic19kaXIsICdsaWInKSkKLSAgICAgICAgICAgICMg
d3ggc2V0dGluZ3MKLSAgICAgICAgICAgIGdsb2JhbCBjb25maWcKLSAgICAgICAgICAgIGlzX2Rl
YnVnID0gKGNvbmZpZyA9PSAnRGVidWcnKSAgICAgICAgICAgIAotICAgICAgICAgICAgIyBnZW5l
cmF0ZSBkZWJ1ZyBzeW1ib2xzIGV2ZW4gaW4gcmVsZWFzZSBtb2RlLCBhcyBpdCBoZWxwcyBkZWJ1
Z2dpbmcuCi0gICAgICAgICAgICBpZiBub3QgaXNfZGVidWc6Ci0gICAgICAgICAgICAgICAgY29u
Zi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhGTEFHUycsICcvWmknKQotICAgICAgICAgICAgICAgIGNv
bmYuZW52LmFwcGVuZF92YWx1ZSgnTElOS0ZMQUdTJywgJy9kZWJ1ZycpCi0gICAgICAgICAgICB3
eGRlZmluZXMsIHd4aW5jbHVkZXMsIHd4bGlicywgd3hsaWJwYXRocyA9IGdldF93eG1zd19zZXR0
aW5ncyh3eF9yb290LCBzaGFyZWQ9VHJ1ZSwgdW5pY29kZT1UcnVlLCBkZWJ1Zz1pc19kZWJ1Zywg
d3hQeXRob249T3B0aW9ucy5vcHRpb25zLnd4cHl0aG9uKQotICAgICAgICAgICAgY29uZi5lbnZb
J0NYWERFRklORVNfV1gnXSA9IHd4ZGVmaW5lcwotICAgICAgICAgICAgY29uZi5lbnZbJ0NQUFBB
VEhfV1gnXSA9IHd4aW5jbHVkZXMKLSAgICAgICAgICAgIGNvbmYuZW52WydMSUJfV1gnXSA9IHd4
bGlicwotICAgICAgICAgICAgY29uZi5lbnZbJ0xJQlBBVEhfV1gnXSA9IHd4bGlicGF0aHMKLSAg
ICAgICAgICAgIGlmIE9wdGlvbnMub3B0aW9ucy5jYWlybyBhbmQgJ0NBSVJPX1JPT1QnIGluIG9z
LmVudmlyb246Ci0gICAgICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdDUFBQQVRI
X1dYJywgW29zLnBhdGguam9pbihvcy5lbnZpcm9uWydDQUlST19ST09UJ10sICdpbmNsdWRlJywg
J2NhaXJvJyldKQotICAgICAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnTElCUEFU
SF9XWCcsIFtvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnQ0FJUk9fUk9PVCddLCAnbGliJyldKQot
ICAgICAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnTElCX1dYJywgWydjYWlybydd
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29uZi5jaGVja19jZmcocGF0aD1nZXRfcGF0
aF90b193eGNvbmZpZygpLCBhcmdzPSctLWN4eGZsYWdzIC0tbGlicycsIHBhY2thZ2U9JycsIHVz
ZWxpYl9zdG9yZT0nV1gnLCBtYW5kYXRvcnk9VHJ1ZSkKLQotICAgIGlmIHN5cy5wbGF0Zm9ybS5z
dGFydHN3aXRoKCdkYXJ3aW4nKToKLSAgICAgICAgY29uZi5lbnZbJ0xJQl9JQ1UnXSA9IFsnaWN1
Y29yZSddCi0gICAgICAgIGdsb2JhbCBwb3J0X3VzZXMKLSAgICAgICAgcG9ydF91c2VzW2J1aWxk
X3BvcnRdLmFwcGVuZCgnQ0YnKQotICAgICAgICAKLSAgICAgICAgY29uZi5lbnYuYXBwZW5kX3Zh
bHVlKCdDUFBQQVRIJywgd2tsaWJzX2RpcikKLSAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVl
KCdMSUJQQVRIJywgd2tsaWJzX2RpcikKLQotICAgICAgICBtaW5fdmVyc2lvbiA9IE5vbmUKLQot
ICAgICAgICBtYWNfdGFyZ2V0ID0gJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcKLSAgICAgICAg
aWYgT3B0aW9ucy5vcHRpb25zLm1hY29zeF92ZXJzaW9uICE9ICcnOgotICAgICAgICAgICAgbWlu
X3ZlcnNpb24gPSBPcHRpb25zLm9wdGlvbnMubWFjb3N4X3ZlcnNpb24KLQotICAgICAgICAjIFdl
YktpdCBvbmx5IHN1cHBvcnRzIDEwLjQrLCBidXQgcHBjIHN5c3RlbXMgb2Z0ZW4gc2V0IHRoaXMg
dG8gZWFybGllciBzeXN0ZW1zCi0gICAgICAgIGlmIG5vdCBtaW5fdmVyc2lvbjoKLSAgICAgICAg
ICAgIG1pbl92ZXJzaW9uID0gY29tbWFuZHMuZ2V0b3V0cHV0KCdzd192ZXJzIC1wcm9kdWN0VmVy
c2lvbicpWzo0XQotICAgICAgICAgICAgaWYgbWluX3ZlcnNpb24gaW4gWycxMC4xJywgJzEwLjIn
LCAnMTAuMyddOgotICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gJzEwLjQnCi0KLSAgICAg
ICAgc2RrX3ZlcnNpb24gPSBtaW5fdmVyc2lvbgotICAgICAgICBpZiBtaW5fdmVyc2lvbiA9PSAi
MTAuNCI6Ci0gICAgICAgICAgICBzZGtfdmVyc2lvbiArPSAidSIKLSAgICAgICAgICAgIGNvbmYu
ZW52LmFwcGVuZF92YWx1ZSgnTElCX1dLSU5URVJGQUNFJywgWydXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2VUaWdlciddKQotICAgICAgICBlbGlmIG1pbl92ZXJzaW9uID09ICIxMC43IjoKLSAgICAgICAg
ICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnTElCX1dLSU5URVJGQUNFJywgWydXZWJLaXRTeXN0
ZW1JbnRlcmZhY2VMaW9uJ10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5PVEU6IFRo
ZXJlIGlzIGEgV2ViS2l0U3lzdGVtSW50ZXJmYWNlU25vd0xlb3BhcmQsIGJ1dCB3aGVuIHdlIHVz
ZSB0aGF0Ci0gICAgICAgICAgICAjIG9uIDEwLjYsIHdlIGdldCBhIHN0cmFuZ2UgbWlzc2luZyBz
eW1ib2wgZXJyb3IsIGFuZCB0aGlzIGxpYnJhcnkgc2VlbXMgdG8KLSAgICAgICAgICAgICMgd29y
ayBmaW5lIGZvciB3eCdzIHB1cnBvc2VzLgotICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3Zh
bHVlKCdMSUJfV0tJTlRFUkZBQ0UnLCBbJ1dlYktpdFN5c3RlbUludGVyZmFjZUxlb3BhcmQnXSkK
LSAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnTElOS0ZMQUdTJywgWyctZnJhbWV3
b3JrJywgJ1F1YXJ0ekNvcmUnXSkKLSAgICAgICAgCi0gICAgICAgICMgbWF0Y2ggV2ViS2l0IE1h
YydzIGRlZmF1bHQgaGVyZSB1bmxlc3Mgd2UncmUgYnVpbGRpbmcgb24gcGxhdGZvcm1zIHRoYXQg
d29uJ3Qgc3VwcG9ydCA2NC1iaXQuCi0gICAgICAgIGFyY2hzID0gW10KLSAgICAgICAgCi0gICAg
ICAgIGlmIE9wdGlvbnMub3B0aW9ucy5tYWNfYXJjaHMgIT0gJyc6Ci0gICAgICAgICAgICBhcmNo
X2xpc3QgPSBPcHRpb25zLm9wdGlvbnMubWFjX2FyY2hzLnJlcGxhY2UoIiciLCAnJykucmVwbGFj
ZSgnIicsICcnKS5zcGxpdCgiLCIpCi0gICAgICAgICAgICBmb3IgYXJjaCBpbiBhcmNoX2xpc3Q6
Ci0gICAgICAgICAgICAgICAgaWYgYXJjaC5zdHJpcCgpICE9ICcnOgotICAgICAgICAgICAgICAg
ICAgICBhcmNocy5hcHBlbmQoYXJjaC5zdHJpcCgpKQotICAgICAgICBlbGlmIE9wdGlvbnMub3B0
aW9ucy5tYWNfdW5pdmVyc2FsX2JpbmFyeToKLSAgICAgICAgICAgIGFyY2hzID0gWydpMzg2Jywg
J3g4Nl82NCcsICdwcGMnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaXNfY29jb2EgPSAi
X19XWE9TWF9DT0NPQV9fIiBpbiBjb25mLmVudlsiQ1hYREVGSU5FU19XWCJdCi0gICAgICAgICAg
ICBpZiBtaW5fdmVyc2lvbiA9PSAiMTAuNCIgb3Igbm90IGlzX2NvY29hOgotICAgICAgICAgICAg
ICAgIGFyY2hzID0gWyJpMzg2Il0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
Z2xvYmFsIGFyY2gKLSAgICAgICAgICAgICAgICBhcmNocyA9IFthcmNoXQotCi0gICAgICAgIHNk
a3Jvb3QgPSAnL0RldmVsb3Blci9TREtzL01hY09TWCVzLnNkaycgJSBzZGtfdmVyc2lvbgotICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2Rrcm9vdCk6Ci0gICAgICAgICAgICBMb2dzLmVy
cm9yKCJDYW5ub3QgZmluZCB0aGUgc3BlY2lmaWVkIFNESyBuZWVkZWQgdG8gYnVpbGQ6ICVyIiAl
IHNka3Jvb3QpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBzZGtmbGFncyA9IFsn
LWlzeXNyb290Jywgc2Rrcm9vdF0KLSAgICAgICAgZm9yIGFyY2ggaW4gYXJjaHM6Ci0gICAgICAg
ICAgICBzZGtmbGFncy5leHRlbmQoWyctYXJjaCcsIGFyY2hdKQotCi0gICAgICAgIGNvbmYuZW52
LmFwcGVuZF92YWx1ZSgnQ1BQRkxBR1MnLCBzZGtmbGFncykKLSAgICAgICAgY29uZi5lbnYuYXBw
ZW5kX3ZhbHVlKCdMSU5LRkxBR1MnLCBzZGtmbGFncykKLQotICAgICAgICBjb25mLmVudi5hcHBl
bmRfdmFsdWUoJ0xJTktGTEFHUycsIFsnLWZyYW1ld29yaycsICdTZWN1cml0eSddKQotCi0gICAg
ICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1BQUEFUSF9TUUxJVEUzJywgW29zLnBhdGguam9p
bih3a2xpYnNfZGlyLCAnV2ViQ29yZVNRTGl0ZTMnKV0pCi0gICAgICAgIGNvbmYuZW52LmFwcGVu
ZF92YWx1ZSgnTElCX1NRTElURTMnLCBbJ1dlYkNvcmVTUUxpdGUzJ10pCi0KLSAgICAjIE5PVEU6
IFRoZSBvcmRlciBoZXJlIGlzIGltcG9ydGFudCwgYmVjYXVzZSBweXRob24gc2V0cyB0aGUgTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUIHRvCi0gICAgIyAxMC4zIGV2ZW4gb24gaW50ZWwuIFNvIHdl
IG11c3QgZmlyc3Qgc2V0IHRoZSBTREsgYW5kIGFyY2ggZmxhZ3MsIHRoZW4gbG9hZCBQeXRob24n
cyBjb25maWcsCi0gICAgIyBhbmQgZmluYWxseSBvdmVycmlkZSB0aGUgdmFsdWUgUHl0aG9uIHNl
dCBmb3IgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi0gICAgaWYgT3B0aW9ucy5vcHRpb25zLnd4
cHl0aG9uOgotICAgICAgICBjb25mLmNoZWNrX3Rvb2woJ3B5dGhvbicpCi0gICAgICAgIGNvbmYu
Y2hlY2tfcHl0aG9uX2hlYWRlcnMoKQotCi0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J2RhcndpbicpOgotICAgICAgICBvcy5lbnZpcm9uW21hY190YXJnZXRdID0gY29uZi5lbnZbbWFj
X3RhcmdldF0gPSBtaW5fdmVyc2lvbgotCi0gICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhE
RUZJTkVTJywgZmVhdHVyZV9kZWZpbmVzKQotICAgIGlmIGNvbmZpZyA9PSAnUmVsZWFzZSc6Ci0g
ICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1BQREVGSU5FUycsICdOREVCVUcnKQotCi0g
ICAgaWYgYnVpbGRpbmdfb25fd2luMzI6Ci0gICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgn
Q1BQUEFUSCcsIFsKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihqc2NvcmVfZGlyLCAnb3Mtd2lu
MzInKSwKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihtc3ZjbGlic19kaXIsICdpbmNsdWRlJyks
Ci0gICAgICAgICAgICBvcy5wYXRoLmpvaW4obXN2Y2xpYnNfZGlyLCAnaW5jbHVkZScsICdwdGhy
ZWFkcycpLAotICAgICAgICAgICAgb3MucGF0aC5qb2luKG1zdmNsaWJzX2RpciwgJ2xpYicpLAot
ICAgICAgICAgICAgXSkKLQotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0xJQicsIFsn
bGlicG5nJywgJ2xpYmpwZWcnLCAncHRocmVhZFZDMiddKQotICAgICAgICAjIGNvbW1vbiB3aW4g
bGlicwotICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0xJQicsIFsKLSAgICAgICAgICAg
ICdrZXJuZWwzMicsICd1c2VyMzInLCAnZ2RpMzInLCAnY29tZGxnMzInLCAnd2luc3Bvb2wnLCAn
d2lubW0nLAotICAgICAgICAgICAgJ3NoZWxsMzInLCAnc2hsd2FwaScsICdjb21jdGwzMicsICdv
bGUzMicsICdvbGVhdXQzMicsICd1dWlkJywgJ2FkdmFwaTMyJywKLSAgICAgICAgICAgICd3c29j
azMyJywgJ2dkaXBsdXMnLCAndXNwMTAnLCAndmVyc2lvbiddKQotCi0gICAgICAgIGNvbmYuZW52
WydMSUJfSUNVJ10gPSBbJ2ljdWR0JywgJ2ljdWxlJywgJ2ljdWx4JywgJ2ljdXVjJywgJ2ljdWlu
JywgJ2ljdWlvJywgJ2ljdXR1J10KLQotICAgICAgICAjY3VybAotICAgICAgICBjb25mLmVudlsn
TElCX0NVUkwnXSA9IFsnbGliY3VybCddCi0KLSAgICAgICAgI3NxbGl0ZTMKLSAgICAgICAgY29u
Zi5lbnZbJ0NQUFBBVEhfU1FMSVRFMyddID0gW29zLnBhdGguam9pbihtc3ZjbGlic19kaXIsICdp
bmNsdWRlJywgJ1NRTGl0ZScpXQotICAgICAgICBjb25mLmVudlsnTElCX1NRTElURTMnXSA9IFsn
c3FsaXRlMyddCi0KLSAgICAgICAgI2xpYnhtbDIKLSAgICAgICAgY29uZi5lbnZbJ0xJQl9YTUwn
XSA9IFsnbGlieG1sMiddCi0KLSAgICAgICAgI2xpYnhzbHQKLSAgICAgICAgY29uZi5lbnZbJ0xJ
Ql9YU0xUJ10gPSBbJ2xpYnhzbHQnXQotICAgIGVsc2U6Ci0gICAgICAgIGNvbmYuZW52LmFwcGVu
ZF92YWx1ZSgnQ1hYRkxBR1MnLCBbJy1mdmlzaWJpbGl0eT1oaWRkZW4nXSkKLSAgICAgICAgaWYg
YnVpbGRfcG9ydCA9PSAnd3gnOgotICAgICAgICAgICAgcG9ydF91c2VzWyd3eCddLmFwcGVuZCgn
UFRIUkVBRFMnKQotICAgICAgICAgICAgY29uZi5lbnYuYXBwZW5kX3ZhbHVlKCdMSUInLCBbJ2pw
ZWcnLCAncG5nJywgJ3B0aHJlYWQnXSkKLSAgICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1
ZSgnTElCUEFUSCcsIG9zLnBhdGguam9pbih3a2xpYnNfZGlyLCAndW5peCcsICdsaWInKSkKLSAg
ICAgICAgICAgIGNvbmYuZW52LmFwcGVuZF92YWx1ZSgnQ1BQUEFUSCcsIG9zLnBhdGguam9pbih3
a2xpYnNfZGlyLCAndW5peCcsICdpbmNsdWRlJykpCi0gICAgICAgICAgICBjb25mLmVudi5hcHBl
bmRfdmFsdWUoJ0NYWEZMQUdTJywgWyctZlBJQycsICctRFBJQyddKQotICAgICAgICAgICAgY29u
Zi5lbnYuYXBwZW5kX3ZhbHVlKCdDWFhGTEFHUycsIFsnLWcnXSkKLSAgICAgICAgY29uZi5jaGVj
a19jZmcobXNnPSdDaGVja2luZyBmb3IgbGlieHNsdCcsIHBhdGg9J3hzbHQtY29uZmlnJywgYXJn
cz0nLS1jZmxhZ3MgLS1saWJzJywgcGFja2FnZT0nJywgdXNlbGliX3N0b3JlPSdYU0xUJywgbWFu
ZGF0b3J5PVRydWUpCi0gICAgICAgIGNvbmYuY2hlY2tfY2ZnKHBhdGg9J3htbDItY29uZmlnJywg
YXJncz0nLS1jZmxhZ3MgLS1saWJzJywgcGFja2FnZT0nJywgdXNlbGliX3N0b3JlPSdYTUwnLCBt
YW5kYXRvcnk9VHJ1ZSkKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2Rhcndp
bicpIGFuZCBtaW5fdmVyc2lvbiBhbmQgbWluX3ZlcnNpb24gPT0gJzEwLjQnOgotICAgICAgICAg
ICAgY29uZi5jaGVja19jZmcocGF0aD1vcy5wYXRoLmpvaW4od2tsaWJzX2RpciwgJ3VuaXgnLCAn
YmluJywgJ2N1cmwtY29uZmlnJyksIGFyZ3M9Jy0tY2ZsYWdzIC0tbGlicycsIHBhY2thZ2U9Jycs
IHVzZWxpYl9zdG9yZT0nQ1VSTCcsIG1hbmRhdG9yeT1UcnVlKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgY29uZi5jaGVja19jZmcocGF0aD0nY3VybC1jb25maWcnLCBhcmdzPSctLWNmbGFn
cyAtLWxpYnMnLCBwYWNrYWdlPScnLCB1c2VsaWJfc3RvcmU9J0NVUkwnLCBtYW5kYXRvcnk9VHJ1
ZSkKLQotICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgot
ICAgICAgICAgICAgIyB0aGlzIGlzIG5lZWRlZCB0byBrZWVwIGxkIGZyb20gaGl0dGluZyB0aGUg
NGdiIHByb2Nlc3MgbGltaXQgdW5kZXIgTGludXgvVW5peC4KLSAgICAgICAgICAgIGNvbmYuZW52
LmFwcGVuZF92YWx1ZSgnTElOS0ZMQUdTJywgWyctV2wsLS1uby1rZWVwLW1lbW9yeSddKQotICAg
ICAgICAgICAgY29uZi5jaGVja19jZmcocGFja2FnZT0nY2Fpcm8nLCBhcmdzPSctLWNmbGFncyAt
LWxpYnMnLCB1c2VsaWJfc3RvcmU9J1dYJywgbWFuZGF0b3J5PVRydWUpCi0gICAgICAgICAgICBj
b25mLmNoZWNrX2NmZyhwYWNrYWdlPSdwYW5nbycsIGFyZ3M9Jy0tY2ZsYWdzIC0tbGlicycsIHVz
ZWxpYl9zdG9yZT0nV1gnLCBtYW5kYXRvcnk9VHJ1ZSkKLSAgICAgICAgICAgIGNvbmYuY2hlY2tf
Y2ZnKHBhY2thZ2U9J2d0aystMi4wJywgYXJncz0nLS1jZmxhZ3MgLS1saWJzJywgdXNlbGliX3N0
b3JlPSdXWCcsIG1hbmRhdG9yeT1UcnVlKQotICAgICAgICAgICAgY29uZi5jaGVja19jZmcocGFj
a2FnZT0nc3FsaXRlMycsIGFyZ3M9Jy0tY2ZsYWdzIC0tbGlicycsIHVzZWxpYl9zdG9yZT0nU1FM
SVRFMycsIG1hbmRhdG9yeT1UcnVlKQotICAgICAgICAgICAgY29uZi5jaGVja19jZmcocGF0aD0n
aWN1LWNvbmZpZycsIGFyZ3M9Jy0tY2ZsYWdzIC0tbGRmbGFncycsIHBhY2thZ2U9JycsIHVzZWxp
Yl9zdG9yZT0nSUNVJywgbWFuZGF0b3J5PVRydWUpCi0KLSAgICBpZiBidWlsZF9wb3J0IGluIHBv
cnRfdXNlczoKLSAgICAgICAgZm9yIHVzZSBpbiBwb3J0X3VzZXNbYnVpbGRfcG9ydF06Ci0gICAg
ICAgICAgICBjb25mLmVudi5hcHBlbmRfdmFsdWUoJ0NYWERFRklORVMnLCBbJ1dURl9VU0VfJXMn
ICUgdXNlXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dhZi9idWlsZC93YWZfZXh0ZW5zaW9ucy5weSBi
L1Rvb2xzL3dhZi9idWlsZC93YWZfZXh0ZW5zaW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZThjMzVmOTc1OTczMDViMDllMTJiMmE3NjdlNTA1NmI1M2E0NWU3Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy93YWYvYnVpbGQv
d2FmX2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMDkgS2V2aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0jIFRoaXMgbW9kdWxlIGlzIGZvciBj
b2RlIHdoZXJlIHdlIG92ZXJyaWRlIHdhZidzIGRlZmF1bHQgYmVoYXZpb3Igb3IgZXh0ZW5kIHdh
ZgotCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBV
dGlscwotCi0KLSMgdmVyc2lvbiBvZiBleGVjX2NvbW1hbmQgdGhhdCBoYW5kbGVzIFdpbmRvd3Mg
Y29tbWFuZCBsaW5lcyBsb25nZXIgdGhhbiAzMjAwMCBjaGFycwotZGVmIGV4ZWNfY29tbWFuZChz
LCAqKmt3KToKLSAgICBmaWxlbmFtZSA9ICcnCi0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ3dpbicpIGFuZCBsZW4oJyAnLmpvaW4ocykpID4gMzIwMDA6Ci0gICAgICAgIGltcG9ydCB0
ZW1wZmlsZQotICAgICAgICAoZmQsIGZpbGVuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoKQotICAg
ICAgICB0ID0gW10KLSAgICAgICAgZm9yIGkgaW4gczoKLSAgICAgICAgICAgIGlmIGkuZmluZCgi
ICIpICE9IC0xOgotICAgICAgICAgICAgICAgIGkgPSAnIiVzIicgJSBpCi0gICAgICAgICAgICB0
LmFwcGVuZChpKQotCi0gICAgICAgIHQxID0gdFsxOl0KLSAgICAgICAgIyBGaXggZm9yIExOSzEx
NzAgZXJyb3IKLSAgICAgICAgZmlsZW5hbWVfc3RyID0gJ0AnICsgZmlsZW5hbWUKLSAgICAgICAg
ZmlsZW5hbWUyX3N0ciA9IE5vbmUKLSAgICAgICAgaWYgbGVuKCcgJy5qb2luKHMpKSA+IDEzMTA3
MDoKLSAgICAgICAgICAgIHQyID0gdFtsZW4odCkgLyAyOl0KLSAgICAgICAgICAgIHQxID0gdFsx
Omxlbih0KSAvIDJdCi0gICAgICAgICAgICAoZmQyLCBmaWxlbmFtZTIpID0gdGVtcGZpbGUubWtz
dGVtcCgpCi0gICAgICAgICAgICBvcy53cml0ZShmZDIsICcgJy5qb2luKHQyKSkKLSAgICAgICAg
ICAgIG9zLmNsb3NlKGZkMikKLSAgICAgICAgICAgIGZpbGVuYW1lMl9zdHIgPSAnQCcgKyBmaWxl
bmFtZTIKLSAgICAgICAgb3Mud3JpdGUoZmQsICcgJy5qb2luKHQxKSkKLSAgICAgICAgb3MuY2xv
c2UoZmQpCi0KLSAgICAgICAgcyA9IFtzWzBdXQotICAgICAgICBzLmFwcGVuZChmaWxlbmFtZV9z
dHIpCi0gICAgICAgIGlmIGZpbGVuYW1lMl9zdHI6Ci0gICAgICAgICAgICBzLmFwcGVuZChmaWxl
bmFtZTJfc3RyKQotCi0gICAgaWYgJ2xvZycgaW4ga3c6Ci0gICAgICAgIGt3WydzdGRvdXQnXSA9
IGt3WydzdGRlcnInXSA9IGt3Wydsb2cnXQotICAgICAgICBkZWwoa3dbJ2xvZyddKQotICAgIGt3
WydzaGVsbCddID0gaXNpbnN0YW5jZShzLCBzdHIpCi0KLSAgICBkZWYgY2xlYW51cCgpOgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6Ci0gICAg
ICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAg
ICAgICBwYXNzCi0KLSAgICB0cnk6Ci0gICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKHMs
ICoqa3cpCi0gICAgICAgIHJlc3VsdCA9IHByb2Mud2FpdCgpCi0gICAgICAgIGNsZWFudXAoKQot
ICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgY2xl
YW51cCgpCi0gICAgICAgIHJhaXNlCi0KLVV0aWxzLmV4ZWNfY29tbWFuZCA9IGV4ZWNfY29tbWFu
ZAotCi0jIEJldHRlciBwZXJmb3JtaW5nIGhfZmlsZSB0byBrZWVwIGhhc2hpbmcgZnJvbSBjb25z
dW1pbmcgbG90cyBvZiB0aW1lCi1pbXBvcnQgc3RhdAotCi0KLWRlZiBoX2ZpbGUoZmlsZW5hbWUp
OgotICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKLSAgICBpZiBzdGF0LlNfSVNESVIoc3Rbc3Rh
dC5TVF9NT0RFXSk6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IoJ25vdCBhIGZpbGUnKQotICAgIG0g
PSBVdGlscy5tZDUoKQotICAgIG0udXBkYXRlKHN0cihzdC5zdF9tdGltZSkpCi0gICAgbS51cGRh
dGUoc3RyKHN0LnN0X3NpemUpKQotICAgIG0udXBkYXRlKGZpbGVuYW1lKQotICAgIHJldHVybiBt
LmRpZ2VzdCgpCi0KLVV0aWxzLmhfZmlsZSA9IGhfZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvd2Fm
L2J1aWxkL3d4cHJlc2V0cy5weSBiL1Rvb2xzL3dhZi9idWlsZC93eHByZXNldHMucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZWQzYzUwNzI2NmRiNTVhMDQxNzhjZmU3ODkxMTM5
ZDUzMWMwM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvd2FmL2J1aWxkL3d4cHJlc2V0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAwOSBLZXZpbiBPbGxpdmllciAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMKLSMgTGlicmFyeSBm
b3IgZnVuY3Rpb25zIHRvIGRldGVybWluZSB3eCBzZXR0aW5ncyBiYXNlZCBvbiBjb25maWd1cmF0
aW9uCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBPcHRpb25z
Ci0KLQotZGVmIHBhcnNlX2J1aWxkX2NmZyhmaWxlbmFtZSk6Ci0gICAgY2ZnX2ZpbGUgPSBvcGVu
KGZpbGVuYW1lLCAncicpCi0gICAgY2ZnID0ge30KLSAgICBmb3IgY2ZnX2xpbmUgaW4gY2ZnX2Zp
bGUucmVhZGxpbmVzKCk6Ci0gICAgICAgIGtleSA9IE5vbmUKLSAgICAgICAgdmFsdWUgPSBOb25l
Ci0gICAgICAgIHBhcnRzID0gY2ZnX2xpbmUuc3BsaXQoJz0nKQotICAgICAgICBpZiBsZW4ocGFy
dHMpID49IDE6Ci0gICAgICAgICAgICBrZXkgPSBwYXJ0c1swXS5zdHJpcCgpCi0KLSAgICAgICAg
aWYgbGVuKHBhcnRzKSA+PSAyOgotICAgICAgICAgICAgdmFsdWUgPSBwYXJ0c1sxXS5zdHJpcCgp
Ci0gICAgICAgICAgICBpZiB2YWx1ZS5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICAgICAgdmFsdWUg
PSBpbnQodmFsdWUpCi0KLSAgICAgICAgaWYga2V5OgotICAgICAgICAgICAgY2ZnW2tleV0gPSB2
YWx1ZQotCi0gICAgcmV0dXJuIGNmZwotCi0KLWRlZiBnZXRfd3hfdmVyc2lvbih3eF9yb290KToK
LSAgICB2ZXJzaW9uVGV4dCA9IG9wZW4ob3MucGF0aC5qb2luKHd4X3Jvb3QsICJpbmNsdWRlIiwg
Ind4IiwgInZlcnNpb24uaCIpLCAiciIpLnJlYWQoKQotCi0gICAgbWFqb3JWZXJzaW9uID0gcmUu
c2VhcmNoKCIjZGVmaW5lXHN3eE1BSk9SX1ZFUlNJT05ccysoXGQrKSIsIHZlcnNpb25UZXh0KS5n
cm91cCgxKQotICAgIG1pbm9yVmVyc2lvbiA9IHJlLnNlYXJjaCgiI2RlZmluZVxzd3hNSU5PUl9W
RVJTSU9OXHMrKFxkKykiLCB2ZXJzaW9uVGV4dCkuZ3JvdXAoMSkKLSAgICByZWxlYXNlVmVyc2lv
biA9IHJlLnNlYXJjaCgiI2RlZmluZVxzd3hSRUxFQVNFX05VTUJFUlxzKyhcZCspIiwgdmVyc2lv
blRleHQpLmdyb3VwKDEpCi0KLSAgICByZWxlYXNlID0gW21ham9yVmVyc2lvbiwgbWlub3JWZXJz
aW9uXQotICAgIGlmIGludChtaW5vclZlcnNpb24pICUgMiA9PSAxOgotICAgICAgICByZWxlYXNl
LmFwcGVuZChyZWxlYXNlVmVyc2lvbikKLSAgICByZXR1cm4gcmVsZWFzZQotCi0KLWRlZiBnZXRf
d3htc3dfc2V0dGluZ3Mod3hfcm9vdCwgc2hhcmVkPUZhbHNlLCB1bmljb2RlPUZhbHNlLCBkZWJ1
Zz1GYWxzZSwgd3hQeXRob249RmFsc2UpOgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh3eF9y
b290KToKLSAgICAgICAgcHJpbnQgIkRpcmVjdG9yeSAlcyBkb2VzIG5vdCBleGlzdC4iICUgd3hf
cm9vdAotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZGVmaW5lcyA9IFsnX19XWE1TV19fJ10K
LSAgICBpbmNsdWRlcyA9IFtvcy5wYXRoLmpvaW4od3hfcm9vdCwgJ2luY2x1ZGUnKV0KLSAgICBj
eHhmbGFncyA9IFtdCi0gICAgbGlicyA9IFtdCi0gICAgbGlicGF0aHMgPSBbXQotCi0gICAgbGli
ZGlyID0gb3MucGF0aC5qb2luKHd4X3Jvb3QsICdsaWInKQotICAgIGV4dCA9ICcnCi0gICAgcG9z
dGZpeCA9ICd2YycKLQotICAgIHZlcnNpb25fc3RyX25vZG90ID0gJycuam9pbihnZXRfd3hfdmVy
c2lvbih3eF9yb290KVswOjJdKQotCi0gICAgaWYgc2hhcmVkOgotICAgICAgICBkZWZpbmVzLmFw
cGVuZCgnV1hVU0lOR0RMTCcpCi0gICAgICAgIGxpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIs
IE9wdGlvbnMub3B0aW9ucy53eF9jb21waWxlcl9wcmVmaXggKyAnX2RsbCcpCi0gICAgZWxzZToK
LSAgICAgICAgbGliZGlyID0gb3MucGF0aC5qb2luKGxpYmRpciwgT3B0aW9ucy5vcHRpb25zLnd4
X2NvbXBpbGVyX3ByZWZpeCArICdfbGliJykKLQotICAgIGlmIHVuaWNvZGU6Ci0gICAgICAgIGRl
ZmluZXMuYXBwZW5kKCdfVU5JQ09ERScpCi0gICAgICAgIGV4dCArPSAndScKLQotICAgIGRlcGV4
dCA9ICcnCi0gICAgaWYgd3hQeXRob24gYW5kIG5vdCB2ZXJzaW9uX3N0cl9ub2RvdC5zdGFydHN3
aXRoKCcyOScpOgotICAgICAgICBleHQgKz0gJ2gnCi0gICAgICAgIGRlcGV4dCArPSAnaCcKLSAg
ICBlbGlmIGRlYnVnOgotICAgICAgICBleHQgKz0gJ2QnCi0gICAgICAgIGRlcGV4dCArPSAnZCcK
LQotICAgIGNvbmZpZ2RpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICdtc3cnICsgZXh0KQotCi0g
ICAgbW9ub2xpdGhpYyA9IEZhbHNlCi0gICAgY2ZnX2ZpbGUgPSBvcy5wYXRoLmpvaW4oY29uZmln
ZGlyLCAnYnVpbGQuY2ZnJykKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhjZmdfZmlsZSk6Ci0gICAg
ICAgIGNmZyA9IHBhcnNlX2J1aWxkX2NmZyhjZmdfZmlsZSkKLSAgICAgICAgaWYgIk1PTk9MSVRI
SUMiIGluIGNmZzoKLSAgICAgICAgICAgIG1vbm9saXRoaWMgPSBjZmdbIk1PTk9MSVRISUMiXQot
ICAgIGxpYnBhdGhzLmFwcGVuZChsaWJkaXIpCi0gICAgaW5jbHVkZXMuYXBwZW5kKGNvbmZpZ2Rp
cikKLQotICAgIGRlZiBnZXRfd3hsaWJfbmFtZShuYW1lKToKLSAgICAgICAgaWYgbmFtZSA9PSAn
YmFzZSc6Ci0gICAgICAgICAgICByZXR1cm4gJ3d4YmFzZSVzJXMnICUgKHZlcnNpb25fc3RyX25v
ZG90LCBleHQpCi0KLSAgICAgICAgcmV0dXJuICJ3eG1zdyVzJXNfJXMiICUgKHZlcnNpb25fc3Ry
X25vZG90LCBleHQsIG5hbWUpCi0KLSAgICBsaWJzLmV4dGVuZChbJ3d4emxpYicgKyBkZXBleHQs
ICd3eGpwZWcnICsgZGVwZXh0LCAnd3hwbmcnICsgZGVwZXh0LCAnd3hleHBhdCcgKyBkZXBleHRd
KQotICAgIGlmIG1vbm9saXRoaWM6Ci0gICAgICAgIGxpYnMuZXh0ZW5kKFsid3htc3clcyVzIiAl
ICh2ZXJzaW9uX3N0cl9ub2RvdCwgZXh0KV0pCi0gICAgZWxzZToKLSAgICAgICAgbGlicy5leHRl
bmQoW2dldF93eGxpYl9uYW1lKCdiYXNlJyksIGdldF93eGxpYl9uYW1lKCdjb3JlJyldKQotCi0g
ICAgaWYgd3hQeXRob24gb3IgZGVidWc6Ci0gICAgICAgIGRlZmluZXMuYXBwZW5kKCdfX1dYREVC
VUdfXycpCi0KLSAgICByZXR1cm4gKGRlZmluZXMsIGluY2x1ZGVzLCBsaWJzLCBsaWJwYXRocykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL3d4L2Jyb3dzZXIvYnJvd3Nlci5jcHAgYi9Ub29scy93eC9icm93
c2VyL2Jyb3dzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzgzMjQ2ZjQ0
NjI0YjRkYzM5MGJhYjkzNDQyMGY1NDI0MWZjYWRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3d4L2Jyb3dzZXIvYnJvd3Nlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEtldmlu
IE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KLSAqCi0gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0gCi0vLyB3ZWJraXQgaW5jbHVkZXMKLSNpbmNsdWRlICJXZWJCcm93c2Vy
U2hlbGwuaCIKLSNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIK
LQotI2luY2x1ZGUgInd4L3d4cHJlYy5oIgotI2lmbmRlZiBXWF9QUkVDT01QCi0gICAgI2luY2x1
ZGUgInd4L3d4LmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotY2xhc3Mg
TXlBcHAgOiBwdWJsaWMgd3hBcHAKLXsKLXB1YmxpYzoKLQotICAgIHZpcnR1YWwgYm9vbCBPbklu
aXQoKTsKLX07Ci0KLQotSU1QTEVNRU5UX0FQUChNeUFwcCkKLQotYm9vbCBNeUFwcDo6T25Jbml0
KCkKLXsKLSAgICB3eEluaXRBbGxJbWFnZUhhbmRsZXJzKCk7Ci0gICAgICAgIAotICAgIC8vIGNy
ZWF0ZSB0aGUgbWFpbiBhcHBsaWNhdGlvbiB3aW5kb3cKLSAgICAvLyBzZWUgV2ViS2l0L3d4L1dl
YkZyYW1lLmNwcCBmb3IgaG93IHRvIHdyaXRlIGEgc2hlbGwgYXJvdW5kIHd4V2ViVmlldy4KLSAg
ICBXZWJCcm93c2VyU2hlbGwqIGZyYW1lID0gbmV3IFdlYkJyb3dzZXJTaGVsbChfVCgid3hXZWJL
aXQgVGVzdCBBcHAiKSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZyIpOwotCi0jaWZuZGVmIE5ERUJV
RwotICAgIGZyYW1lLT5TaG93RGVidWdNZW51KHRydWUpOwotI2VuZGlmCi0KLSAgICBXZWJTZXR0
aW5ncyBzZXR0aW5ncyA9IGZyYW1lLT53ZWJ2aWV3LT5HZXRXZWJTZXR0aW5ncygpOwotI2lmIF9f
V1hNU1dfXyB8fCBfX1dYTUFDX18KLSAgICBzZXR0aW5ncy5TZXRQbHVnaW5zRW5hYmxlZCh0cnVl
KTsKLSNlbmRpZgotICAgIGZyYW1lLT53ZWJ2aWV3LT5TZXREYXRhYmFzZXNFbmFibGVkKHRydWUp
OwotICAgIHNldHRpbmdzLlNldEVkaXRhYmxlTGlua0JlaGF2aW9yKHd4RWRpdGFibGVMaW5rT25s
eUxpdmVXaXRoU2hpZnRLZXkpOwotICAgIGZyYW1lLT5DZW50cmVPblNjcmVlbigpOwotICAgIGZy
YW1lLT5TaG93KHRydWUpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19CmRpZmYgLS1naXQgYS9Ub29s
cy93eC9icm93c2VyL3dzY3JpcHQgYi9Ub29scy93eC9icm93c2VyL3dzY3JpcHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNWFlZWU5NTYyZmE5MTM2Mjk0NTJhMzk5NWYxOTRjYjMw
MGMxY2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvd3gvYnJvd3Nlci93c2NyaXB0CisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotIyEg
L3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAwOSBLZXZpbiBPbGxpdmll
ciAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0jCi0jIHd4QnJvd3NlciBzYW1wbGUgYXBwIGJ1aWxkIHNjcmlwdCBmb3IgdGhlIHdhZiBi
dWlsZCBzeXN0ZW0KLQotaW1wb3J0IHN5cwotCi1mcm9tIHNldHRpbmdzIGltcG9ydCAqCi0KLWlu
Y2x1ZGVfcGF0aHMgPSBbb3MucGF0aC5qb2luKHdrX3Jvb3QsICdTb3VyY2UnLCAnV2ViQ29yZScs
ICdiaW5kaW5ncycsICd3eCcpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3a19yb290
LCAnU291cmNlJywgJ1dlYktpdCcsICd3eCcpXQotCi1kZWYgc2V0X29wdGlvbnMob3B0KToKLSAg
ICBjb21tb25fc2V0X29wdGlvbnMob3B0KQotCi1kZWYgY29uZmlndXJlKGNvbmYpOgotICAgIGNv
bW1vbl9jb25maWd1cmUoY29uZikKLSAgICAKLWRlZiBidWlsZChibGQpOgotICAgIGltcG9ydCBP
cHRpb25zCi0KLSAgICBvYmogPSBibGQubmV3X3Rhc2tfZ2VuKAotICAgICAgICBmZWF0dXJlcyA9
ICdjeHggY3Byb2dyYW0nLAotICAgICAgICBpbmNsdWRlcyA9ICcgJy5qb2luKGluY2x1ZGVfcGF0
aHMpLAotICAgICAgICBzb3VyY2UgPSAnYnJvd3Nlci5jcHAnLAotICAgICAgICB0YXJnZXQgPSAn
d3hCcm93c2VyJywKLSAgICAgICAgdXNlbGliID0gJ1dYIENVUkwgSUNVIFhTTFQgWE1MICcgKyBn
ZXRfY29uZmlnKCksCi0gICAgICAgIGxpYnBhdGggPSBbb3V0cHV0X2Rpcl0sCi0gICAgICAgIHVz
ZWxpYl9sb2NhbCA9ICd3eHdlYmtpdCcsCi0gICAgICAgIGluc3RhbGxfcGF0aCA9IG91dHB1dF9k
aXIpCi0gICAgICAgIAotICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKToK
LSAgICAgICAgb2JqLm1hY19hcHAgPSBUcnVlCmRpZmYgLS1naXQgYS9Ub29scy93eC9pbnN0YWxs
LXVuaXgtZXh0cmFzIGIvVG9vbHMvd3gvaW5zdGFsbC11bml4LWV4dHJhcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggYTI3YTQ2YjllMzdmODA0YzFjZjZmY2UwMTYxMjViYWJjYjllZTA4
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy93
eC9pbnN0YWxsLXVuaXgtZXh0cmFzCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLSMh
L2Jpbi9zaAotCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
IyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBB
IHNjcmlwdCB0byBkb3dubG9hZCB0aGUgZXh0cmEgbGlicmFyaWVzIG5lZWRlZCB0byBidWlsZCBX
ZWJLaXQgb24gVU5JWC1iYXNlZCBPU2VzLgotIyBsaWJ4bWwvbGlieHNsdCBuZWVkIHRvIGJlIGFk
ZGVkLCBidXQgc28gZmFyIEkndmUgaGFkIHRoZW0gb24gYWxsIHRoZSAoVU5JWCkgbWFjaGluZXMK
LSMgSSd2ZSB0ZXN0ZWQgb24sIHNvIEkgZG9uJ3QgaGF2ZSBhIG1hY2hpbmUgdG8gdGVzdCB0aGUg
Y29kZSBvbi4KLQotRExfQ01EPSJjdXJsIC1MIgotCi1zY3JpcHREaXI9IiQoY2QgJChkaXJuYW1l
ICQwKTtwd2QpIgotV0tfUk9PVD0kc2NyaXB0RGlyLy4uLy4uCi1XS19ST09URElSPSRXS19ST09U
Ci0KLURMX0RJUj0vdG1wL3dlYmtpdC1kZXBzCi0jIE5PVEU6IElmIHlvdSBjaGFuZ2UgdGhpcywg
bWFrZSBzdXJlIHRoZSBkaXIgaXMgb24gdGhlIHBhdGguCi1ERVBTX1BSRUZJWD0kV0tfUk9PVC9X
ZWJLaXRMaWJyYXJpZXMvdW5peAotRExMRVhUPXNvCi0KLWlmIFsgIiR7T1NUWVBFOjA6Nn0iID09
ICJkYXJ3aW4iIF07IHRoZW4KLSAgICBETExFWFQ9ZHlsaWIKLWZpCi0KLW1rZGlyIC1wICRETF9E
SVIKLW1rZGlyIC1wICRERVBTX1BSRUZJWAotCi1ta2RpciAtcCAkREVQU19QUkVGSVgvYmluCi1t
a2RpciAtcCAkREVQU19QUkVGSVgvbGliCi1ta2RpciAtcCAkREVQU19QUkVGSVgvaW5jbHVkZQot
IAotSUNVX1ZFUlNJT049IjMuNC4xIgotSUNVX1RBUkJBTEw9ImljdS0kSUNVX1ZFUlNJT04udGd6
IgotSUNVX1VSTD0iZnRwOi8vZnRwLnNvZnR3YXJlLmlibS5jb20vc29mdHdhcmUvZ2xvYmFsaXph
dGlvbi9pY3UvJElDVV9WRVJTSU9OLyRJQ1VfVEFSQkFMTCIKLQotIyBkZXBlbmRlbnQgYXBwLCBu
b3QgbGliLCB3aGF0IHNob3VsZCB3ZSBkbyBmb3IgdGhlc2U/Ci0KLUdQRVJGX1ZFUlNJT049IjMu
MC4xIgotR1BFUkZfVEFSQkFMTD0iZ3BlcmYtJEdQRVJGX1ZFUlNJT04udGFyLmd6IgotR1BFUkZf
VVJMPSJmdHA6Ly9taXJyb3JzLmtlcm5lbC5vcmcvZ251L2dwZXJmLyRHUEVSRl9UQVJCQUxMIgot
Ci1QS0dfQ09ORklHX1ZFUlNJT049IjAuMjAiCi1QS0dfQ09ORklHX1RBUkJBTEw9InBrZy1jb25m
aWctJFBLR19DT05GSUdfVkVSU0lPTi50YXIuZ3oiCi1QS0dfQ09ORklHX1VSTD0iaHR0cDovL3Br
Z2NvbmZpZy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJFBLR19DT05GSUdfVEFSQkFMTCIKLQot
SUNPTlZfVkVSU0lPTj0iMS45LjIiCi1JQ09OVl9UQVJCQUxMPSJsaWJpY29udi0kSUNPTlZfVkVS
U0lPTi50YXIuZ3oiCi1JQ09OVl9VUkw9Imh0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L2xpYmlj
b252LyRJQ09OVl9UQVJCQUxMIgotCi1MSUJKUEVHX1ZFUlNJT049IjZiIgotTElCSlBFR19UQVJC
QUxMPSJqcGVnc3JjLnYkTElCSlBFR19WRVJTSU9OLnRhci5neiIKLUxJQkpQRUdfVVJMPSJodHRw
Oi8vd3h3ZWJraXQud3hjb21tdW5pdHkuY29tL2Rvd25sb2Fkcy9kZXBzLyRMSUJKUEVHX1RBUkJB
TEwiCi0KLUxJQlBOR19WRVJTSU9OPSIxLjIuMzMiCi1MSUJQTkdfVEFSQkFMTD0ibGlicG5nLSRM
SUJQTkdfVkVSU0lPTi50YXIuZ3oiCi1MSUJQTkdfVVJMPSJodHRwOi8vd3h3ZWJraXQud3hjb21t
dW5pdHkuY29tL2Rvd25sb2Fkcy9kZXBzLyRMSUJQTkdfVEFSQkFMTCIKLQotTElCQ1VSTF9WRVJT
SU9OPSI3LjE5LjYiCi1MSUJDVVJMX1RBUkJBTEw9ImN1cmwtJExJQkNVUkxfVkVSU0lPTi50YXIu
Z3oiCi1MSUJDVVJMX1VSTD0iaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC8kTElCQ1VSTF9U
QVJCQUxMIgotCi1leHBvcnQgTUFDX09TX1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNAotCi1BUkNI
X0ZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHg4Nl82NCIKLVNESz0iL0RldmVsb3Blci9TREtzL01h
Y09TWDEwLjR1LnNkayIKLQotaWYgWyAhIC1kICRTREsgXTsgdGhlbgotICAgIFNESz0iL0RldmVs
b3Blci9TREtzL01hY09TWDEwLjUuc2RrIgotZmkKLQotaWYgWyAhIC1kICRTREsgXTsgdGhlbgot
ICAgIFNESz0iL0RldmVsb3Blci9TREtzL01hY09TWDEwLjYuc2RrIgotZmkKLQotaWYgWyAiJHtP
U1RZUEU6MDo2fSIgPT0gImRhcndpbiIgXTsgdGhlbiAgCi0gICAgaWYgWyAteCAvdXNyL2Jpbi9n
Y2MtNC4wIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IENDPSJnY2MtNC4wIgotICAgICAgICBleHBv
cnQgQ1hYPSJnKystNC4wIgotICAgIGZpCi1maQotCi1jZCAkRExfRElSCi0jIGJ1aWxkIElDVQot
aWYgWyBgd2hpY2ggaWN1LWNvbmZpZyA+L2Rldi9udWxsIDI+JjFgIF07IHRoZW4KLSAgJERMX0NN
RCAtbyAkRExfRElSLyRJQ1VfVEFSQkFMTCAkSUNVX1VSTAotCi0gIHRhciB4enZmICRETF9ESVIv
JElDVV9UQVJCQUxMCi0gIGNkICRETF9ESVIvaWN1L3NvdXJjZQotICAKLSAgY2htb2QgK3ggY29u
ZmlndXJlIGluc3RhbGwtc2gKLQotICBpZiBbICIke09TVFlQRTowOjZ9IiA9PSAiZGFyd2luIiBd
OyB0aGVuICAKLSAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0kREVQU19QUkVGSVggLS1kaXNhYmxl
LWRlcGVuZGVuY3ktdHJhY2tpbmcKLSAgICBtYWtlIENGTEFHUz0iLU8gLWcgLWlzeXNyb290ICRT
REsgJEFSQ0hfRkxBR1MiIFwKLSAgICBMREZMQUdTPSRBUkNIX0ZMQUdTCi0gICAgbWFrZSBpbnN0
YWxsCi0gIGVsc2UKLSAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0kREVQU19QUkVGSVgKLSAgCi0g
ICAgbWFrZQotICAgICNtYWtlIGNoZWNrCi0gICAgbWFrZSBpbnN0YWxsCi0gIGZpCi0gIGNkICRE
TF9ESVIKLSAgcm0gLXJmIGljdQotZmkKLQotaWYgWyAhIC1mICRERVBTX1BSRUZJWC9saWIvbGli
anBlZy5hIF07IHRoZW4KLSAgJERMX0NNRCAtbyAkRExfRElSLyRMSUJKUEVHX1RBUkJBTEwgJExJ
QkpQRUdfVVJMCi0KLSAgdGFyIHh6dmYgJERMX0RJUi8kTElCSlBFR19UQVJCQUxMCi0gIGNkICRE
TF9ESVIvanBlZy0kTElCSlBFR19WRVJTSU9OCi0KLSAgIyBqcGVnIGluc3RhbGwgY29tbWFuZCBl
eHBlY3RzIHRoaXMgdG8gZXhpc3QuCi0gIG1rZGlyIC1wICRERVBTX1BSRUZJWC9tYW4vbWFuMQot
Ci0gIGlmIFsgIiR7T1NUWVBFOjA6Nn0iID09ICJkYXJ3aW4iIF07IHRoZW4KLSAgICAuL2NvbmZp
Z3VyZSAtLXByZWZpeD0kREVQU19QUkVGSVggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcK
LSAgICBtYWtlIENGTEFHUz0iLU8gLWcgLWlzeXNyb290ICRTREsgJEFSQ0hfRkxBR1MiIFwKLSAg
ICBMREZMQUdTPSIkQVJDSF9GTEFHUyIKLSAgICBtYWtlIGluc3RhbGwKLSAgZWxzZQotICAgIC4v
Y29uZmlndXJlIC0tcHJlZml4PSRERVBTX1BSRUZJWAotICAKLSAgICBtYWtlCi0gIGZpCi0gIAot
ICBjcCBsaWJqcGVnLmEgJERFUFNfUFJFRklYL2xpYgotICBjcCAqLmggJERFUFNfUFJFRklYL2lu
Y2x1ZGUKLSAgCi0gIGNkICRETF9ESVIKLSAgcm0gLXJmICRETF9ESVIvanBlZy0kTElCSlBFR19W
RVJTSU9OCi1maQotCi1pZiBbICEgLWYgJERFUFNfUFJFRklYL2xpYi9saWJwbmcuYSBdOyB0aGVu
Ci0gICRETF9DTUQgLW8gJERMX0RJUi8kTElCUE5HX1RBUkJBTEwgJExJQlBOR19VUkwKLQotICB0
YXIgeHp2ZiAkRExfRElSLyRMSUJQTkdfVEFSQkFMTAotICBjZCAkRExfRElSL2xpYnBuZy0kTElC
UE5HX1ZFUlNJT04KLQotICBpZiBbICIke09TVFlQRTowOjZ9IiA9PSAiZGFyd2luIiBdOyB0aGVu
Ci0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JERFUFNfUFJFRklYIC0tZGlzYWJsZS1kZXBlbmRl
bmN5LXRyYWNraW5nIC0tZGlzYWJsZS1zaGFyZWQKLSAgICBtYWtlIENGTEFHUz0iLU8gLWcgLWlz
eXNyb290ICRTREsgJEFSQ0hfRkxBR1MiIFwKLSAgICBMREZMQUdTPSIkQVJDSF9GTEFHUyIKLSAg
ICBtYWtlIGluc3RhbGwKLSAgZWxzZQotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSRERVBTX1BS
RUZJWAotICAKLSAgICBtYWtlCi0gICAgbWFrZSBpbnN0YWxsCi0gIGZpCi0gIAotICBjZCAkRExf
RElSCi0gIHJtIC1yZiAkRExfRElSL2xpYnBuZy0kTElCUE5HX1ZFUlNJT04KLWZpCi0KLWlmIFsg
ISAtZiAkREVQU19QUkVGSVgvbGliL2xpYmN1cmwuJERMTEVYVCBdOyB0aGVuCi0gICRETF9DTUQg
LW8gJERMX0RJUi8kTElCQ1VSTF9UQVJCQUxMICRMSUJDVVJMX1VSTAotCi0gIHRhciB4enZmICRE
TF9ESVIvJExJQkNVUkxfVEFSQkFMTAotICBjZCAkRExfRElSL2N1cmwtJExJQkNVUkxfVkVSU0lP
TgotCi0gIGlmIFsgIiR7T1NUWVBFOjA6Nn0iID09ICJkYXJ3aW4iIF07IHRoZW4KLSAgICAjIENV
UkwgY3JlYXRlcyBkaWZmZXJlbnQgYnVpbGQgaGVhZGVycyBmb3IgMzIgYW5kIDY0IGJpdCwgc28g
dG8gZ2V0IGEgdW5pdmVyc2FsIGJ1aWxkLAotICAgICMgd2UgbXVzdCBmaXJzdCBjcmVhdGUgYSAz
MiBiaXQgdmVyc2lvbiBvZiB0aGUgaGVhZGVyLCB0aGVuIGEgNjQgYml0IHZlcnNpb24sIGFuZAot
ICAgICMgaGF2ZSB0aGUgb3JpZ2luYWwgaGVhZGVyIHNpbXBseSBkZWNpZGUgd2hpY2ggdG8gdXNl
LgotICAgIGV4cG9ydCBDRkxBR1M9Ii1PIC1nIC1pc3lzcm9vdCAkU0RLIC1tbWFjb3N4LXZlcnNp
b24tbWluPTEwLjQgLWFyY2ggaTM4NiAtYXJjaCBwcGMiCi0gICAgLi9jb25maWd1cmUgLS1wcmVm
aXg9JERFUFNfUFJFRklYIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCi0gICAgCi0gICAg
bWtkaXIgLXAgJERFUFNfUFJFRklYL2luY2x1ZGUvY3VybAotICAgIAotICAgIGNwIGluY2x1ZGUv
Y3VybC9jdXJsYnVpbGQuaCBpbmNsdWRlL2N1cmwvY3VybGJ1aWxkMzIuaAotICAgIAotICAgIG1h
a2UgZGlzdGNsZWFuCi0gICAgCi0gICAgZXhwb3J0IENGTEFHUz0iLU8gLWcgLWlzeXNyb290ICRT
REsgLW1tYWNvc3gtdmVyc2lvbi1taW49MTAuNCAtYXJjaCB4ODZfNjQgLWFyY2ggcHBjNjQiCi0g
ICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JERFUFNfUFJFRklYIC0tZGlzYWJsZS1kZXBlbmRlbmN5
LXRyYWNraW5nCi0gICAgCi0gICAgY3AgaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oIGluY2x1ZGUv
Y3VybC9jdXJsYnVpbGQ2NC5oCi0gICAgCi0gICAgbWFrZSBkaXN0Y2xlYW4KLSAgICAKLSAgICBl
eHBvcnQgQ0ZMQUdTPSItTyAtZyAtaXN5c3Jvb3QgJFNESyAtbW1hY29zeC12ZXJzaW9uLW1pbj0x
MC40ICRBUkNIX0ZMQUdTIgotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSRERVBTX1BSRUZJWCAt
LWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwotICAgIAotICAgIGNhdCA+IGluY2x1ZGUvY3Vy
bC9jdXJsYnVpbGQuaCA8PEVPRgotI2lmZGVmIF9fTFA2NF9fCi0jaW5jbHVkZSAiY3VybGJ1aWxk
NjQuaCIKLSNlbHNlCi0jaW5jbHVkZSAiY3VybGJ1aWxkMzIuaCIKLSNlbmRpZiAKLUVPRgotCi0g
ICAgbWFrZSBDRkxBR1M9Ii1PIC1nIC1pc3lzcm9vdCAkU0RLICRBUkNIX0ZMQUdTIiBcCi0gICAg
TERGTEFHUz0iJEFSQ0hfRkxBR1MiCi0gICAgbWFrZSBpbnN0YWxsCi0gICAgCi0gICAgY3AgaW5j
bHVkZS9jdXJsL2N1cmxidWlsZDMyLmggJERFUFNfUFJFRklYL2luY2x1ZGUvY3VybC9jdXJsYnVp
bGQzMi5oCi0gICAgY3AgaW5jbHVkZS9jdXJsL2N1cmxidWlsZDY0LmggJERFUFNfUFJFRklYL2lu
Y2x1ZGUvY3VybC9jdXJsYnVpbGQ2NC5oCi0gICAgY3AgaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5o
ICRERVBTX1BSRUZJWC9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmgKLSAgICAKLSAgZWxzZQotICAg
IC4vY29uZmlndXJlIC0tcHJlZml4PSRERVBTX1BSRUZJWAotICAKLSAgICBtYWtlCi0gICAgbWFr
ZSBpbnN0YWxsCi0gIGZpCi0gIAotICBjZCAkRExfRElSCi0gIHJtIC1yZiAkRExfRElSL2N1cmwt
JExJQkNVUkxfVkVSU0lPTgotZmkKZGlmZiAtLWdpdCBhL1Rvb2xzL3d4L3BhY2thZ2luZy9idWls
ZC1kZWJpYW4taW5zdGFsbGVyLnB5IGIvVG9vbHMvd3gvcGFja2FnaW5nL2J1aWxkLWRlYmlhbi1p
bnN0YWxsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNjc5NWRlMGRmOWFh
N2QyOWY5MmNhNGUzYTNjODBkNjUwY2JkMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvd3gvcGFja2FnaW5nL2J1aWxkLWRlYmlhbi1pbnN0YWxs
ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLQotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCi0KLXN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICIuLiIsICJidWlsZCIpKSkKLQotaW1wb3J0IGJ1aWxkX3V0aWxzCi0KLXNjcmlwdF9kaXIg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXd4d2Via2l0X2Rp
ciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgIi4uIiwgIi4uIiwg
Ii4uIiwgIldlYktpdEJ1aWxkIiwgIkRlYnVnIiArIGJ1aWxkX3V0aWxzLmdpdF9icmFuY2hfbmFt
ZSgpKSkKLXd4d2tfcm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc2NyaXB0X2Rp
ciwgIi4uIiwgIi4uIiwgIi4uIikpCi0KLXRyeToKLSAgICBvcy5jaGRpcih3eHdrX3Jvb3QpCi0g
ICAgZGViX2RpciA9IG9zLnBhdGguam9pbih3eHdrX3Jvb3QsICd3eHdlYmtpdCcpCi0gICAgaWYg
b3MucGF0aC5leGlzdHMoZGViX2Rpcik6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZGViX2RpcikK
LSAgICBvcy5tYWtlZGlycyhkZWJfZGlyKQotICAgIHByaW50ICJBcmNoaXZpbmcgZ2l0IHRyZWUu
Li4iCi0gICAgb3Muc3lzdGVtKCdnaXQgYXJjaGl2ZSAtLWZvcm1hdD10YXIgSEVBRCB8IGd6aXAg
PiAlcy93ZWJraXR3eF8wLjEub3JpZy50YXIuZ3onICUgZGViX2RpcikKLSAgICBzcmNfcm9vdCA9
IG9zLnBhdGguam9pbihkZWJfZGlyLCAnd2Via2l0d3gtMC4xJykKLSAgICBwcmludCAiRXh0cmFj
dGluZyB0cmVlLi4uIiAgICAKLSAgICBvcy5tYWtlZGlycyhzcmNfcm9vdCkKLSAgICBvcy5jaGRp
cihzcmNfcm9vdCkKLSAgICBvcy5zeXN0ZW0oJ3RhciB4enZmIC4uL3dlYmtpdHd4XzAuMS5vcmln
LnRhci5neicpCi0KLSAgICBzaHV0aWwuY29weXRyZWUob3MucGF0aC5qb2luKHNjcmlwdF9kaXIs
ICdkZWJpYW4nKSwgb3MucGF0aC5qb2luKHNyY19yb290LCAnZGViaWFuJykpCi0KLSAgICBwcmlu
dCAiQnVpbGRpbmcgcGFja2FnZS4uLiIKLSAgICBvcy5zeXN0ZW0oJ2Zha2Vyb290IGRlYmlhbi9y
dWxlcyBjbGVhbicpCi0gICAgb3Muc3lzdGVtKCdmYWtlcm9vdCBkZWJpYW4vcnVsZXMgYnVpbGQn
KQotICAgIG9zLnN5c3RlbSgnZGVidWlsZCAtaSAtcmZha2Vyb290IC11cyAtdWMnKQotZmluYWxs
eToKLSAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihzcmNfcm9vdCwgJ2RlYmlhbicpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3gvcGFja2FnaW5nL2J1aWxkLW1hYy1pbnN0YWxsZXIucHkgYi9U
b29scy93eC9wYWNrYWdpbmcvYnVpbGQtbWFjLWluc3RhbGxlci5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTQ0MzI2YWUxMjFmODVkMmMzNDk4MDdhOTI0ZmVmNzBmZjY3ZTc3Yy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy93eC9w
YWNrYWdpbmcvYnVpbGQtbWFjLWluc3RhbGxlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4OCAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMDkgS2V2
aW4gT2xsaXZpZXIgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotIwotIyBTY3JpcHQgZm9yIGJ1aWxkaW5nIE1hYyAucGtnIGluc3RhbGxl
cgotCi1pbXBvcnQgY29tbWFuZHMKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGRpc3R1dGlscy5z
eXNjb25maWcKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0
IHNodXRpbAotaW1wb3J0IHN0cmluZwotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi0KLXNj
cmlwdF9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXN5
cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICIu
LiIsICIuLiIsICJ3YWYiLCAiYnVpbGQiKSkpCi0KLWZyb20gYnVpbGRfdXRpbHMgaW1wb3J0ICoK
LQotaW1wb3J0IHd4Ci0KLXd4d2tfcm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4o
c2NyaXB0X2RpciwgIi4uIiwgIi4uIiwgIi4uIikpCi13eHdlYmtpdF9kaXIgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKHd4d2tfcm9vdCwgIldlYktpdEJ1aWxkIiwgZ2V0X2NvbmZpZyh3
eHdrX3Jvb3QpKSkKLQotd3hfdmVyc2lvbiA9IHd4Ll9fdmVyc2lvbl9fWzo1XQotcHlfdmVyc2lv
biA9IHN5cy52ZXJzaW9uWzozXQotCi1kYXRlID0gc3RyKGRhdGV0aW1lLmRhdGUudG9kYXkoKSkK
LQotcGxhdGZvcm0gPSAib3N4IgotICAgIAotcGtnbmFtZSA9ICJ3eFdlYktpdC0lcy13eCVzLXB5
JXMtJXMiICUgKHBsYXRmb3JtLCB3eF92ZXJzaW9uWzozXSwgcHlfdmVyc2lvbiwgZGF0ZSkKLQot
dGVtcGRpciA9ICIvdG1wLyVzIiAlIChwa2duYW1lKQotCi1pZiBvcy5wYXRoLmV4aXN0cyh0ZW1w
ZGlyKToKLSAgICBzaHV0aWwucm10cmVlKHRlbXBkaXIpCi0gICAgb3MubWFrZWRpcnModGVtcGRp
cikKLQotaW5zdGFsbHJvb3QgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgImluc3RhbGwtcm9vdCIp
Ci1pbnN0YWxsYXBwcyA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAiaW5zdGFsbC1hcHBzIikKLQot
c3Bfcm9vdCA9IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoKQotd3hfcm9vdCA9
IHNwX3Jvb3QKLWlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJkYXJ3aW4iKToKLSAgICBidWls
ZF9zdHJpbmcgPSAiJXMiICUgd3guX192ZXJzaW9uX18KLSAgICBpZiB3eC5WRVJTSU9OWzFdIDw9
IDg6Ci0gICAgICAgIGJ1aWxkX3N0cmluZyA9ICJ1bmljb2RlLSVzIiAlIGJ1aWxkX3N0cmluZwot
ICAgIHd4X3Jvb3QgPSAiL3Vzci9sb2NhbC9saWIvd3hQeXRob24tJXMiICUgYnVpbGRfc3RyaW5n
Ci0gICAgc3Bfcm9vdCA9ICIlcy9saWIvcHl0aG9uJXMvc2l0ZS1wYWNrYWdlcyIgJSAod3hfcm9v
dCwgcHlfdmVyc2lvbikKLQotaWYgInd4T1NYLWNvY29hIiBpbiB3eC5QbGF0Zm9ybUluZm86Ci0g
ICAgc2l0ZXBhY2thZ2VzID0gIiVzL3d4LSVzLW9zeF9jb2NvYS93eCIgJSAoc3Bfcm9vdCwgd3hf
dmVyc2lvbls6NV0pCi1lbHNlOgotICAgIHNpdGVwYWNrYWdlcyA9ICIlcy93eC0lcy1tYWMtdW5p
Y29kZS93eCIgJSAoc3Bfcm9vdCwgd3hfdmVyc2lvbls6M10pCi1wcmVmaXggPSB3eF9yb290ICsg
Ii9saWIiCi0KLQotZGVmIG1hY191cGRhdGVfZGVwZW5kZW5jaWVzKGR5bGliLCBwcmVmaXgsIHNo
b3VsZF9jb3B5PVRydWUpOgotICAgICIiIgotICAgIENvcGllcyBhbnkgbm9uLXN5c3RlbSBkZXBl
bmRlbmNpZXMgaW50byB0aGUgYnVuZGxlLCBhbmQKLSAgICB1cGRhdGVzIHRoZSBpbnN0YWxsIG5h
bWUgcGF0aCB0byB0aGUgbmV3IHBhdGggaW4gdGhlIGJ1bmRsZS4KLSAgICAiIiIKLSAgICBnbG9i
YWwgd3hfcm9vdAotICAgIHN5c3RlbV9wcmVmaXhlcyA9IFsiL3Vzci9saWIiLCAiL1N5c3RlbS9M
aWJyYXJ5Iiwgd3hfcm9vdF0KLQotICAgIAotICAgIG91dHB1dCA9IGNvbW1hbmRzLmdldG91dHB1
dCgib3Rvb2wgLUwgJXMiICUgZHlsaWIpLnN0cmlwKCkKLSAgICBmb3IgbGluZSBpbiBvdXRwdXQu
c3BsaXQoIlxuIik6Ci0gICAgICAgIGNvcHkgPSBzaG91bGRfY29weQotICAgICAgICBjaGFuZ2Ug
PSBUcnVlCi0gICAgICAgIGZpbGVuYW1lID0gbGluZS5zcGxpdCgiKCIpWzBdLnN0cmlwKCkKLSAg
ICAgICAgZmlsZWRpciwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQotICAgICAg
ICBkZXN0X2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHByZWZpeCwgYmFzZW5hbWUpCi0gICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKLSAgICAgICAgICAgIGZvciBzeXNfcHJlZml4
IGluIHN5c3RlbV9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5zdGFydHN3
aXRoKHN5c19wcmVmaXgpOgotICAgICAgICAgICAgICAgICAgICBjb3B5ID0gRmFsc2UKLSAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlID0gRmFsc2UKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
aWYgY29weToKLSAgICAgICAgICAgICAgICBjb3B5ZGlyID0gb3MucGF0aC5kaXJuYW1lKGR5bGli
KQotICAgICAgICAgICAgICAgIGNvcHluYW1lID0gb3MucGF0aC5qb2luKGNvcHlkaXIsIGJhc2Vu
YW1lKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjb3B5bmFtZSk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KGZpbGVuYW1lLCBjb3B5ZGlyKQotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBvcy5zeXN0ZW0oImluc3RhbGxfbmFtZV90b29sIC1pZCAl
cyAlcyIgJSAoZGVzdF9maWxlbmFtZSwgY29weW5hbWUpKQotICAgICAgICAgICAgICAgICAgICBp
ZiByZXN1bHQgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJDaGFuZ2luZyBJ
RCBmYWlsZWQuIFN0b3BwaW5nIHJlbGVhc2UuIgotICAgICAgICAgICAgICAgICAgICAgICAgc3lz
LmV4aXQocmVzdWx0KQotICAgICAgICAgICAgaWYgY2hhbmdlOgotICAgICAgICAgICAgICAgIHBy
aW50ICJjaGFuZ2luZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIGRlc3RfZmlsZW5hbWUpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gb3Muc3lzdGVtKCJpbnN0YWxsX25hbWVfdG9vbCAtY2hhbmdl
ICVzICVzICVzIiAlIChmaWxlbmFtZSwgZGVzdF9maWxlbmFtZSwgZHlsaWIpKQotICAgICAgICAg
ICAgICAgIGlmIHJlc3VsdCAhPSAwOgotICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdChyZXN1
bHQpCi0KLWRlZiBleGl0SWZFcnJvcihjbWQpOgotICAgIHByaW50IGNtZAotICAgIHJldHZhbCA9
IG9zLnN5c3RlbShjbWQpCi0gICAgaWYgcmV0dmFsICE9IDA6Ci0gICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHRlbXBkaXIpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGlyKQotICAg
ICAgICBzeXMuZXhpdCgxKQotCi13eHJvb3QgPSBpbnN0YWxscm9vdCArIHByZWZpeAotd3hweXRo
b25yb290ID0gaW5zdGFsbHJvb3QgKyBzaXRlcGFja2FnZXMKLWRtZ19kaXIgPSAiZG1nX2ZpbGVz
IgotCi10cnk6Ci0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHd4cm9vdCk6Ci0gICAgICAgIG9z
Lm1ha2VkaXJzKHd4cm9vdCkKLSAgICAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMod3hweXRo
b25yb290KToKLSAgICAgICAgb3MubWFrZWRpcnMod3hweXRob25yb290KQotICAgIAotICAgIGZv
ciB3aWxkY2FyZCBpbiBbIioucHkiLCAiKi5zbyJdOgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xv
Yihvcy5wYXRoLmpvaW4od3h3ZWJraXRfZGlyLCB3aWxkY2FyZCkpCi0gICAgICAgIGZvciBhZmls
ZSBpbiBmaWxlczoKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KGFmaWxlLCB3eHB5dGhvbnJvb3Qp
Ci0gICAgCi0gICAgZm9yIHdpbGRjYXJkIGluIFsiKi5keWxpYiJdOgotICAgICAgICBmaWxlcyA9
IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4od3h3ZWJraXRfZGlyLCB3aWxkY2FyZCkpCi0gICAgICAg
IGZvciBhZmlsZSBpbiBmaWxlczoKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KGFmaWxlLCB3eHJv
b3QpCi0gICAgCi0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImRhcndpbiIpOgotICAg
ICAgICBkeWxpYl9wYXRoID0gb3MucGF0aC5qb2luKHd4cm9vdCwgImxpYnd4d2Via2l0LmR5bGli
IikKLSAgICAgICAgb3Muc3lzdGVtKCJpbnN0YWxsX25hbWVfdG9vbCAtaWQgJXMgJXMiICUgKG9z
LnBhdGguam9pbihwcmVmaXgsICJsaWJ3eHdlYmtpdC5keWxpYiIpLCBkeWxpYl9wYXRoKSkKLSAg
ICAgICAgbWFjX3VwZGF0ZV9kZXBlbmRlbmNpZXMoZHlsaWJfcGF0aCwgcHJlZml4KQotICAgICAg
ICBvcy5zeXN0ZW0oImluc3RhbGxfbmFtZV90b29sIC1pZCAlcyAlcyIgJSAob3MucGF0aC5qb2lu
KHd4cHl0aG9ucm9vdCwgIl93ZWJ2aWV3LnNvIiksIHByZWZpeCkpCi0gICAgICAgIG1hY191cGRh
dGVfZGVwZW5kZW5jaWVzKG9zLnBhdGguam9pbih3eHB5dGhvbnJvb3QsICJfd2Vidmlldy5zbyIp
LCBwcmVmaXgsIHNob3VsZF9jb3B5PUZhbHNlKQotCi0gICAgICAgIGRlbW9kaXIgPSBpbnN0YWxs
cm9vdCArICIvQXBwbGljYXRpb25zL3d4V2ViS2l0L0RlbW9zIgotICAgICAgICBpZiBub3Qgb3Mu
cGF0aC5leGlzdHMoZGVtb2Rpcik6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhkZW1vZGlyKQot
Ci0gICAgICAgIHNodXRpbC5jb3B5KG9zLnBhdGguam9pbih3eHdrX3Jvb3QsICJTb3VyY2UiLCAi
V2ViS2l0IiwgInd4IiwgImJpbmRpbmdzIiwgInB5dGhvbiIsICJzYW1wbGVzIiwgInNpbXBsZS5w
eSIpLCBkZW1vZGlyKQotCi0gICAgICAgIG91dHB1dF9uYW1lID0gb3MucGF0aC5qb2luKGRtZ19k
aXIsIHBrZ25hbWUgKyAiLnBrZyIpCi0KLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZG1nX2Rp
cik6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGRtZ19kaXIpCi0KLSAgICAgICAgb3MubWFr
ZWRpcnMoZG1nX2RpcikKLQotICAgICAgICBwa2dfYXJncyA9IFsnLS10aXRsZSAnICsgcGtnbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgJy0tb3V0ICVzJyAlIG91dHB1dF9uYW1lLAotICAgICAg
ICAgICAgICAgICAgICAnLS12ZXJzaW9uICcgKyBkYXRlLnN0cmlwKCksCi0gICAgICAgICAgICAg
ICAgICAgICctLWlkIG9yZy53eHdlYmtpdC53eHdlYmtpdCcsCi0gICAgICAgICAgICAgICAgICAg
ICctLWRvbWFpbiBzeXN0ZW0nLAotICAgICAgICAgICAgICAgICAgICAnLS1yb290LXZvbHVtZS1v
bmx5JywKLSAgICAgICAgICAgICAgICAgICAgJy0tcm9vdCAnICsgaW5zdGFsbHJvb3QsCi0gICAg
ICAgICAgICAgICAgICAgICctLXZlcmJvc2UnCi0gICAgICAgICAgICAgICAgICAgIF0KLQotICAg
ICAgICBwYWNrYWdlbWFrZXIgPSAiL0RldmVsb3Blci9BcHBsaWNhdGlvbnMvVXRpbGl0aWVzL1Bh
Y2thZ2VNYWtlci5hcHAvQ29udGVudHMvTWFjT1MvUGFja2FnZU1ha2VyIgotICAgICAgICBleGl0
SWZFcnJvcihwYWNrYWdlbWFrZXIgKyAiICVzIiAlIChzdHJpbmcuam9pbihwa2dfYXJncywgIiAi
KSkpCi0KLSAgICAgICAgb3Muc3lzdGVtKCdoZGl1dGlsIGNyZWF0ZSAtc3JjZm9sZGVyICVzIC12
b2xuYW1lICIlcyIgLWltYWdla2V5IHpsaWItbGV2ZWw9OSAlcy5kbWcnICUgKGRtZ19kaXIsIHBr
Z25hbWUsIHBrZ25hbWUpKQotZmluYWxseToKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyh0ZW1wZGly
KToKLSAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGlyKQotCi0gICAgaWYgb3MucGF0aC5leGlz
dHMoZG1nX2Rpcik6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZG1nX2RpcikKZGlmZiAtLWdpdCBh
L1Rvb2xzL3d4L3BhY2thZ2luZy9idWlsZC13aW4taW5zdGFsbGVyLnB5IGIvVG9vbHMvd3gvcGFj
a2FnaW5nL2J1aWxkLXdpbi1pbnN0YWxsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ3OWU0ODlmZjg5MjIyNDUzMjNjYzEwODM3YzE5Zjc3ZDE0YjRkZDAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvd3gvcGFja2FnaW5nL2J1
aWxkLXdpbi1pbnN0YWxsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCi0KLSMgQ29weXJpZ2h0IChDKSAyMDA4IEtldmluIE9sbGl2aWVy
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotIwotIyBDcmVhdGUgYSBXaW5kb3dzIGluc3RhbGxlciBwYWNrYWdlIGZvciB3eFB5dGhvbiB3
eFdlYktpdCBiaW5hcmllcwotCi1pbXBvcnQgc3lzLCBvcywgc3RyaW5nCi1pbXBvcnQgY29tbWFu
ZHMKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGdsb2IKLWZyb20gc3VicHJvY2VzcyBpbXBvcnQg
KgotCi1pbXBvcnQgd3gKLQotc2NyaXB0X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pKQotc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRo
LmpvaW4oc2NyaXB0X2RpciwgIi4uIiwgIi4uIiwgIndhZiIsICJidWlsZCIpKSkKLQotZnJvbSBi
dWlsZF91dGlscyBpbXBvcnQgKgotCi13eHdrX3Jvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5qb2luKHNjcmlwdF9kaXIsICIuLiIsICIuLiIsICIuLiIpKQotd3h3ZWJraXRfZGlyID0gb3Mu
cGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbih3eHdrX3Jvb3QsICJXZWJLaXRCdWlsZCIsIGdldF9j
b25maWcod3h3a19yb290KSArIGdpdF9icmFuY2hfbmFtZSgpKSkKLQotIyBGaW5kIElubm9TZXR1
cCBleGVjdXRhYmxlCi1kZWYgZ2V0SW5ub1NldHVwUGF0aCgpOgotICAgIG5hbWUgPSAiSVNDQy5l
eGUiCi0gICAgcmV0dmFsID0gIiIKLSAgICBkaXJzID0gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0
KCI6IikKLSAgICAjIEFkZCB0aGUgZGVmYXVsdCBmaWxlIHBhdGgKLSAgICBkaXJzLmFwcGVuZCgi
QzpcXFByb2dyYW0gRmlsZXNcXElubm8gU2V0dXAgNSIpCi0gICAgZGlycy5hcHBlbmQoIkM6XFxQ
cm9ncmFtIEZpbGVzICh4ODYpXFxJbm5vIFNldHVwIDUiKQotICAgICAgICAgICAgICAgICAgICAK
LSAgICBpZiBvcy5lbnZpcm9uLmhhc19rZXkoIklOTk81Iik6Ci0gICAgICAgIHJldHZhbCA9IG9z
LmVudmlyb25bIklOTk81Il0KLSAgICAKLSAgICBpZiByZXR2YWwgPT0gIiI6Ci0gICAgICAgIGZv
ciBkaXIgaW4gZGlyczoKLSAgICAgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKGRpciwg
bmFtZSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVwYXRoKToKLSAgICAgICAg
ICAgICAgICByZXR2YWwgPSBmaWxlcGF0aAotICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJldHZh
bAotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGlubm9TZXR1cCA9IGdldElubm9T
ZXR1cFBhdGgoKQotICAgIG9zLmNoZGlyKHN5cy5wYXRoWzBdKQotCi0gICAgZGF0ZSA9IHN0cihk
YXRldGltZS5kYXRlLnRvZGF5KCkpCi0KLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaW5ub1Nl
dHVwKToKLSAgICAgICAgcHJpbnQgIkVSUk9SOiBDYW5ub3QgZmluZCBJbm5vU2V0dXAuIgotICAg
ICAgICAjc3lzLmV4aXQoMSkKLSAgICAgICAgCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHd4
d2Via2l0X2Rpcik6Ci0gICAgICAgIHByaW50ICJFUlJPUjogQnVpbGQgZGlyICVzIGRvZXNuJ3Qg
ZXhpc3QuIiAlIHd4d2Via2l0X2RpcgotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmlsZUxp
c3QgPSAiIiIKLUNvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IFNvdXJjZTogKi5weWQ7ICAgICAg
ICBEZXN0RGlyOiAie2FwcH0iCi1Db3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBTb3VyY2U6ICou
cHk7ICAgICAgICBEZXN0RGlyOiAie2FwcH0iCi0iIiIKLSAgICAKLSAgICBkbGxzID0gZ2xvYi5n
bG9iKG9zLnBhdGguam9pbih3eHdlYmtpdF9kaXIsICIqLmRsbCIpKQotICAgIGZvciBkbGwgaW4g
ZGxsczoKLSAgICAgICAgaWYgZGxsLmZpbmQoInd4YmFzZSIpID09IC0xIGFuZCBkbGwuZmluZCgi
d3htc3ciKSA9PSAtMToKLSAgICAgICAgICAgIGZpbGVMaXN0ICs9ICIiIkNvcHlNb2RlOiBhbHdh
eXNvdmVyd3JpdGU7IFNvdXJjZTogJXM7ICAgICAgICBEZXN0RGlyOiAie2FwcH0iIFxuIiIiICUg
ZGxsCi0KLSAgICBpbnN0YWxsZXJUZW1wbGF0ZSA9IG9wZW4oInd4V2ViS2l0SW5zdGFsbGVyLmlz
cy5pbiIsICJyIikucmVhZCgpCi0KLSAgICB3eF92ZXJzaW9uID0gJyVkLiVkJyAlICh3eC5NQUpP
Ul9WRVJTSU9OLCB3eC5NSU5PUl9WRVJTSU9OKQotICAgIGlmIHd4Lk1JTk9SX1ZFUlNJT04gJSAy
ID09IDE6Ci0gICAgICAgIHd4X3ZlcnNpb24gKz0gIi4lZCIgJSB3eC5SRUxFQVNFX1ZFUlNJT04K
LSAgICAgICAgCi0gICAgIyBpbiAyLjkvMy4wLCB0aGVyZSBhcmUgb25seSB1bmljb2RlIGJ1aWxk
cywgc28gdW5pY29kZSBoYXMgYmVlbiByZW1vdmVkCi0gICAgIyBmcm9tIGJ1aWxkIG5hbWVzLgot
ICAgIGlmIHd4Lk1BSk9SX1ZFUlNJT04gPiAyIG9yIHd4Lk1JTk9SX1ZFUlNJT04gPiA4OgotICAg
ICAgICBpbnN0YWxsZXJUZW1wbGF0ZSA9IGluc3RhbGxlclRlbXBsYXRlLnJlcGxhY2UoIm1zdy11
bmljb2RlIiwgIm1zdyIpCi0KLSAgICBpbnN0YWxsZXJUZW1wbGF0ZSA9IGluc3RhbGxlclRlbXBs
YXRlLnJlcGxhY2UoIjw8VkVSU0lPTj4+IiwgZGF0ZSkKLSAgICBpbnN0YWxsZXJUZW1wbGF0ZSA9
IGluc3RhbGxlclRlbXBsYXRlLnJlcGxhY2UoIjw8V1hWRVJTSU9OPj4iLCB3eF92ZXJzaW9uKQot
ICAgIGluc3RhbGxlclRlbXBsYXRlID0gaW5zdGFsbGVyVGVtcGxhdGUucmVwbGFjZSgiPDxST09U
RElSPj4iLCB3eHdlYmtpdF9kaXIgKQotICAgIGluc3RhbGxlclRlbXBsYXRlID0gaW5zdGFsbGVy
VGVtcGxhdGUucmVwbGFjZSgiPDxQWVRIT05WRVI+PiIsIHN5cy52ZXJzaW9uWzA6M10gKQotICAg
IGluc3RhbGxlclRlbXBsYXRlID0gaW5zdGFsbGVyVGVtcGxhdGUucmVwbGFjZSgiPDxGSUxFUz4+
IiwgZmlsZUxpc3QgKQotCi0gICAgb3V0cHV0RmlsZSA9IG9wZW4oInd4V2ViS2l0SW5zdGFsbGVy
LmlzcyIsICJ3IikKLSAgICBvdXRwdXRGaWxlLndyaXRlKGluc3RhbGxlclRlbXBsYXRlKQotICAg
IG91dHB1dEZpbGUuY2xvc2UoKQotCi0gICAgc3VjY2VzcyA9IG9zLnN5c3RlbSgnIiVzIiB3eFdl
YktpdEluc3RhbGxlci5pc3MnICUgaW5ub1NldHVwKQotICAgIHN5cy5leGl0KHN1Y2Nlc3MpCmRp
ZmYgLS1naXQgYS9Ub29scy93eC9wYWNrYWdpbmcvZGViaWFuL2NoYW5nZWxvZyBiL1Rvb2xzL3d4
L3BhY2thZ2luZy9kZWJpYW4vY2hhbmdlbG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJp
YW4vY2hhbmdlbG9nCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotCmRpZmYgLS1naXQgYS9U
b29scy93eC9wYWNrYWdpbmcvZGViaWFuL2NvbXBhdCBiL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJp
YW4vY29tcGF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQ2ZmY4MmRlNmJjYzJh
NzgyNDNmYzljNTRkM2VmNWFjMTRkYTY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJpYW4vY29tcGF0CisrKyAvZGV2
L251bGwKQEAgLTEgKzAsMCBAQAotNQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3gvcGFja2FnaW5nL2Rl
Ymlhbi9jb250cm9sIGIvVG9vbHMvd3gvcGFja2FnaW5nL2RlYmlhbi9jb250cm9sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Q4NDA3ZGQxM2JhNjY3YmEwY2FmNGZlODE3M2NiZmE0
N2NmZTdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL3d4L3BhY2thZ2luZy9kZWJpYW4vY29udHJvbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICsw
LDAgQEAKLVNvdXJjZTogd2Via2l0d3gKLVNlY3Rpb246IFB5dGhvbgotUHJpb3JpdHk6IGV4dHJh
Ci1NYWludGFpbmVyOiBLZXZpbiBPbGxpdmllciA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+Ci1C
dWlsZC1EZXBlbmRzOiBkZWJoZWxwZXIgKD49IDUuMC4zOCksIHB5dGhvbi1jZW50cmFsICg+PSAw
LjYpLCBweXRob24tYWxsLWRldiwKLSBsaWJ3eGd0azIuOC1kZXYgKD49IDIuOC45LjItMSksIHB5
dGhvbi13eGd0azIuOCwgcHl0aG9uLXd4dG9vbHMgKD49IDIuOC45LjItMSksCi0gd3gyLjgtaGVh
ZGVycyAoPj0gMi44LjkuMi0xKSwgd3gyLjgtaTE4biAoPj0gMi44LjkuMi0xKSwKLSBmbGV4LCBi
aXNvbiwgZ3BlcmYsIGF1dG9tYWtlLCBhdXRvY29uZiwgbGlidG9vbCwgZHBhdGNoLAotIGxpYnhz
bHQxLWRldiwgbGliY3VybDQtb3BlbnNzbC1kZXYsCi0gbGliaWN1LWRldiwgbGlianBlZzYyLWRl
diwgbGlicG5nMTItZGV2LCBsaWJzcWxpdGUzLWRldiwgbGliZ3RrMi4wLWRldgotQnVpbGQtQ29u
ZmxpY3RzOiBweXRob24tc2V0dXB0b29scwotWFMtUHl0aG9uLVZlcnNpb246IGFsbAotU3RhbmRh
cmRzLVZlcnNpb246IDMuNy4zCi0KLVBhY2thZ2U6IHB5dGhvbi13ZWJraXR3eAotU2VjdGlvbjog
cHl0aG9uCi1BcmNoaXRlY3R1cmU6IGFueQotRGVwZW5kczogJHtweXRob246RGVwZW5kc30sICR7
c2hsaWJzOkRlcGVuZHN9Ci1Qcm92aWRlczogJHtweXRob246UHJvdmlkZXN9LCB3ZWJraXR3eAot
WEItUHl0aG9uLVZlcnNpb246ICR7cHl0aG9uOlZlcnNpb25zfQotRGVzY3JpcHRpb246IFB5dGhv
biBiaW5kaW5nIG9mIHd4d2Via2l0Ci0gVGhpcyBpcyBhbiBleHBlcmltZW50YWwgcGFja2FnZWQg
cmVsZWFzZSBvZiB3ZWJraXQgZm9yIHd4cHl0aG9uCi0KLVBhY2thZ2U6IHdlYmtpdHd4LWhlYWRl
cnMKLUFyY2hpdGVjdHVyZTogYWxsCi1EZXNjcmlwdGlvbjogUHl0aG9uIGJpbmRpbmcgb2Ygd3h3
ZWJraXQKLSBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBwYWNrYWdlZCByZWxlYXNlIG9mIHdlYmtp
dCBmb3Igd3hweXRob24KLSBUaGVzZSBhcmUgdGhlIGhlYWRlciBmaWxlcwotCmRpZmYgLS1naXQg
YS9Ub29scy93eC9wYWNrYWdpbmcvZGViaWFuL2NvcHlyaWdodCBiL1Rvb2xzL3d4L3BhY2thZ2lu
Zy9kZWJpYW4vY29weXJpZ2h0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjI0NGVj
MDFlYjM0ZmE5NzM1MTgwZmQyNzZmMThmYzdjYTgyMjI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJpYW4vY29weXJp
Z2h0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhpcyBwYWNrYWdlIHdhcyBkZWJp
YW5pemVkIGJ5IENocmlzIFdpbGxpbmcgYy53aWxsaW5nQHVxLmVkdS5hdSBvbgotVGh1LCBTYXQs
IDExIEFwciAyMDA5IDEyOjU0OjUyICsxMDAwCi0KLVVwc3RyZWFtIEF1dGhvcjogS2V2aW4gT2xs
aXZpZXIga2V2aW5vQHRoZW9sbGl2aWVycy5jb20gYW5kIG90aGVycwotCi1Db3B5cmlnaHQ6IDIw
MDkgS2V2aW4gT2xsaXZpZXIsIEFwcGxlIEluYy4sIGFuZCBvdGhlcnMKLQotTGljZW5zZToKLQlM
R1BMCi0KLQotVGhlIERlYmlhbiBwYWNrYWdpbmcgaXMgKEMpIDIwMDksIENocmlzIFdpbGxpbmcg
PGMud2lsbGluZ0B1cS5lZHUuYXU+IGFuZAotaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTCwgc2Vl
IGAvdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNlcy9HUEwnLgotCi0KLSMgUGxlYXNlIGFsc28gbG9v
ayBpZiB0aGVyZSBhcmUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2hpY2ggaGF2ZSBhCi0jIGRpZmZl
cmVudCBjb3B5cmlnaHQvbGljZW5zZSBhdHRhY2hlZCBhbmQgbGlzdCB0aGVtIGhlcmUuCi0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJpYW4vcHl0aG9uLXdlYmtpdHd4Lmluc3Rh
bGwgYi9Ub29scy93eC9wYWNrYWdpbmcvZGViaWFuL3B5dGhvbi13ZWJraXR3eC5pbnN0YWxsCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmY1MWNlNTEzZjVhNTk0MzYzZWZjYjNjZTU0
MmRlNmM3YTJlYjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJpYW4vcHl0aG9uLXdlYmtpdHd4Lmluc3RhbGwKKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1XZWJLaXRCdWlsZC9EZWJ1Zy5tYXN0ZXIvbGlid3h3
ZWJraXQuc28gdXNyL2xpYi8KZGlmZiAtLWdpdCBhL1Rvb2xzL3d4L3BhY2thZ2luZy9kZWJpYW4v
cnVsZXMgYi9Ub29scy93eC9wYWNrYWdpbmcvZGViaWFuL3J1bGVzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhZWE2ZGVmM2QxMTY3NTAzODI2MjgyNWY4YWQyOTJlOTgyNjkwNDk3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3d4L3Bh
Y2thZ2luZy9kZWJpYW4vcnVsZXMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0jISAv
dXNyL2Jpbi9tYWtlIC1mCi0KLVNIRUxMID0gL2Jpbi9iYXNoCi0KLVBZVkVSUyAgICAgOj0gJChz
aGVsbCAvdXNyL2Jpbi9weXRob24gLWMgJ2ltcG9ydCBzeXM7IHByaW50IHN5cy52ZXJzaW9uWzoz
XScpCi1WRVIgICAgIDo9ICQoc2hlbGwgL3Vzci9iaW4vcHl0aG9uIC1jICdpbXBvcnQgc3lzOyBw
cmludCBzeXMudmVyc2lvbls6M10nKQotQklVTERfRElSIDo9IFdlYktpdEJ1aWxkL0RlYnVnLm1h
c3RlcgotYnVpbGQ6IGJ1aWxkLXN0YW1wCi1idWlsZC1zdGFtcDogJChQWVZFUlM6JT1idWlsZC1w
eXRob24lKQotCXRvdWNoICRACi1idWlsZC1weXRob24lOgotCXRvdWNoICRACi0KLWNsZWFuOgot
CXJtIC1yZiAqLXN0YW1wIGJ1aWxkLXB5dGhvbiogYnVpbGQKLQlybSAtcmYgJChhZGRwcmVmaXgg
ZGViaWFuLywkKHBhY2thZ2VzKSkgZGViaWFuL2ZpbGVzIGRlYmlhbi9zdWJzdHZhcnMKLQlybSAt
cmYgX3RyaWFsX3RlbXAgdGVzdC5sb2cKLQlmaW5kIC4gLW5hbWUgIioucHljIiB8eGFyZ3MgLXIg
cm0KLQlkaF9jbGVhbgotCi1pbnN0YWxsOiBidWlsZC1zdGFtcCBpbnN0YWxsLXByZXJlcSAkKFBZ
VkVSUzolPWluc3RhbGwtcHl0aG9uJSkgaW5zdGFsbC1saWJzIGluc3RhbGwtbm92ZXIKLQotaW5z
dGFsbC1wcmVyZXE6IGJ1aWxkLXN0YW1wCi0JZGhfdGVzdGRpcgotCWRoX3Rlc3Ryb290Ci0JZGhf
Y2xlYW4gLWsKLQotaW5zdGFsbC1weXRob24lOiBpbnN0YWxsLXByZXJlcQotCWRoX2luc3RhbGwg
LXBweXRob24td2Via2l0d3ggXAotCQkkKEJVSUxEX0RJUikvd2Vidmlldy5weSBcCi0JCSQoQlVJ
TERfRElSKS9EZWJ1Zy5tYXN0ZXIvX3dlYnZpZXcuc28gXAotCQkJdXNyL2xpYi9weXRob24kKi9z
aXRlLXBhY2thZ2VzL3d4LTIuOC1ndGsyLXVuaWNvZGUvd3gvCi0KLWluc3RhbGwtbm92ZXI6CWlu
c3RhbGwtcHJlcmVxCi0JZGhfaW5zdGFsbCAtcHdlYmtpdHd4LWhlYWRlcnMgXAotCQkkKEJVSUxE
X0RJUikvSmF2YVNjcmlwdENvcmUgXAotCQkJdXNyL2luY2x1ZGUvd3h3ZWJraXQtMS4wLwotCi1p
bnN0YWxsLWxpYnM6CWluc3RhbGwtcHJlcmVxCi0JZGhfaW5zdGFsbAotCQotCi1iaW5hcnktaW5k
ZXA6Ci0JKGNkIFRvb2xzL1NjcmlwdHMgJiYgLi9idWlsZC13ZWJraXQgLS13eCAtLW1ha2Vhcmdz
PSItLXd4cHl0aG9uIikKLQlkaF90ZXN0ZGlyCi0JZGhfdGVzdHJvb3QKLQlkaF9pbnN0YWxsY2hh
bmdlbG9ncyAtaQotCWRoX2luc3RhbGxkb2NzIC1pCi0JZGhfc3RyaXAgLWkKLQlkaF9jb21wcmVz
cyAtaQotCWRoX2ZpeHBlcm1zIC1pCi0JZGhfaW5zdGFsbGRlYiAtaQotCWRoX2dlbmNvbnRyb2wg
LWkKLQlkaF9tZDVzdW1zIC1pCi0JZGhfYnVpbGRkZWIgLWkKLQotYmluYXJ5LWFyY2g6Ci0JZGhf
dGVzdGRpcgotCWRoX3Rlc3Ryb290Ci0JZWNobyAkKHNoZWxsIHB3ZCkKLQllY2hvICQoc2hlbGwg
bHMgLWwpCi0JZGhfaW5zdGFsbGNoYW5nZWxvZ3MgLWEKLQlkaF9pbnN0YWxsZG9jcyAtYSBXZWJL
aXQvd3gvYmluZGluZ3MvcHl0aG9uL3NhbXBsZXMvc2ltcGxlLnB5Ci0JZGhfc3RyaXAgLWEKLQlk
aF9jb21wcmVzcyAtYSAtWHNpbXBsZS5weQotCWRoX2ZpeHBlcm1zIC1hCi0JZGhfcHljZW50cmFs
IC1hCi0JZGhfaW5zdGFsbGRlYiAtYQotCWRoX3NobGliZGVwcyAtYQotCWRoX2dlbmNvbnRyb2wg
LWEKLQlkaF9tZDVzdW1zIC1hCi0JZGhfYnVpbGRkZWIgLWEKLQotYmluYXJ5OiBiaW5hcnktaW5k
ZXAgYmluYXJ5LWFyY2gKLS5QSE9OWTogYnVpbGQgY2xlYW4gYmluYXJ5LWluZGVwIGJpbmFyeS1h
cmNoIGJpbmFyeSBpbnN0YWxsIGluc3RhbGwtbm92ZXIgaW5zdGFsbC1wcmVyZXEgaW5zdGFsbC1s
aWJzCmRpZmYgLS1naXQgYS9Ub29scy93eC9wYWNrYWdpbmcvd3hXZWJLaXRJbnN0YWxsZXIuaXNz
LmluIGIvVG9vbHMvd3gvcGFja2FnaW5nL3d4V2ViS2l0SW5zdGFsbGVyLmlzcy5pbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMxMjQ3NGIwYjQzMDIzYjlmOWI2ZjU4NWU5YmM2ZTU0
NmQ1OGU5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy93eC9wYWNrYWdpbmcvd3hXZWJLaXRJbnN0YWxsZXIuaXNzLmluCisrKyAvZGV2L251bGwK
QEAgLTEsNzkgKzAsMCBAQAotOyBJbnN0YWxsZXIgc2NyaXB0IGZvciB3eFdlYktpdCBmb3Igd3hQ
eXRob24KLQotW1NldHVwXQotQXBwTmFtZT13eFdlYktpdAotQXBwSWQ9d3hXZWJLaXQKLUFwcFZl
cnNpb249PDxWRVJTSU9OPj4KLUFwcFZlck5hbWU9d3hXZWJLaXQgPDxWRVJTSU9OPj4KLUFwcENv
cHlyaWdodD1MR1BMCi1EZWZhdWx0RGlyTmFtZT17Y29kZTpHZXRJbnN0YWxsRGlyfGM6XERvTm90
SW5zdGFsbEhlcmV9Ci1BcHBQdWJsaXNoZXI9d3hXZWJLaXQgUHJvamVjdAotQXBwUHVibGlzaGVy
VVJMPWh0dHA6Ly93eHdlYmtpdC53eGNvbW11bml0eS5jb20vcG13aWtpLwotQXBwU3VwcG9ydFVS
TD1odHRwOi8vd3h3ZWJraXQud3hjb21tdW5pdHkuY29tL3Btd2lraS8KLUFwcFVwZGF0ZXNVUkw9
aHR0cDovL3d4d2Via2l0Lnd4Y29tbXVuaXR5LmNvbS9wbXdpa2kvCi1Vbmluc3RhbGxEaXNwbGF5
TmFtZT13eFdlYktpdCA8PFZFUlNJT04+PgotVW5pbnN0YWxsRmlsZXNEaXI9e2FwcH1cVW5pbnN0
YWxsCi0KLUNvbXByZXNzaW9uPWJ6aXAvOQotU291cmNlRGlyPTw8Uk9PVERJUj4+Ci1PdXRwdXRE
aXI9d2luLWluc3RhbGxlcgotT3V0cHV0QmFzZUZpbGVuYW1lPXd4V2ViS2l0LXd4PDxXWFZFUlNJ
T04+Pi1QeTw8UFlUSE9OVkVSPj4tPDxWRVJTSU9OPj4KLURpc2FibGVTdGFydHVwUHJvbXB0PXll
cwotQWxsb3dOb0ljb25zPXllcwotRGlzYWJsZVByb2dyYW1Hcm91cFBhZ2U9eWVzCi1EaXNhYmxl
UmVhZHlQYWdlPXllcwotCi1bRmlsZXNdCi08PEZJTEVTPj4KLQotW01lc3NhZ2VzXQotV2VsY29t
ZUxhYmVsMT1XZWxjb21lIHRvIHRoZSB3eFdlYktpdCBmb3Igd3hQeXRob24gU2V0dXAgV2l6YXJk
Ci0KLVtDb2RlXQotCi1wcm9ncmFtIFNldHVwOwotdmFyCi0gICAgUHl0aG9uRGlyICA6IFN0cmlu
ZzsKLSAgICBJbnN0YWxsRGlyIDogU3RyaW5nOwotCi0KLWZ1bmN0aW9uIEluaXRpYWxpemVTZXR1
cCgpOiBCb29sZWFuOwotYmVnaW4KLQotICAgICgqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopCi0gICAgKCogRmlndXJlIG91
dCB3aGF0IHRvIHVzZSBhcyBhIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpciAgICAgICAgICAgKikK
LQotICAgIGlmIG5vdCBSZWdRdWVyeVN0cmluZ1ZhbHVlKEhLRVlfTE9DQUxfTUFDSElORSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVc
PDxQWVRIT05WRVI+PlxJbnN0YWxsUGF0aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJycsIFB5dGhvbkRpcikgdGhlbiBiZWdpbgotCi0gICAgICAgIGlmIG5vdCBSZWdRdWVyeVN0
cmluZ1ZhbHVlKEhLRVlfQ1VSUkVOVF9VU0VSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcPDxQWVRIT05WRVI+PlxJbnN0YWxs
UGF0aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBQeXRob25EaXIp
IHRoZW4gYmVnaW4KLQotICAgICAgICAgICAgTXNnQm94KCdObyBpbnN0YWxsYXRpb24gb2YgUHl0
aG9uIDw8UFlUSE9OVkVSPj4gZm91bmQgaW4gcmVnaXN0cnkuJyArICMxMyArCi0gICAgICAgICAg
ICAgICAgICAgJ0JlIHN1cmUgdG8gZW50ZXIgYSBwYXRobmFtZSB0aGF0IHBsYWNlcyB3eFB5dGhv
biBvbiB0aGUgUFlUSE9OUEFUSCcsCi0gICAgICAgICAgICAgICAgICAgbWJDb25maXJtYXRpb24s
IE1CX09LKTsKLSAgICAgICAgICAgIFB5dGhvbkRpciA6PSAnQzpcUHV0IGEgZGlyZWN0b3J5IG9u
IFBZVEhPTlBBVEggaGVyZVwnOwotICAgICAgICBlbmQ7Ci0gICAgZW5kOwotICAgIEluc3RhbGxE
aXIgOj0gUHl0aG9uRGlyICsgJ1xMaWJcc2l0ZS1wYWNrYWdlc1x3eC08PFdYVkVSU0lPTj4+LW1z
dy11bmljb2RlXHd4XCc7Ci0gICAgUmVzdWx0IDo9IFRydWU7Ci1lbmQ7Ci0KLQotCi1mdW5jdGlv
biBHZXRQeXRob25EaXIoRGVmYXVsdDogU3RyaW5nKTogU3RyaW5nOwotYmVnaW4KLSAgICBSZXN1
bHQgOj0gUHl0aG9uRGlyOwotZW5kOwotCi0KLQotZnVuY3Rpb24gR2V0SW5zdGFsbERpcihEZWZh
dWx0OiBTdHJpbmcpOiBTdHJpbmc7Ci1iZWdpbgotICAgIFJlc3VsdCA6PSBJbnN0YWxsRGlyOwot
ZW5kOwotCi1iZWdpbgotZW5kLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>