<?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>213680</bug_id>
          
          <creation_ts>2020-06-27 09:09:05 -0700</creation_ts>
          <short_desc>Convert AppCache manifest parser over to using StringParsingBuffer</short_desc>
          <delta_ts>2020-06-29 20:53:11 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1666772</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-27 09:09:05 -0700</bug_when>
    <thetext>Convert AppCache manifest parser over to using StringParsingBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666803</commentid>
    <comment_count>1</comment_count>
      <attachid>402968</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-27 12:42:22 -0700</bug_when>
    <thetext>Created attachment 402968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666808</commentid>
    <comment_count>2</comment_count>
      <attachid>402972</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-27 13:50:54 -0700</bug_when>
    <thetext>Created attachment 402972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666891</commentid>
    <comment_count>3</comment_count>
      <attachid>403005</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-28 12:15:14 -0700</bug_when>
    <thetext>Created attachment 403005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666957</commentid>
    <comment_count>4</comment_count>
      <attachid>403019</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-28 18:02:58 -0700</bug_when>
    <thetext>Created attachment 403019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666965</commentid>
    <comment_count>5</comment_count>
      <attachid>403023</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-28 18:30:19 -0700</bug_when>
    <thetext>Created attachment 403023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666976</commentid>
    <comment_count>6</comment_count>
      <attachid>403025</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-28 20:21:18 -0700</bug_when>
    <thetext>Created attachment 403025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667370</commentid>
    <comment_count>7</comment_count>
      <attachid>403143</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-29 17:33:14 -0700</bug_when>
    <thetext>Created attachment 403143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667444</commentid>
    <comment_count>8</comment_count>
      <attachid>403143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-29 20:27:34 -0700</bug_when>
    <thetext>Comment on attachment 403143
Patch

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

&gt; Source/WebCore/loader/appcache/ManifestParser.cpp:77
&gt; +    static constexpr const char cacheManifestMIMEType[] = &quot;text/cache-manifest&quot;;

Do we need &quot;const&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667452</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-29 20:52:21 -0700</bug_when>
    <thetext>Committed r263722: &lt;https://trac.webkit.org/changeset/263722&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403143.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667454</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-29 20:53:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/64921638&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402968</attachid>
            <date>2020-06-27 12:42:22 -0700</date>
            <delta_ts>2020-06-27 13:50:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200627124221.patch</filename>
            <type>text/plain</type>
            <size>14766</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA2LTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNN
YW5pZmVzdFdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVzdE5ld2xpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNYW5pZmVz
dCk6CisKIDIwMjAtMDYtMjcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvbnZlcnQgU1ZHIHJlbGF0ZWQgcGFyc2VycyBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNp
bmdCdWZmZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01h
bmlmZXN0UGFyc2VyLmNwcAkocmV2aXNpb24gMjYzNjE5KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5o
IgogCisjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJj
ZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nUGFyc2luZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCkBAIC00NCw2ICs0NiwzMyBA
QCBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMCiAgICAgcmV0dXJuIG1h
bmlmZXN0UGF0aDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzTWFuaWZlc3RXaGl0ZXNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFj
dGVyKQoreworICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJyAnIHx8IGNoYXJhY3RlciA9PSAnXHQn
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNNYW5pZmVzdE5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAg
cmV0dXJuIGNoYXJhY3RlciA9PSAnXG4nIHx8IGNoYXJhY3RlciA9PSAnXHInOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNNYW5p
ZmVzdFdoaXRlc3BhY2VPck5ld2xpbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAg
cmV0dXJuIGlzTWFuaWZlc3RXaGl0ZXNwYWNlKGNoYXJhY3RlcikgfHwgaXNNYW5pZmVzdE5ld2xp
bmUoY2hhcmFjdGVyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIFVSTCBjb25zdHJ1Y3RVUkwoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgQ2hhcmFj
dGVyVHlwZSogc3RhcnQsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKK3sKKyAgICBVUkwgdXJs
KG1hbmlmZXN0VVJMLCBTdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0KSk7CisgICAgdXJsLnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVybiB1cmw7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBjYWNo
ZU1hbmlmZXN0SWRlbnRpZmllcltdID0geyAnQycsICdBJywgJ0MnLCAnSCcsICdFJywgJyAnLCAn
TScsICdBJywgJ04nLCAnSScsICdGJywgJ0UnLCAnUycsICdUJyB9OwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hlSWRl
bnRpZmllcltdID0geyAnQycsICdBJywgJ0MnLCAnSCcsICdFJywgJzonIH07Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgZmFs
bGJhY2tJZGVudGlmaWVyW10gPSB7ICdGJywgJ0EnLCAnTCcsICdMJywgJ0InLCAnQScsICdDJywg
J0snLCAnOicgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25z
dGV4cHIgQ2hhcmFjdGVyVHlwZSBuZXR3b3JrSWRlbnRpZmllcltdID0geyAnTicsICdFJywgJ1Qn
LCAnVycsICdPJywgJ1InLCAnSycsICc6JyB9OworCiBib29sIHBhcnNlTWFuaWZlc3QoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCiB7CiAgICAgQVNTRVJU
KG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5KCkpOwpAQCAtNTksMTQ1ICs4OCwxNjMgQEAg
Ym9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUgogICAgIE1vZGUgbW9kZSA9
IEV4cGxpY2l0OwogCiAgICAgU3RyaW5nIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVz
dE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisKKyAg
ICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBbJl0oYXV0
byBwYXJzaW5nQnVmZmVyKSB7CisgICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGUgPSB0eXBlbmFt
ZSBkZWNsdHlwZShwYXJzaW5nQnVmZmVyKTo6Q2hhcmFjdGVyVHlwZTsKICAgICAKLSAgICAvLyBM
b29rIGZvciB0aGUgbWFnaWMgc2lnbmF0dXJlOiAiXlx4RkVGRj9DQUNIRSBNQU5JRkVTVFsgXHRd
PyIgKHRoZSBCT00gaXMgcmVtb3ZlZCBieSBUZXh0UmVzb3VyY2VEZWNvZGVyKS4KLSAgICAvLyBF
eGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1QgI2NvbW1lbnQiIGlzIGEgdmFsaWQgc2lnbmF0dXJlLgot
ICAgIC8vIEV4YW1wbGU6ICJDQUNIRSBNQU5JRkVTVDtWMiIgaXMgbm90LgotICAgIGNvbnN0IGNo
YXIgbWFuaWZlc3RTaWduYXR1cmVbXSA9ICJDQUNIRSBNQU5JRkVTVCI7Ci0gICAgaWYgKCFtYW5p
ZmVzdFN0cmluZy5zdGFydHNXaXRoKG1hbmlmZXN0U2lnbmF0dXJlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAvLyBMb29rIGZvciB0aGUgbWFnaWMgc2lnbmF0dXJlOiAiXlx4RkVG
Rj9DQUNIRSBNQU5JRkVTVFsgXHRdPyIgKHRoZSBCT00gaXMgcmVtb3ZlZCBieSBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKS4KKyAgICAgICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21tZW50
IiBpcyBhIHZhbGlkIHNpZ25hdHVyZS4KKyAgICAgICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklG
RVNUO1YyIiBpcyBub3QuCisgICAgICAgIGlmICghc2tpcENoYXJhY3RlcnNFeGFjdGx5KHBhcnNp
bmdCdWZmZXIsIGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyPENoYXJhY3RlclR5cGU+KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmdWaWV3IG1hbmlmZXN0QWZ0ZXJT
aWduYXR1cmUgPSBTdHJpbmdWaWV3KG1hbmlmZXN0U3RyaW5nKS5zdWJzdHJpbmcoc2l6ZW9mKG1h
bmlmZXN0U2lnbmF0dXJlKSAtIDEpOwotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
bWFuaWZlc3RBZnRlclNpZ25hdHVyZS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25z
dCBVQ2hhciogcCA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5k
ID0gcCArIG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUubGVuZ3RoKCk7Ci0KLSAgICBpZiAocCA8IGVu
ZCAmJiAqcCAhPSAnICcgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnXG4nICYmICpwICE9ICdccicp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFNraXAgdG8gdGhlIGVuZCBvZiB0aGUg
bGluZS4KLSAgICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHInICYmICpwICE9ICdcbicpCi0g
ICAgICAgIHArKzsKLQotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8vIFNraXAgd2hpdGVzcGFj
ZQotICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInIHx8
ICpwID09ICcgJyB8fCAqcCA9PSAnXHQnKSkKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChwID09IGVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAg
ICAgY29uc3QgVUNoYXIqIGxpbmVTdGFydCA9IHA7Ci0gICAgICAgIAotICAgICAgICAvLyBGaW5k
IHRoZSBlbmQgb2YgdGhlIGxpbmUKLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xy
JyAmJiAqcCAhPSAnXG4nKQotICAgICAgICAgICAgcCsrOwotICAgICAgICAKLSAgICAgICAgLy8g
Q2hlY2sgaWYgd2UgaGF2ZSBhIGNvbW1lbnQKLSAgICAgICAgaWYgKCpsaW5lU3RhcnQgPT0gJyMn
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBHZXQgcmlkIG9m
IHRyYWlsaW5nIHdoaXRlc3BhY2UKLSAgICAgICAgY29uc3QgVUNoYXIqIHRtcCA9IHAgLSAxOwot
ICAgICAgICB3aGlsZSAodG1wID4gbGluZVN0YXJ0ICYmICgqdG1wID09ICcgJyB8fCAqdG1wID09
ICdcdCcpKQotICAgICAgICAgICAgdG1wLS07Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgbGlu
ZShsaW5lU3RhcnQsIHRtcCAtIGxpbmVTdGFydCArIDEpOwotCi0gICAgICAgIGlmIChsaW5lID09
ICJDQUNIRToiKSAKLSAgICAgICAgICAgIG1vZGUgPSBFeHBsaWNpdDsKLSAgICAgICAgZWxzZSBp
ZiAobGluZSA9PSAiRkFMTEJBQ0s6IikKLSAgICAgICAgICAgIG1vZGUgPSBGYWxsYmFjazsKLSAg
ICAgICAgZWxzZSBpZiAobGluZSA9PSAiTkVUV09SSzoiKQotICAgICAgICAgICAgbW9kZSA9IE9u
bGluZUFsbG93bGlzdDsKLSAgICAgICAgZWxzZSBpZiAobGluZS5lbmRzV2l0aCgnOicpKQotICAg
ICAgICAgICAgbW9kZSA9IFVua25vd247Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gVW5rbm93
bikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlIGlmIChtb2RlID09IEV4cGxp
Y2l0IHx8IG1vZGUgPT0gT25saW5lQWxsb3dsaXN0KSB7Ci0gICAgICAgICAgICBhdXRvIHVwY29u
dmVydGVkTGluZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFy
YWN0ZXJzOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5n
dGgoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBz
ZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgotICAgICAg
ICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAg
ICAgICAgICAgICAgICBwKys7CisgICAgICAgIGlmIChwYXJzaW5nQnVmZmVyLmhhc0NoYXJhY3Rl
cnNSZW1haW5pbmcoKSAmJiAhaXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xpbmUoKnBhcnNpbmdC
dWZmZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIFNraXAgdG8g
dGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlz
TWFuaWZlc3ROZXdsaW5lPihwYXJzaW5nQnVmZmVyKTsKIAotICAgICAgICAgICAgaWYgKG1vZGUg
PT0gT25saW5lQWxsb3dsaXN0ICYmIHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID09IDEg
JiYgbGluZVswXSA9PSAnKicpIHsKLSAgICAgICAgICAgICAgICAvLyBXaWxkY2FyZCB3YXMgZm91
bmQuCi0gICAgICAgICAgICAgICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB0
cnVlOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgLy8gU2tpcCB3aGl0ZXNwYWNl
CisgICAgICAgICAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3Bh
Y2VPck5ld2xpbmU+KHBhcnNpbmdCdWZmZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAocGFyc2luZ0J1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY29tbWVudAorICAgICAgICAgICAgaWYgKCpw
YXJzaW5nQnVmZmVyID09ICcjJykgeworICAgICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0
ZXJUeXBlLCBpc01hbmlmZXN0TmV3bGluZT4ocGFyc2luZ0J1ZmZlcik7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFVSTCB1cmwobWFuaWZl
c3RVUkwsIGxpbmUuc3Vic3RyaW5nKDAsIHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzKSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkKKyAgICAgICAg
ICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkocGFyc2luZ0J1ZmZlciwgY2FjaGVJZGVudGlm
aWVyPENoYXJhY3RlclR5cGU+KSkgeworICAgICAgICAgICAgICAgIHNraXBXaGlsZTxDaGFyYWN0
ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4ocGFyc2luZ0J1ZmZlcik7CisgICAgICAgICAg
ICAgICAgaWYgKHBhcnNpbmdCdWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICFpc01h
bmlmZXN0TmV3bGluZSgqcGFyc2luZ0J1ZmZlcikpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgICAgIG1vZGUgPSBFeHBsaWNpdDsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdXJsLnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWVxdWFs
SWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1hbmlmZXN0VVJMLnByb3RvY29sKCkp
KQorICAgICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShwYXJzaW5nQnVmZmVyLCBm
YWxsYmFja0lkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pKSB7CisgICAgICAgICAgICAgICAgc2tp
cFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihwYXJzaW5nQnVmZmVy
KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2luZ0J1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWlu
aW5nKCkgJiYgIWlzTWFuaWZlc3ROZXdsaW5lKCpwYXJzaW5nQnVmZmVyKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgbW9kZSA9IEZhbGxiYWNr
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobW9kZSA9PSBFeHBsaWNpdCAmJiBtYW5pZmVzdFVSTC5wcm90b2NvbElzKCJodHRwcyIpICYm
ICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIHVybCkpCisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkocGFyc2luZ0J1
ZmZlciwgbmV0d29ya0lkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pKSB7CisgICAgICAgICAgICAg
ICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihwYXJzaW5n
QnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2luZ0J1ZmZlci5oYXNDaGFyYWN0ZXJz
UmVtYWluaW5nKCkgJiYgIWlzTWFuaWZlc3ROZXdsaW5lKCpwYXJzaW5nQnVmZmVyKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgbW9kZSA9IE9u
bGluZUFsbG93bGlzdDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBTRVRUSU5HUzoKKworICAg
ICAgICAgICAgYXV0byBsaW5lU3RhcnQgPSBwYXJzaW5nQnVmZmVyLnBvc2l0aW9uKCk7CisKKyAg
ICAgICAgICAgIC8vIEZpbmQgdGhlIGVuZCBvZiB0aGUgbGluZQorICAgICAgICAgICAgc2tpcFVu
dGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3ROZXdsaW5lPihwYXJzaW5nQnVmZmVyKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1vZGUgPT0gRXhwbGljaXQpCi0gICAgICAgICAg
ICAgICAgbWFuaWZlc3QuZXhwbGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVu
ZCh1cmwpOwotICAgICAgICAgICAgCi0gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBGYWxsYmFj
aykgewotICAgICAgICAgICAgYXV0byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5n
VmlldyhsaW5lKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiBwID0gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiBsaW5lRW5kID0gcCArIGxpbmUubGVuZ3RoKCk7CisgICAgICAgICAgICAvLyBHZXQgcmlk
IG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAgIGF1dG8gdG1wID0gcGFyc2luZ0J1
ZmZlci5wb3NpdGlvbigpIC0gMTsKKyAgICAgICAgICAgIHdoaWxlICh0bXAgPiBsaW5lU3RhcnQg
JiYgaXNNYW5pZmVzdFdoaXRlc3BhY2UoKnRtcCkpCisgICAgICAgICAgICAgICAgdG1wLS07CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGlu
ZyB0aGUgdHdvIFVSTHMKLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAn
XHQnICYmICpwICE9ICcgJykgCi0gICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgU3Ry
aW5nVmlldyBsaW5lKGxpbmVTdGFydCwgdG1wIC0gbGluZVN0YXJ0ICsgMSk7CiAKLSAgICAgICAg
ICAgIGlmIChwID09IGxpbmVFbmQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgbm8g
d2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkxzLgorICAgICAgICAgICAgaWYgKGxpbmUuZW5k
c1dpdGgoJzonKSkgeworICAgICAgICAgICAgICAgIG1vZGUgPSBVbmtub3duOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBVUkwgbmFtZXNwYWNlVVJMKG1hbmlmZXN0VVJMLCBsaW5lLnN1YnN0cmluZygwLCBwIC0gdXBj
b252ZXJ0ZWRMaW5lQ2hhcmFjdGVycykpOwotICAgICAgICAgICAgaWYgKCFuYW1lc3BhY2VVUkwu
aXNWYWxpZCgpKQorCisgICAgICAgICAgICBhdXRvIGxpbmVQYXJzaW5nQnVmZmVyID0gU3RyaW5n
UGFyc2luZ0J1ZmZlciB7IGxpbmVTdGFydCwgbGluZS5sZW5ndGgoKSB9OworCisgICAgICAgICAg
ICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVl
bnQgaWdub3JlZCB0b2tlbnMuCisgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwg
aXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVQYXJzaW5nQnVmZmVyKTsKKworICAgICAgICAgICAg
c3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBjYXNlIFVua25vd246CiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBuYW1lc3BhY2VVUkwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAKLSAgICAgICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFs
KG1hbmlmZXN0VVJMLCBuYW1lc3BhY2VVUkwpKQorICAgICAgICAgICAgY2FzZSBFeHBsaWNpdDog
eworICAgICAgICAgICAgICAgIGF1dG8gdXJsID0gY29uc3RydWN0VVJMKG1hbmlmZXN0VVJMLCBs
aW5lU3RhcnQsIGxpbmVQYXJzaW5nQnVmZmVyLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAg
IGlmICghdXJsLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgpLCBt
YW5pZmVzdFVSTC5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgaWYgKG1hbmlmZXN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgdXJsKSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbWFu
aWZlc3QuZXhwbGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBBbHRob3VnaCA8aHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2ZmbGluZS5odG1sI3BhcnNpbmctY2Fj
aGUtbWFuaWZlc3RzPiAoMDcvMDYvMjAxNykgc2FpZHMKLSAgICAgICAgICAgIC8vIHRoYXQgd2Ug
c2hvdWxkIGFsd2F5cyBwcmVmaXggbWF0Y2ggdGhlIG1hbmlmZXN0IHBhdGggd2Ugb25seSBkbyBz
byBpZiB0aGUgbWFuaWZlc3Qgd2FzIHNlcnZlZCB3aXRoIGEgbm9uLQotICAgICAgICAgICAgLy8g
c3RhbmRhcmQgSFRUUCBDb250ZW50LVR5cGUgaGVhZGVyIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4K
LSAgICAgICAgICAgIGlmICghYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0
aCAmJiAhbmFtZXNwYWNlVVJMLnBhdGgoKS5zdGFydHNXaXRoKG1hbmlmZXN0UGF0aCkpCisgICAg
ICAgICAgICBjYXNlIE9ubGluZUFsbG93bGlzdDogeworICAgICAgICAgICAgICAgIGlmIChsaW5l
UGFyc2luZ0J1ZmZlci5wb3NpdGlvbigpIC0gbGluZVN0YXJ0ID09IDEgJiYgbGluZVN0YXJ0WzBd
ID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICAvLyBXaWxkY2FyZCB3YXMgZm91bmQuCisg
ICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgYXV0byB1cmwgPSBjb25zdHJ1Y3RVUkwobWFuaWZlc3RVUkwsIGxpbmVT
dGFydCwgbGluZVBhcnNpbmdCdWZmZXIucG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYg
KCF1cmwuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1hbmlm
ZXN0VVJMLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICBtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcy5hcHBlbmQodXJsKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gU2tp
cCB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgZmFsbGJhY2sgbmFtZXNwYWNlIGZyb20gVVJMLgotICAg
ICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICgqcCA9PSAnXHQnIHx8ICpwID09ICcgJykp
Ci0gICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgY2FzZSBGYWxsYmFjazogeworICAg
ICAgICAgICAgICAgIGlmIChsaW5lUGFyc2luZ0J1ZmZlci5hdEVuZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRoZXJlIHdhcyBubyB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTHMu
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBz
dWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGZhbGxi
YWNrU3RhcnQgPSBwOwotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdc
dCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAg
YXV0byBuYW1lc3BhY2VVUkwgPSBjb25zdHJ1Y3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwg
bGluZVBhcnNpbmdCdWZmZXIucG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1l
c3BhY2VVUkwuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgVVJMIGZhbGxiYWNrVVJMKG1hbmlmZXN0VVJMLCBTdHJpbmcoZmFsbGJhY2tTdGFy
dCwgcCAtIGZhbGxiYWNrU3RhcnQpKTsKLSAgICAgICAgICAgIGlmICghZmFsbGJhY2tVUkwuaXNW
YWxpZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZmFsbGJhY2tV
UkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICAgICAgaWYgKCFwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gQWx0aG91Z2gg
PGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29mZmxpbmUuaHRtbCNwYXJz
aW5nLWNhY2hlLW1hbmlmZXN0cz4gKDA3LzA2LzIwMTcpIHNhaWQKKyAgICAgICAgICAgICAgICAv
LyB0aGF0IHdlIHNob3VsZCBhbHdheXMgcHJlZml4IG1hdGNoIHRoZSBtYW5pZmVzdCBwYXRoIHdl
IG9ubHkgZG8gc28gaWYgdGhlIG1hbmlmZXN0IHdhcyBzZXJ2ZWQgd2l0aCBhIG5vbi0KKyAgICAg
ICAgICAgICAgICAvLyBzdGFuZGFyZCBIVFRQIENvbnRlbnQtVHlwZSBoZWFkZXIgZm9yIHdlYiBj
b21wYXRpYmlsaXR5LgorICAgICAgICAgICAgICAgIGlmICghYWxsb3dGYWxsYmFja05hbWVzcGFj
ZU91dHNpZGVNYW5mZXN0UGF0aCAmJiAhbmFtZXNwYWNlVVJMLnBhdGgoKS5zdGFydHNXaXRoKG1h
bmlmZXN0UGF0aCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICAgICAgLy8gU2tpcCB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgZmFsbGJhY2sgbmFtZXNwYWNlIGZy
b20gVVJMLgorICAgICAgICAgICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc01hbmlm
ZXN0V2hpdGVzcGFjZT4obGluZVBhcnNpbmdCdWZmZXIpOwogCi0gICAgICAgICAgICBpZiAoIXBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgZmFsbGJhY2tVUkwpKQorICAg
ICAgICAgICAgICAgIGF1dG8gZmFsbGJhY2tTdGFydCA9IGxpbmVQYXJzaW5nQnVmZmVyLnBvc2l0
aW9uKCk7CisKKyAgICAgICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRp
bmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVlbnQgaWdub3JlZCB0b2tlbnMuCisgICAgICAgICAgICAg
ICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lUGFy
c2luZ0J1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGZhbGxiYWNrVVJMID0gY29uc3Ry
dWN0VVJMKG1hbmlmZXN0VVJMLCBmYWxsYmFja1N0YXJ0LCBsaW5lUGFyc2luZ0J1ZmZlci5wb3Np
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIXByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgZmFsbGJhY2tVUkwpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIG1hbmlmZXN0LmZhbGxi
YWNrVVJMcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobmFtZXNwYWNlVVJMLCBmYWxsYmFja1VSTCkp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBtYW5pZmVzdC5mYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKG5hbWVzcGFjZVVSTCwgZmFsbGJhY2tVUkwpKTsgICAgICAgICAgICAKLSAgICAgICAgfSBl
bHNlIAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAgICAgICB9
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CiB9CiAK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402972</attachid>
            <date>2020-06-27 13:50:54 -0700</date>
            <delta_ts>2020-06-28 12:15:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200627135053.patch</filename>
            <type>text/plain</type>
            <size>19571</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA2LTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVz
dE5ld2xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZU1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaDoKKwogMjAyMC0wNi0yNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBpT1MgU2FmYXJpIGluY29ycmVjdGx5
IHJlcG9ydHMgIkFwcGxlQ29yZU1lZGlhIiBhcyBVQSBzdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCShyZXZpc2lvbiAyNjM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA1LDggKzYwNSw4
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQog
ICAgIH0KICAgICAKLSAgICBNYW5pZmVzdCBtYW5pZmVzdDsKLSAgICBpZiAoIXBhcnNlTWFuaWZl
c3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNl
LT5kYXRhKCkuc2l6ZSgpLCBtYW5pZmVzdCkpIHsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEo
KSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBpZiAoIW1hbmlmZXN0
KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FD
SEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZl
c3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNh
dGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdp
dGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKQEAg
LTYzNSwxNSArNjM1LDE1IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2EKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGV4cGxpY2l0
VVJMIDogbWFuaWZlc3QuZXhwbGljaXRVUkxzKQorICAgIGZvciAoY29uc3QgYXV0byYgZXhwbGlj
aXRVUkwgOiBtYW5pZmVzdC0+ZXhwbGljaXRVUkxzKQogICAgICAgICBhZGRFbnRyeShleHBsaWNp
dFVSTCwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCk7CiAKLSAgICBmb3IgKGF1
dG8mIGZhbGxiYWNrVVJMIDogbWFuaWZlc3QuZmFsbGJhY2tVUkxzKQorICAgIGZvciAoYXV0byYg
ZmFsbGJhY2tVUkwgOiBtYW5pZmVzdC0+ZmFsbGJhY2tVUkxzKQogICAgICAgICBhZGRFbnRyeShm
YWxsYmFja1VSTC5zZWNvbmQuc3RyaW5nKCksIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFs
bGJhY2spOwogICAgIAotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE9ubGluZUFsbG93bGlz
dChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcyk7Ci0gICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7Ci0gICAgbV9jYWNoZUJlaW5n
VXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlmZXN0LmFsbG93QWxsTmV0
d29ya1JlcXVlc3RzKTsKKyAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xp
c3QobWFuaWZlc3QtPm9ubGluZUFsbG93ZWRVUkxzKTsKKyAgICBtX2NhY2hlQmVpbmdVcGRhdGVk
LT5zZXRGYWxsYmFja1VSTHMobWFuaWZlc3QtPmZhbGxiYWNrVVJMcyk7CisgICAgbV9jYWNoZUJl
aW5nVXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlmZXN0LT5hbGxvd0Fs
bE5ldHdvcmtSZXF1ZXN0cyk7CiAKICAgICBtX3Byb2dyZXNzVG90YWwgPSBtX3BlbmRpbmdFbnRy
aWVzLnNpemUoKTsKICAgICBtX3Byb2dyZXNzRG9uZSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAJKHJldmlzaW9uIDI2
MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk1hbmlmZXN0UGFyc2VyLmgiCiAKKyNpbmNsdWRlICJQYXJzaW5nVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rl
ck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBNb2RlIHsgRXhwbGljaXQs
IEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsKK2VudW0gY2xhc3MgQXBwbGlj
YXRpb25DYWNoZVBhcnNlck1vZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ssIE9ubGluZUFsbG93bGlz
dCwgVW5rbm93biB9OwogCiBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJM
JiBtYW5pZmVzdFVSTCkKIHsKQEAgLTQ0LDE2MCArNDUsMTk2IEBAIHN0YXRpYyBTdHJpbmdWaWV3
IG1hbmlmZXN0UGF0aChjb25zdCBVUkwKICAgICByZXR1cm4gbWFuaWZlc3RQYXRoOwogfQogCi1i
b29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYg
bWFuaWZlc3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNNYW5pZmVzdFdoaXRlc3BhY2UoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7
Ci0gICAgQVNTRVJUKG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5KCkpOwotICAgIEFTU0VS
VChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcy5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChtYW5p
ZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0eSgpKTsKLSAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdv
cmtSZXF1ZXN0cyA9IGZhbHNlOworICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJyAnIHx8IGNoYXJh
Y3RlciA9PSAnXHQnOworfQogCi0gICAgYXV0byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5p
ZmVzdFBhdGgobWFuaWZlc3RVUkwpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFuaWZlc3ROZXdsaW5lKENoYXJhY3RlclR5cGUgY2hh
cmFjdGVyKQoreworICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJ1xuJyB8fCBjaGFyYWN0ZXIgPT0g
J1xyJzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lKENoYXJhY3RlclR5cGUgY2hh
cmFjdGVyKQoreworICAgIHJldHVybiBpc01hbmlmZXN0V2hpdGVzcGFjZShjaGFyYWN0ZXIpIHx8
IGlzTWFuaWZlc3ROZXdsaW5lKGNoYXJhY3Rlcik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBVUkwgbWFrZU1hbmlmZXN0VVJMKGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN0YXJ0LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBl
bmQpCit7CisgICAgVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFy
dCkpOworICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gdXJs
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHBy
IENoYXJhY3RlclR5cGUgY2FjaGVNYW5pZmVzdElkZW50aWZpZXJbXSA9IHsgJ0MnLCAnQScsICdD
JywgJ0gnLCAnRScsICcgJywgJ00nLCAnQScsICdOJywgJ0knLCAnRicsICdFJywgJ1MnLCAnVCcg
fTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hh
cmFjdGVyVHlwZSBjYWNoZU1vZGVJZGVudGlmaWVyW10gPSB7ICdDJywgJ0EnLCAnQycsICdIJywg
J0UnIH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHBy
IENoYXJhY3RlclR5cGUgZmFsbGJhY2tNb2RlSWRlbnRpZmllcltdID0geyAnRicsICdBJywgJ0wn
LCAnTCcsICdCJywgJ0EnLCAnQycsICdLJyB9OwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG5ldHdvcmtNb2RlSWRlbnRpZmll
cltdID0geyAnTicsICdFJywgJ1QnLCAnVycsICdPJywgJ1InLCAnSycgfTsKIAotICAgIGNvbnN0
IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CitP
cHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1F
VHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5p
ZmVzdCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRo
ID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVN
YW5pZmVzdE1JTUVUeXBlKTsKKyAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlm
ZXN0UGF0aChtYW5pZmVzdFVSTCk7CiAKLSAgICBNb2RlIG1vZGUgPSBFeHBsaWNpdDsKKyAgICBh
dXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0
ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVzdE1JTUVUeXBlKSwgIlVURi04Iikt
PmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CiAKLSAgICBTdHJpbmcgbWFuaWZlc3RTdHJp
bmcgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsOjpmcm9tTGl0ZXJh
bFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUpLCAiVVRGLTgiKS0+ZGVjb2RlQW5kRmx1c2go
ZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlm
ZXN0U3RyaW5nLCBbJl0oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdD4geworICAgICAgICB1c2luZyBDaGFyYWN0ZXJUeXBlID0gdHlwZW5hbWUgZGVjbHR5
cGUoYnVmZmVyKTo6Q2hhcmFjdGVyVHlwZTsKICAgICAKLSAgICAvLyBMb29rIGZvciB0aGUgbWFn
aWMgc2lnbmF0dXJlOiAiXlx4RkVGRj9DQUNIRSBNQU5JRkVTVFsgXHRdPyIgKHRoZSBCT00gaXMg
cmVtb3ZlZCBieSBUZXh0UmVzb3VyY2VEZWNvZGVyKS4KLSAgICAvLyBFeGFtcGxlOiAiQ0FDSEUg
TUFOSUZFU1QgI2NvbW1lbnQiIGlzIGEgdmFsaWQgc2lnbmF0dXJlLgotICAgIC8vIEV4YW1wbGU6
ICJDQUNIRSBNQU5JRkVTVDtWMiIgaXMgbm90LgotICAgIGNvbnN0IGNoYXIgbWFuaWZlc3RTaWdu
YXR1cmVbXSA9ICJDQUNIRSBNQU5JRkVTVCI7Ci0gICAgaWYgKCFtYW5pZmVzdFN0cmluZy5zdGFy
dHNXaXRoKG1hbmlmZXN0U2lnbmF0dXJlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgbWFuaWZlc3Q7CisgICAgICAgIGF1dG8gbW9kZSA9
IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpFeHBsaWNpdDsKKworICAgICAgICAvLyBMb29r
IGZvciB0aGUgbWFnaWMgc2lnbmF0dXJlOiAiXlx4RkVGRj9DQUNIRSBNQU5JRkVTVFsgXHRdPyIg
KHRoZSBCT00gaXMgcmVtb3ZlZCBieSBUZXh0UmVzb3VyY2VEZWNvZGVyKS4KKyAgICAgICAgLy8g
RXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21tZW50IiBpcyBhIHZhbGlkIHNpZ25hdHVyZS4K
KyAgICAgICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUO1YyIiBpcyBub3QuCisgICAgICAg
IGlmICghc2tpcENoYXJhY3RlcnNFeGFjdGx5KGJ1ZmZlciwgY2FjaGVNYW5pZmVzdElkZW50aWZp
ZXI8Q2hhcmFjdGVyVHlwZT4pKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICAKLSAgICBTdHJpbmdWaWV3IG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUgPSBTdHJpbmdWaWV3KG1h
bmlmZXN0U3RyaW5nKS5zdWJzdHJpbmcoc2l6ZW9mKG1hbmlmZXN0U2lnbmF0dXJlKSAtIDEpOwot
ICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gbWFuaWZlc3RBZnRlclNpZ25hdHVyZS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogcCA9IHVwY29udmVydGVk
Q2hhcmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5kID0gcCArIG1hbmlmZXN0QWZ0ZXJTaWdu
YXR1cmUubGVuZ3RoKCk7Ci0KLSAgICBpZiAocCA8IGVuZCAmJiAqcCAhPSAnICcgJiYgKnAgIT0g
J1x0JyAmJiAqcCAhPSAnXG4nICYmICpwICE9ICdccicpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIC8vIFNraXAgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAgICB3aGlsZSAocCA8IGVu
ZCAmJiAqcCAhPSAnXHInICYmICpwICE9ICdcbicpCi0gICAgICAgIHArKzsKLQotICAgIHdoaWxl
ICgxKSB7Ci0gICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZQotICAgICAgICB3aGlsZSAocCA8IGVu
ZCAmJiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInIHx8ICpwID09ICcgJyB8fCAqcCA9PSAnXHQn
KSkKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgCi0gICAgICAgIGlmIChwID09IGVuZCkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVTdGFy
dCA9IHA7Ci0gICAgICAgIAotICAgICAgICAvLyBGaW5kIHRoZSBlbmQgb2YgdGhlIGxpbmUKLSAg
ICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xyJyAmJiAqcCAhPSAnXG4nKQotICAgICAg
ICAgICAgcCsrOwotICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGNvbW1l
bnQKLSAgICAgICAgaWYgKCpsaW5lU3RhcnQgPT0gJyMnKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIAotICAgICAgICAvLyBHZXQgcmlkIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UKLSAg
ICAgICAgY29uc3QgVUNoYXIqIHRtcCA9IHAgLSAxOwotICAgICAgICB3aGlsZSAodG1wID4gbGlu
ZVN0YXJ0ICYmICgqdG1wID09ICcgJyB8fCAqdG1wID09ICdcdCcpKQotICAgICAgICAgICAgdG1w
LS07Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgbGluZShsaW5lU3RhcnQsIHRtcCAtIGxpbmVT
dGFydCArIDEpOwotCi0gICAgICAgIGlmIChsaW5lID09ICJDQUNIRToiKSAKLSAgICAgICAgICAg
IG1vZGUgPSBFeHBsaWNpdDsKLSAgICAgICAgZWxzZSBpZiAobGluZSA9PSAiRkFMTEJBQ0s6IikK
LSAgICAgICAgICAgIG1vZGUgPSBGYWxsYmFjazsKLSAgICAgICAgZWxzZSBpZiAobGluZSA9PSAi
TkVUV09SSzoiKQotICAgICAgICAgICAgbW9kZSA9IE9ubGluZUFsbG93bGlzdDsKLSAgICAgICAg
ZWxzZSBpZiAobGluZS5lbmRzV2l0aCgnOicpKQotICAgICAgICAgICAgbW9kZSA9IFVua25vd247
Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gVW5rbm93bikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBlbHNlIGlmIChtb2RlID09IEV4cGxpY2l0IHx8IG1vZGUgPT0gT25saW5lQWxs
b3dsaXN0KSB7Ci0gICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPSBT
dHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgICAgICAgICAgY29u
c3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzOwotICAgICAgICAgICAgY29u
c3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5ndGgoKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBz
dWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5k
ICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAgICAgICBwKys7Ci0KLSAg
ICAgICAgICAgIGlmIChtb2RlID09IE9ubGluZUFsbG93bGlzdCAmJiBwIC0gdXBjb252ZXJ0ZWRM
aW5lQ2hhcmFjdGVycyA9PSAxICYmIGxpbmVbMF0gPT0gJyonKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2lsZGNhcmQgd2FzIGZvdW5kLgotICAgICAgICAgICAgICAgIG1hbmlmZXN0LmFsbG93QWxs
TmV0d29ya1JlcXVlc3RzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkgJiYg
IWlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lKCpidWZmZXIpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICAgICAgVVJMIHVybChtYW5pZmVzdFVSTCwgbGlu
ZS5zdWJzdHJpbmcoMCwgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMpKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAvLyBTa2lwIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgICAg
IHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0TmV3bGluZT4oYnVmZmVyKTsKIAot
ICAgICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICB3aGls
ZSAoMSkgeworICAgICAgICAgICAgLy8gU2tpcCB3aGl0ZXNwYWNlCisgICAgICAgICAgICBza2lw
V2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xpbmU+KGJ1ZmZl
cik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZSh1cmwucHJvdG9jb2woKSwgbWFuaWZlc3RVUkwucHJvdG9jb2woKSkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF1dG8gbGluZVN0YXJ0ID0g
YnVmZmVyLnBvc2l0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZpbmQgdGhl
IGVuZCBvZiB0aGUgbGluZQorICAgICAgICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlz
TWFuaWZlc3ROZXdsaW5lPihidWZmZXIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
bW9kZSA9PSBFeHBsaWNpdCAmJiBtYW5pZmVzdFVSTC5wcm90b2NvbElzKCJodHRwcyIpICYmICFw
cm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIHVybCkpCisgICAgICAgICAg
ICAvLyBMaW5lIGlzIGEgY29tbWVudCwgc2tpcCB0byB0aGUgbmV4dCBsaW5lLgorICAgICAgICAg
ICAgaWYgKCpsaW5lU3RhcnQgPT0gJyMnKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBFeHBsaWNpdCkKLSAgICAgICAgICAg
ICAgICBtYW5pZmVzdC5leHBsaWNpdFVSTHMuYWRkKHVybC5zdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbWFuaWZlc3Qub25saW5lQWxsb3dlZFVSTHMuYXBwZW5k
KHVybCk7CisgICAgICAgICAgICAvLyBHZXQgcmlkIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAg
ICAgICAgICAgIGF1dG8gbGluZUVuZCA9IGJ1ZmZlci5wb3NpdGlvbigpIC0gMTsKKyAgICAgICAg
ICAgIHdoaWxlIChsaW5lRW5kID4gbGluZVN0YXJ0ICYmIGlzTWFuaWZlc3RXaGl0ZXNwYWNlKCps
aW5lRW5kKSkKKyAgICAgICAgICAgICAgICBsaW5lRW5kLS07CiAgICAgICAgICAgICAKLSAgICAg
ICAgfSBlbHNlIGlmIChtb2RlID09IEZhbGxiYWNrKSB7Ci0gICAgICAgICAgICBhdXRvIHVwY29u
dmVydGVkTGluZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFy
YWN0ZXJzOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5n
dGgoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBz
ZXBhcmF0aW5nIHRoZSB0d28gVVJMcwotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYm
ICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAg
ICAgICAvLyBMaW5lIGlzIGFsbCB3aGl0ZXNwYWNlLCBza2lwIHRvIHRoZSBuZXh0IGxpbmUuCisg
ICAgICAgICAgICBpZiAobGluZVN0YXJ0ID09IGxpbmVFbmQpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF1dG8gbGluZUJ1ZmZlciA9IFN0cmlu
Z1BhcnNpbmdCdWZmZXIgeyBsaW5lU3RhcnQsIGxpbmVFbmQgfTsKKworICAgICAgICAgICAgaWYg
KGxpbmVCdWZmZXJbbGluZUJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSAtIDFdID09ICc6Jykgewor
ICAgICAgICAgICAgICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkobGluZUJ1ZmZlciwgY2Fj
aGVNb2RlSWRlbnRpZmllcjxDaGFyYWN0ZXJUeXBlPikgJiYgbGluZUJ1ZmZlci5sZW5ndGhSZW1h
aW5pbmcoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBBcHBsaWNhdGlvbkNh
Y2hlUGFyc2VyTW9kZTo6RXhwbGljaXQ7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFj
dGx5KGxpbmVCdWZmZXIsIGZhbGxiYWNrTW9kZUlkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pICYm
IGxpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAg
ICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6OkZhbGxiYWNrOworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShsaW5lQnVmZmVyLCBuZXR3b3JrTW9kZUlkZW50aWZp
ZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0gMSkg
eworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6
Ok9ubGluZUFsbG93bGlzdDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocCA9PSBsaW5lRW5kKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlcmUgd2FzIG5vIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMcy4KKyAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgbGluZSAoZXhjbHVkaW5nIHRoZSB0cmFpbGluZyB3aGl0
ZXNwYWNlKSBlbmRzIHdpdGggYSAnOicgYW5kIGlzbid0IG9uZSBvZiB0aGUga25vd24gbW9kZQor
ICAgICAgICAgICAgICAgIC8vIGhlYWRlcnMsIHRyYW5zaXRpb24gdG8gdGhlICdVbmtub3duJyBt
b2RlLgorICAgICAgICAgICAgICAgIG1vZGUgPSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9kZTo6
VW5rbm93bjsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAK
KyAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlv
bkNhY2hlUGFyc2VyTW9kZTo6VW5rbm93bjoKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgbGlu
ZS5zdWJzdHJpbmcoMCwgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMpKTsKLSAgICAgICAg
ICAgIGlmICghbmFtZXNwYWNlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNhc2UgQXBwbGlj
YXRpb25DYWNoZVBhcnNlck1vZGU6OkV4cGxpY2l0OiB7CisgICAgICAgICAgICAgICAgLy8gTG9v
ayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9y
ZWQgdG9rZW5zLgorICAgICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01h
bmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBhdXRvIHVy
bCA9IG1ha2VNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCwgbGluZVN0YXJ0LCBsaW5lQnVmZmVyLnBv
c2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
aWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgpLCBtYW5pZmVzdFVSTC5w
cm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKG1hbmlmZXN0VVJMLnByb3RvY29sSXMoImh0dHBzIikg
JiYgIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgdXJsKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgbWFuaWZlc3QuZXhwbGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbmFtZXNwYWNlVVJMLnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgbmFtZXNwYWNlVVJMKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNlck1v
ZGU6Ok9ubGluZUFsbG93bGlzdDogeworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRl
c3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4K
KyAgICAgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRl
c3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAgICAgICAgICAgICAgaWYgKGxpbmVCdWZmZXIucG9z
aXRpb24oKSAtIGxpbmVTdGFydCA9PSAxICYmICpsaW5lU3RhcnQgPT0gJyonKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdhcyBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAg
bWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgYXV0byB1cmwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVT
dGFydCwgbGluZUJ1ZmZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXVybC5p
c1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9j
b2woKSwgbWFuaWZlc3RVUkwucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICAvLyBBbHRob3VnaCA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvb2ZmbGluZS5odG1sI3BhcnNpbmctY2FjaGUtbWFuaWZlc3RzPiAoMDcv
MDYvMjAxNykgc2FpZHMKLSAgICAgICAgICAgIC8vIHRoYXQgd2Ugc2hvdWxkIGFsd2F5cyBwcmVm
aXggbWF0Y2ggdGhlIG1hbmlmZXN0IHBhdGggd2Ugb25seSBkbyBzbyBpZiB0aGUgbWFuaWZlc3Qg
d2FzIHNlcnZlZCB3aXRoIGEgbm9uLQotICAgICAgICAgICAgLy8gc3RhbmRhcmQgSFRUUCBDb250
ZW50LVR5cGUgaGVhZGVyIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgIGlmICgh
YWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCAmJiAhbmFtZXNwYWNlVVJM
LnBhdGgoKS5zdGFydHNXaXRoKG1hbmlmZXN0UGF0aCkpCisgICAgICAgICAgICAgICAgbWFuaWZl
c3Qub25saW5lQWxsb3dlZFVSTHMuYXBwZW5kKHVybCk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXBwbGlj
YXRpb25DYWNoZVBhcnNlck1vZGU6OkZhbGxiYWNrOiB7CisgICAgICAgICAgICAgICAgLy8gTG9v
ayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSB0d28gVVJMcworICAgICAgICAgICAgICAg
IHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZl
cik7CiAKLSAgICAgICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZSBzZXBhcmF0aW5nIGZhbGxiYWNr
IG5hbWVzcGFjZSBmcm9tIFVSTC4KLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAo
KnAgPT0gJ1x0JyB8fCAqcCA9PSAnICcpKQotICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAg
ICAgICAgICBpZiAobGluZUJ1ZmZlci5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFRoZXJlIHdhcyBubyB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTHMuCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8g
TG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGln
bm9yZWQgdG9rZW5zLgotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGZhbGxiYWNrU3RhcnQgPSBw
OwotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0g
JyAnKSAKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgYXV0byBuYW1lc3Bh
Y2VVUkwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZl
ci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5hbWVzcGFjZVVSTC5pc1ZhbGlk
KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBVUkwgZmFs
bGJhY2tVUkwobWFuaWZlc3RVUkwsIFN0cmluZyhmYWxsYmFja1N0YXJ0LCBwIC0gZmFsbGJhY2tT
dGFydCkpOwotICAgICAgICAgICAgaWYgKCFmYWxsYmFja1VSTC5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBmYWxsYmFja1VSTC5yZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbChtYW5pZmVzdFVSTCwgbmFtZXNwYWNlVVJMKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFs
KG1hbmlmZXN0VVJMLCBmYWxsYmFja1VSTCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgLy8gQWx0aG91Z2ggPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL29mZmxpbmUuaHRtbCNwYXJzaW5nLWNhY2hlLW1hbmlmZXN0cz4gKDA3LzA2LzIw
MTcpIHNhaWRzCisgICAgICAgICAgICAgICAgLy8gdGhhdCB3ZSBzaG91bGQgYWx3YXlzIHByZWZp
eCBtYXRjaCB0aGUgbWFuaWZlc3QgcGF0aCB3ZSBvbmx5IGRvIHNvIGlmIHRoZSBtYW5pZmVzdCB3
YXMgc2VydmVkIHdpdGggYSBub24tCisgICAgICAgICAgICAgICAgLy8gc3RhbmRhcmQgSFRUUCBD
b250ZW50LVR5cGUgaGVhZGVyIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAg
ICBpZiAoIWFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuZmVzdFBhdGggJiYgIW5hbWVz
cGFjZVVSTC5wYXRoKCkuc3RhcnRzV2l0aChtYW5pZmVzdFBhdGgpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZSBzZXBh
cmF0aW5nIGZhbGxiYWNrIG5hbWVzcGFjZSBmcm9tIFVSTC4KKyAgICAgICAgICAgICAgICBza2lw
V2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOwor
CisgICAgICAgICAgICAgICAgYXV0byBmYWxsYmFja1N0YXJ0ID0gbGluZUJ1ZmZlci5wb3NpdGlv
bigpOworCisgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5n
IHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgorICAgICAgICAgICAgICAg
IHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZl
cik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGZhbGxiYWNrVVJMID0gbWFrZU1hbmlmZXN0VVJM
KG1hbmlmZXN0VVJMLCBmYWxsYmFja1N0YXJ0LCBsaW5lQnVmZmVyLnBvc2l0aW9uKCkpOworICAg
ICAgICAgICAgICAgIGlmICghZmFsbGJhY2tVUkwuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgbWFuaWZlc3QuZmFsbGJhY2tVUkxzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihuYW1lc3BhY2VVUkwsIGZhbGxiYWNrVVJMKSk7ICAgICAgICAgICAg
Ci0gICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgZmFsbGJhY2tVUkwpKQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIobmFtZXNwYWNlVVJMLCBmYWxsYmFja1VSTCkpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CisgICAgICAgIH0K
IAotICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbWFuaWZlc3Q7CisgICAgfSk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5oCShyZXZpc2lvbiAyNjM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IE1hbmlmZXN0IHsKK3N0cnVjdCBBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QgewogICAgIFZlY3RvcjxVUkw+IG9ubGluZUFsbG93ZWRVUkxz
OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CiAgICAgRmFsbGJhY2tVUkxWZWN0
b3IgZmFsbGJhY2tVUkxzOwotICAgIGJvb2wgYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7IC8vIFdp
bGRjYXJkIGZvdW5kIGluIE5FVFdPUksgc2VjdGlvbi4KKyAgICBib29sIGFsbG93QWxsTmV0d29y
a1JlcXVlc3RzIHsgZmFsc2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9u
LgogfTsKIAotYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0
IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwg
TWFuaWZlc3QmKTsKK09wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5n
JiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403005</attachid>
            <date>2020-06-28 12:15:14 -0700</date>
            <delta_ts>2020-06-28 18:02:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200628121514.patch</filename>
            <type>text/plain</type>
            <size>20126</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA2LTI3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVz
dE5ld2xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZU1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaDoKKwogMjAyMC0wNi0yNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBpT1MgU2FmYXJpIGluY29ycmVjdGx5
IHJlcG9ydHMgIkFwcGxlQ29yZU1lZGlhIiBhcyBVQSBzdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2MzYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsOCArODEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCB0eXBlbmFtCiAgICAgICAgICsrcG9zaXRpb247CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIHR5cGVuYW1lIERlbGltaXRlclR5cGU+Ci12b2lkIHNraXBVbnRpbChTdHJp
bmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIERlbGltaXRlclR5cGUgZGVs
aW1pdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRGVsaW1p
dGVyVHlwZT4gdm9pZCBza2lwVW50aWwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyLCBEZWxpbWl0ZXJUeXBlIGRlbGltaXRlcikKIHsKICAgICB3aGlsZSAoYnVmZmVy
Lmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAqYnVmZmVyICE9IGRlbGltaXRlcikKICAgICAg
ICAgKytidWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMjYzNjE5KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwNSw4ICs2MDUsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgTWFuaWZlc3Qg
bWFuaWZlc3Q7Ci0gICAgaWYgKCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSwgbWFuaWZlc3Qp
KSB7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSk7CisgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGlt
ZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMg
dGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQg
bm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CiAg
ICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC02MzUsMTUgKzYzNSwxNSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBleHBsaWNpdFVSTCA6IG1hbmlmZXN0LmV4cGxpY2l0VVJM
cykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGV4cGxpY2l0VVJMIDogbWFuaWZlc3QtPmV4cGxpY2l0
VVJMcykKICAgICAgICAgYWRkRW50cnkoZXhwbGljaXRVUkwsIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6RXhwbGljaXQpOwogCi0gICAgZm9yIChhdXRvJiBmYWxsYmFja1VSTCA6IG1hbmlmZXN0
LmZhbGxiYWNrVVJMcykKKyAgICBmb3IgKGF1dG8mIGZhbGxiYWNrVVJMIDogbWFuaWZlc3QtPmZh
bGxiYWNrVVJMcykKICAgICAgICAgYWRkRW50cnkoZmFsbGJhY2tVUkwuc2Vjb25kLnN0cmluZygp
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKTsKICAgICAKLSAgICBtX2NhY2hl
QmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3Qub25saW5lQWxsb3dlZFVS
THMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEZhbGxiYWNrVVJMcyhtYW5pZmVzdC5m
YWxsYmFja1VSTHMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5ldHdv
cmtSZXF1ZXN0cyhtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7CisgICAgbV9jYWNo
ZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lQWxsb3dsaXN0KG1hbmlmZXN0LT5vbmxpbmVBbGxvd2Vk
VVJMcyk7CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0
LT5mYWxsYmFja1VSTHMpOworICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5l
dHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC0+YWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMpOwogCiAgICAg
bV9wcm9ncmVzc1RvdGFsID0gbV9wZW5kaW5nRW50cmllcy5zaXplKCk7CiAgICAgbV9wcm9ncmVz
c0RvbmUgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwx
NCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNl
ci5oIgogCisjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
LSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25saW5lQWxsb3dsaXN0
LCBVbmtub3duIH07CitlbnVtIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlIHsgRXhw
bGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsKIAogc3RhdGljIFN0
cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCiB7CkBAIC00NCwx
NjAgKzQ1LDE5MiBAQCBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMCiAg
ICAgcmV0dXJuIG1hbmlmZXN0UGF0aDsKIH0KIAotYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFuaWZlc3RXaGl0ZXNw
YWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewotICAgIEFTU0VSVChtYW5pZmVzdC5leHBs
aWNpdFVSTHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3Qub25saW5lQWxsb3dlZFVS
THMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3QuZmFsbGJhY2tVUkxzLmlzRW1wdHko
KSk7Ci0gICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSBmYWxzZTsKKyAgICBy
ZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsKK30KIAotICAgIGF1
dG8gbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc01h
bmlmZXN0TmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gY2hh
cmFjdGVyID09ICdcbicgfHwgY2hhcmFjdGVyID09ICdccic7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc01hbmlmZXN0V2hpdGVz
cGFjZU9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gaXNN
YW5pZmVzdFdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBpc01hbmlmZXN0TmV3bGluZShjaGFyYWN0
ZXIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgVVJMIG1h
a2VNYW5pZmVzdFVSTChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBDaGFyYWN0ZXJUeXBl
KiBzdGFydCwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQoreworICAgIFVSTCB1cmwobWFuaWZl
c3RVUkwsIFN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgICB1cmwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hlTWFuaWZl
c3RJZGVudGlmaWVyW10gPSB7ICdDJywgJ0EnLCAnQycsICdIJywgJ0UnLCAnICcsICdNJywgJ0En
LCAnTicsICdJJywgJ0YnLCAnRScsICdTJywgJ1QnIH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgY2FjaGVNb2RlSWRlbnRp
ZmllcltdID0geyAnQycsICdBJywgJ0MnLCAnSCcsICdFJyB9OwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGZhbGxiYWNrTW9k
ZUlkZW50aWZpZXJbXSA9IHsgJ0YnLCAnQScsICdMJywgJ0wnLCAnQicsICdBJywgJ0MnLCAnSycg
fTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hh
cmFjdGVyVHlwZSBuZXR3b3JrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ04nLCAnRScsICdUJywgJ1cn
LCAnTycsICdSJywgJ0snIH07CiAKLSAgICBjb25zdCBjaGFyIGNhY2hlTWFuaWZlc3RNSU1FVHlw
ZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOworT3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0
VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGNhY2hlTWFuaWZl
c3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJvb2wgYWxsb3dGYWxs
YmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlwZSk7CisgICAgYXV0
byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOwogCi0g
ICAgTW9kZSBtb2RlID0gRXhwbGljaXQ7CisgICAgYXV0byBtYW5pZmVzdFN0cmluZyA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNh
Y2hlTWFuaWZlc3RNSU1FVHlwZSksICJVVEYtOCIpLT5kZWNvZGVBbmRGbHVzaChkYXRhLCBsZW5n
dGgpOwogCi0gICAgU3RyaW5nIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVzdE1JTUVU
eXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisgICAgcmV0dXJu
IHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhtYW5pZmVzdFN0cmluZywgWyZdKGF1dG8gYnVmZmVy
KSAtPiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHsKKyAgICAgICAgdXNpbmcg
Q2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNoYXJhY3RlclR5cGU7
CiAgICAgCi0gICAgLy8gTG9vayBmb3IgdGhlIG1hZ2ljIHNpZ25hdHVyZTogIl5ceEZFRkY/Q0FD
SEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJlbW92ZWQgYnkgVGV4dFJlc291cmNlRGVj
b2RlcikuCi0gICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21tZW50IiBpcyBhIHZh
bGlkIHNpZ25hdHVyZS4KLSAgICAvLyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1Q7VjIiIGlzIG5v
dC4KLSAgICBjb25zdCBjaGFyIG1hbmlmZXN0U2lnbmF0dXJlW10gPSAiQ0FDSEUgTUFOSUZFU1Qi
OwotICAgIGlmICghbWFuaWZlc3RTdHJpbmcuc3RhcnRzV2l0aChtYW5pZmVzdFNpZ25hdHVyZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
IG1hbmlmZXN0OworICAgICAgICBhdXRvIG1vZGUgPSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9k
ZTo6RXhwbGljaXQ7CisKKyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG1hZ2ljIHNpZ25hdHVyZTog
Il5ceEZFRkY/Q0FDSEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJlbW92ZWQgYnkgVGV4
dFJlc291cmNlRGVjb2RlcikuCisgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNIRSBNQU5JRkVTVCAj
Y29tbWVudCIgaXMgYSB2YWxpZCBzaWduYXR1cmUuCisgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNI
RSBNQU5JRkVTVDtWMiIgaXMgbm90LgorICAgICAgICBpZiAoIXNraXBDaGFyYWN0ZXJzRXhhY3Rs
eShidWZmZXIsIGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyPENoYXJhY3RlclR5cGU+KSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nVmlldyBtYW5pZmVz
dEFmdGVyU2lnbmF0dXJlID0gU3RyaW5nVmlldyhtYW5pZmVzdFN0cmluZykuc3Vic3RyaW5nKHNp
emVvZihtYW5pZmVzdFNpZ25hdHVyZSkgLSAxKTsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFj
dGVycyA9IG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0g
ICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNo
YXIqIGVuZCA9IHAgKyBtYW5pZmVzdEFmdGVyU2lnbmF0dXJlLmxlbmd0aCgpOwotCi0gICAgaWYg
KHAgPCBlbmQgJiYgKnAgIT0gJyAnICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJ1xuJyAmJiAqcCAh
PSAnXHInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBTa2lwIHRvIHRoZSBlbmQg
b2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xyJyAmJiAqcCAhPSAn
XG4nKQotICAgICAgICBwKys7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBTa2lwIHdo
aXRlc3BhY2UKLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwID09ICdcbicgfHwgKnAgPT0g
J1xyJyB8fCAqcCA9PSAnICcgfHwgKnAgPT0gJ1x0JykpCi0gICAgICAgICAgICBwKys7Ci0gICAg
ICAgIAotICAgICAgICBpZiAocCA9PSBlbmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lU3RhcnQgPSBwOwotICAgICAgICAKLSAgICAgICAg
Ly8gRmluZCB0aGUgZW5kIG9mIHRoZSBsaW5lCi0gICAgICAgIHdoaWxlIChwIDwgZW5kICYmICpw
ICE9ICdccicgJiYgKnAgIT0gJ1xuJykKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgCi0gICAg
ICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjb21tZW50Ci0gICAgICAgIGlmICgqbGluZVN0YXJ0
ID09ICcjJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gR2V0
IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCi0gICAgICAgIGNvbnN0IFVDaGFyKiB0bXAgPSBw
IC0gMTsKLSAgICAgICAgd2hpbGUgKHRtcCA+IGxpbmVTdGFydCAmJiAoKnRtcCA9PSAnICcgfHwg
KnRtcCA9PSAnXHQnKSkKLSAgICAgICAgICAgIHRtcC0tOwotICAgICAgICAKLSAgICAgICAgU3Ry
aW5nIGxpbmUobGluZVN0YXJ0LCB0bXAgLSBsaW5lU3RhcnQgKyAxKTsKLQotICAgICAgICBpZiAo
bGluZSA9PSAiQ0FDSEU6IikgCi0gICAgICAgICAgICBtb2RlID0gRXhwbGljaXQ7Ci0gICAgICAg
IGVsc2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCi0gICAgICAgICAgICBtb2RlID0gRmFsbGJh
Y2s7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdPUks6IikKLSAgICAgICAgICAgIG1v
ZGUgPSBPbmxpbmVBbGxvd2xpc3Q7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUuZW5kc1dpdGgoJzon
KSkKLSAgICAgICAgICAgIG1vZGUgPSBVbmtub3duOwotICAgICAgICBlbHNlIGlmIChtb2RlID09
IFVua25vd24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxzZSBpZiAobW9kZSA9
PSBFeHBsaWNpdCB8fCBtb2RlID09IE9ubGluZUFsbG93bGlzdCkgewotICAgICAgICAgICAgYXV0
byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5lKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0gdXBjb252ZXJ0ZWRM
aW5lQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lRW5kID0gcCArIGxp
bmUubGVuZ3RoKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRl
c3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4K
LSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcg
JykgCi0gICAgICAgICAgICAgICAgcCsrOwotCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBPbmxp
bmVBbGxvd2xpc3QgJiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPT0gMSAmJiBsaW5l
WzBdID09ICcqJykgewotICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdhcyBmb3VuZC4KLSAg
ICAgICAgICAgICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChidWZm
ZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICFpc01hbmlmZXN0V2hpdGVzcGFjZU9yTmV3
bGluZSgqYnVmZmVyKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAg
ICAgICAgIFVSTCB1cmwobWFuaWZlc3RVUkwsIGxpbmUuc3Vic3RyaW5nKDAsIHAgLSB1cGNvbnZl
cnRlZExpbmVDaGFyYWN0ZXJzKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghdXJs
LmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gU2tpcCB0
byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwg
aXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CiAKLSAgICAgICAgICAgIHVybC5yZW1vdmVGcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIC8vIFNr
aXAgd2hpdGVzcGFjZQorICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFu
aWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lPihidWZmZXIpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1hbmlmZXN0
VVJMLnByb3RvY29sKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgICAgICBhdXRvIGxpbmVTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBFeHBsaWNpdCAmJiBtYW5pZmVzdFVSTC5w
cm90b2NvbElzKCJodHRwcyIpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZl
c3RVUkwsIHVybCkpCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAg
ICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0TmV3bGluZT4oYnVm
ZmVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTGluZSBpcyBhIGNvbW1lbnQsIHNr
aXAgdG8gdGhlIG5leHQgbGluZS4KKyAgICAgICAgICAgIGlmICgqbGluZVN0YXJ0ID09ICcjJykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KG1vZGUgPT0gRXhwbGljaXQpCi0gICAgICAgICAgICAgICAgbWFuaWZlc3QuZXhwbGljaXRVUkxz
LmFkZCh1cmwuc3RyaW5nKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1h
bmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVuZCh1cmwpOworICAgICAgICAgICAgLy8gR2V0
IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAKLSAgICAgICAgfSBlbHNl
IGlmIChtb2RlID09IEZhbGxiYWNrKSB7Ci0gICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGlu
ZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzOwot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5n
IHRoZSB0d28gVVJMcwotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdc
dCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICBhdXRv
IGxpbmVFbmQgPSBidWZmZXIucG9zaXRpb24oKTsKKyAgICAgICAgICAgIHJldmVyc2VTa2lwV2hp
bGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVFbmQsIGxpbmVTdGFy
dCk7CisKKyAgICAgICAgICAgIGF1dG8gbGluZUJ1ZmZlciA9IFN0cmluZ1BhcnNpbmdCdWZmZXIg
eyBsaW5lU3RhcnQsIGxpbmVFbmQgfTsKKworICAgICAgICAgICAgaWYgKGxpbmVCdWZmZXJbbGlu
ZUJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSAtIDFdID09ICc6JykgeworICAgICAgICAgICAgICAg
IGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkobGluZUJ1ZmZlciwgY2FjaGVNb2RlSWRlbnRpZmll
cjxDaGFyYWN0ZXJUeXBlPikgJiYgbGluZUJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9kZTo6
RXhwbGljaXQ7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGxpbmVCdWZmZXIs
IGZhbGxiYWNrTW9kZUlkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVu
Z3RoUmVtYWluaW5nKCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGlj
YXRpb25DYWNoZVBhcnNlck1vZGU6OkZhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBDaGFyYWN0
ZXJzRXhhY3RseShsaW5lQnVmZmVyLCBuZXR3b3JrTW9kZUlkZW50aWZpZXI8Q2hhcmFjdGVyVHlw
ZT4pICYmIGxpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0gMSkgeworICAgICAgICAgICAg
ICAgICAgICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6Ok9ubGluZUFsbG93bGlz
dDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAocCA9PSBsaW5lRW5kKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUg
d2FzIG5vIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMcy4KKyAgICAgICAgICAgICAgICAv
LyBJZiB0aGUgbGluZSAoZXhjbHVkaW5nIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlKSBlbmRzIHdp
dGggYSAnOicgYW5kIGlzbid0IG9uZSBvZiB0aGUga25vd24gbW9kZQorICAgICAgICAgICAgICAg
IC8vIGhlYWRlcnMsIHRyYW5zaXRpb24gdG8gdGhlICdVbmtub3duJyBtb2RlLgorICAgICAgICAg
ICAgICAgIG1vZGUgPSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9kZTo6VW5rbm93bjsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHN3
aXRjaCAobW9kZSkgeworICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9k
ZTo6VW5rbm93bjoKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgbGluZS5zdWJzdHJpbmcoMCwg
cCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMpKTsKLSAgICAgICAgICAgIGlmICghbmFtZXNw
YWNlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNl
ck1vZGU6OkV4cGxpY2l0OiB7CisgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFj
ZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgorICAg
ICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFj
ZT4obGluZUJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBhdXRvIHVybCA9IG1ha2VNYW5pZmVz
dFVSTChtYW5pZmVzdFVSTCwgbGluZVN0YXJ0LCBsaW5lQnVmZmVyLnBvc2l0aW9uKCkpOworICAg
ICAgICAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgpLCBtYW5pZmVzdFVSTC5wcm90b2NvbCgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKG1hbmlmZXN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgdXJsKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbWFuaWZlc3QuZXhw
bGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgbmFtZXNwYWNlVVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChtYW5pZmVzdFVSTCwgbmFtZXNwYWNlVVJMKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6Ok9ubGluZUFsbG93
bGlzdDogeworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGlu
ZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4KKyAgICAgICAgICAgICAg
ICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZm
ZXIpOworCisgICAgICAgICAgICAgICAgaWYgKGxpbmVCdWZmZXIucG9zaXRpb24oKSAtIGxpbmVT
dGFydCA9PSAxICYmICpsaW5lU3RhcnQgPT0gJyonKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFdpbGRjYXJkIHdhcyBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QuYWxsb3dB
bGxOZXR3b3JrUmVxdWVzdHMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0
byB1cmwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZl
ci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwgbWFuaWZlc3RV
UkwucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICAvLyBBbHRob3VnaCA8aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
b2ZmbGluZS5odG1sI3BhcnNpbmctY2FjaGUtbWFuaWZlc3RzPiAoMDcvMDYvMjAxNykgc2FpZHMK
LSAgICAgICAgICAgIC8vIHRoYXQgd2Ugc2hvdWxkIGFsd2F5cyBwcmVmaXggbWF0Y2ggdGhlIG1h
bmlmZXN0IHBhdGggd2Ugb25seSBkbyBzbyBpZiB0aGUgbWFuaWZlc3Qgd2FzIHNlcnZlZCB3aXRo
IGEgbm9uLQotICAgICAgICAgICAgLy8gc3RhbmRhcmQgSFRUUCBDb250ZW50LVR5cGUgaGVhZGVy
IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgIGlmICghYWxsb3dGYWxsYmFja05h
bWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCAmJiAhbmFtZXNwYWNlVVJMLnBhdGgoKS5zdGFydHNX
aXRoKG1hbmlmZXN0UGF0aCkpCisgICAgICAgICAgICAgICAgbWFuaWZlc3Qub25saW5lQWxsb3dl
ZFVSTHMuYXBwZW5kKHVybCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNl
ck1vZGU6OkZhbGxiYWNrOiB7CisgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFj
ZSBzZXBhcmF0aW5nIHRoZSB0d28gVVJMcworICAgICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFy
YWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CiAKLSAgICAgICAg
ICAgIC8vIFNraXAgd2hpdGVzcGFjZSBzZXBhcmF0aW5nIGZhbGxiYWNrIG5hbWVzcGFjZSBmcm9t
IFVSTC4KLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAoKnAgPT0gJ1x0JyB8fCAq
cCA9PSAnICcpKQotICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICBpZiAobGlu
ZUJ1ZmZlci5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBubyB3
aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTHMuCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVz
cGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGZhbGxiYWNrU3RhcnQgPSBwOwotICAgICAgICAgICAg
d2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAg
ICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgYXV0byBuYW1lc3BhY2VVUkwgPSBtYWtlTWFu
aWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZlci5wb3NpdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW5hbWVzcGFjZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBVUkwgZmFsbGJhY2tVUkwobWFuaWZl
c3RVUkwsIFN0cmluZyhmYWxsYmFja1N0YXJ0LCBwIC0gZmFsbGJhY2tTdGFydCkpOwotICAgICAg
ICAgICAgaWYgKCFmYWxsYmFja1VSTC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBmYWxsYmFja1VSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVz
dFVSTCwgbmFtZXNwYWNlVVJMKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1hbmlmZXN0VVJMLCBm
YWxsYmFja1VSTCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
Ly8gQWx0aG91Z2ggPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29mZmxp
bmUuaHRtbCNwYXJzaW5nLWNhY2hlLW1hbmlmZXN0cz4gKDA3LzA2LzIwMTcpIHNhaWRzCisgICAg
ICAgICAgICAgICAgLy8gdGhhdCB3ZSBzaG91bGQgYWx3YXlzIHByZWZpeCBtYXRjaCB0aGUgbWFu
aWZlc3QgcGF0aCB3ZSBvbmx5IGRvIHNvIGlmIHRoZSBtYW5pZmVzdCB3YXMgc2VydmVkIHdpdGgg
YSBub24tCisgICAgICAgICAgICAgICAgLy8gc3RhbmRhcmQgSFRUUCBDb250ZW50LVR5cGUgaGVh
ZGVyIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAgICBpZiAoIWFsbG93RmFs
bGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuZmVzdFBhdGggJiYgIW5hbWVzcGFjZVVSTC5wYXRoKCku
c3RhcnRzV2l0aChtYW5pZmVzdFBhdGgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZSBzZXBhcmF0aW5nIGZhbGxiYWNr
IG5hbWVzcGFjZSBmcm9tIFVSTC4KKyAgICAgICAgICAgICAgICBza2lwV2hpbGU8Q2hhcmFjdGVy
VHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAgICAgICAgICAg
ICAgYXV0byBmYWxsYmFja1N0YXJ0ID0gbGluZUJ1ZmZlci5wb3NpdGlvbigpOworCisgICAgICAg
ICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBz
dWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgorICAgICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFy
YWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CisKKyAgICAgICAg
ICAgICAgICBhdXRvIGZhbGxiYWNrVVJMID0gbWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBm
YWxsYmFja1N0YXJ0LCBsaW5lQnVmZmVyLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGlm
ICghZmFsbGJhY2tVUkwuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgbWFuaWZlc3QuZmFsbGJhY2tVUkxzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihuYW1lc3BhY2VVUkwsIGZhbGxiYWNrVVJMKSk7ICAgICAgICAgICAgCi0gICAgICAgIH0gZWxz
ZSAKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5p
ZmVzdFVSTCwgZmFsbGJhY2tVUkwpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIobmFtZXNwYWNlVVJMLCBmYWxsYmFja1VSTCkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CisgICAgICAgIH0KIAotICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gbWFuaWZlc3Q7CisgICAgfSk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCShyZXZp
c2lvbiAyNjM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTMgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RydWN0IE1hbmlmZXN0IHsKK3N0cnVjdCBBcHBsaWNhdGlvbkNhY2hlTWFu
aWZlc3QgewogICAgIFZlY3RvcjxVUkw+IG9ubGluZUFsbG93ZWRVUkxzOwogICAgIEhhc2hTZXQ8
U3RyaW5nPiBleHBsaWNpdFVSTHM7CiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgZmFsbGJhY2tVUkxz
OwotICAgIGJvb2wgYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7IC8vIFdpbGRjYXJkIGZvdW5kIGlu
IE5FVFdPUksgc2VjdGlvbi4KKyAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVlc3RzIHsgZmFs
c2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9uLgogfTsKIAotYm9vbCBw
YXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZl
c3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmKTsKK09w
dGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFu
aWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVU
eXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403019</attachid>
            <date>2020-06-28 18:02:58 -0700</date>
            <delta_ts>2020-06-28 18:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200628180257.patch</filename>
            <type>text/plain</type>
            <size>20130</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzYyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA2LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVz
dE5ld2xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZU1hbmlmZXN0VVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaDoKKwogMjAyMC0wNi0yNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBpT1MgU2FmYXJpIGluY29ycmVjdGx5
IHJlcG9ydHMgIkFwcGxlQ29yZU1lZGlhIiBhcyBVQSBzdHJpbmcKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2MzYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsOCArODEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCB0eXBlbmFtCiAgICAgICAgICsrcG9zaXRpb247CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIHR5cGVuYW1lIERlbGltaXRlclR5cGU+Ci12b2lkIHNraXBVbnRpbChTdHJp
bmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIERlbGltaXRlclR5cGUgZGVs
aW1pdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRGVsaW1p
dGVyVHlwZT4gdm9pZCBza2lwVW50aWwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyLCBEZWxpbWl0ZXJUeXBlIGRlbGltaXRlcikKIHsKICAgICB3aGlsZSAoYnVmZmVy
Lmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAqYnVmZmVyICE9IGRlbGltaXRlcikKICAgICAg
ICAgKytidWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMjYzNjE5KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwNSw4ICs2MDUsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgTWFuaWZlc3Qg
bWFuaWZlc3Q7Ci0gICAgaWYgKCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZl
c3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSwgbWFuaWZlc3Qp
KSB7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSk7CisgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGlt
ZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMg
dGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQg
bm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CiAg
ICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC02MzUsMTUgKzYzNSwxNSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBleHBsaWNpdFVSTCA6IG1hbmlmZXN0LmV4cGxpY2l0VVJM
cykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGV4cGxpY2l0VVJMIDogbWFuaWZlc3QtPmV4cGxpY2l0
VVJMcykKICAgICAgICAgYWRkRW50cnkoZXhwbGljaXRVUkwsIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6RXhwbGljaXQpOwogCi0gICAgZm9yIChhdXRvJiBmYWxsYmFja1VSTCA6IG1hbmlmZXN0
LmZhbGxiYWNrVVJMcykKKyAgICBmb3IgKGF1dG8mIGZhbGxiYWNrVVJMIDogbWFuaWZlc3QtPmZh
bGxiYWNrVVJMcykKICAgICAgICAgYWRkRW50cnkoZmFsbGJhY2tVUkwuc2Vjb25kLnN0cmluZygp
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKTsKICAgICAKLSAgICBtX2NhY2hl
QmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3Qub25saW5lQWxsb3dlZFVS
THMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEZhbGxiYWNrVVJMcyhtYW5pZmVzdC5m
YWxsYmFja1VSTHMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5ldHdv
cmtSZXF1ZXN0cyhtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7CisgICAgbV9jYWNo
ZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lQWxsb3dsaXN0KG1hbmlmZXN0LT5vbmxpbmVBbGxvd2Vk
VVJMcyk7CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0
LT5mYWxsYmFja1VSTHMpOworICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5l
dHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC0+YWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMpOwogCiAgICAg
bV9wcm9ncmVzc1RvdGFsID0gbV9wZW5kaW5nRW50cmllcy5zaXplKCk7CiAgICAgbV9wcm9ncmVz
c0RvbmUgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwx
NCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNl
ci5oIgogCisjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
LSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25saW5lQWxsb3dsaXN0
LCBVbmtub3duIH07CitlbnVtIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlIHsgRXhw
bGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsKIAogc3RhdGljIFN0
cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpCiB7CkBAIC00NCwx
NjAgKzQ1LDE5MiBAQCBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMCiAg
ICAgcmV0dXJuIG1hbmlmZXN0UGF0aDsKIH0KIAotYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFuaWZlc3RXaGl0ZXNw
YWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewotICAgIEFTU0VSVChtYW5pZmVzdC5leHBs
aWNpdFVSTHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3Qub25saW5lQWxsb3dlZFVS
THMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3QuZmFsbGJhY2tVUkxzLmlzRW1wdHko
KSk7Ci0gICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSBmYWxzZTsKKyAgICBy
ZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsKK30KIAotICAgIGF1
dG8gbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc01h
bmlmZXN0TmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gY2hh
cmFjdGVyID09ICdcbicgfHwgY2hhcmFjdGVyID09ICdccic7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc01hbmlmZXN0V2hpdGVz
cGFjZU9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAgICByZXR1cm4gaXNN
YW5pZmVzdFdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBpc01hbmlmZXN0TmV3bGluZShjaGFyYWN0
ZXIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgVVJMIG1h
a2VNYW5pZmVzdFVSTChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBDaGFyYWN0ZXJUeXBl
KiBzdGFydCwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQoreworICAgIFVSTCB1cmwobWFuaWZl
c3RVUkwsIFN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgICB1cmwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hlTWFuaWZl
c3RJZGVudGlmaWVyW10gPSB7ICdDJywgJ0EnLCAnQycsICdIJywgJ0UnLCAnICcsICdNJywgJ0En
LCAnTicsICdJJywgJ0YnLCAnRScsICdTJywgJ1QnIH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgY2FjaGVNb2RlSWRlbnRp
ZmllcltdID0geyAnQycsICdBJywgJ0MnLCAnSCcsICdFJyB9OwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGZhbGxiYWNrTW9k
ZUlkZW50aWZpZXJbXSA9IHsgJ0YnLCAnQScsICdMJywgJ0wnLCAnQicsICdBJywgJ0MnLCAnSycg
fTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hh
cmFjdGVyVHlwZSBuZXR3b3JrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ04nLCAnRScsICdUJywgJ1cn
LCAnTycsICdSJywgJ0snIH07CiAKLSAgICBjb25zdCBjaGFyIGNhY2hlTWFuaWZlc3RNSU1FVHlw
ZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOworT3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0
VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGNhY2hlTWFuaWZl
c3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJvb2wgYWxsb3dGYWxs
YmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlwZSk7CisgICAgYXV0
byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOwogCi0g
ICAgTW9kZSBtb2RlID0gRXhwbGljaXQ7CisgICAgYXV0byBtYW5pZmVzdFN0cmluZyA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNh
Y2hlTWFuaWZlc3RNSU1FVHlwZSksICJVVEYtOCIpLT5kZWNvZGVBbmRGbHVzaChkYXRhLCBsZW5n
dGgpOwogCi0gICAgU3RyaW5nIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVzdE1JTUVU
eXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisgICAgcmV0dXJu
IHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhtYW5pZmVzdFN0cmluZywgWyZdKGF1dG8gYnVmZmVy
KSAtPiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHsKKyAgICAgICAgdXNpbmcg
Q2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNoYXJhY3RlclR5cGU7
CiAgICAgCi0gICAgLy8gTG9vayBmb3IgdGhlIG1hZ2ljIHNpZ25hdHVyZTogIl5ceEZFRkY/Q0FD
SEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJlbW92ZWQgYnkgVGV4dFJlc291cmNlRGVj
b2RlcikuCi0gICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21tZW50IiBpcyBhIHZh
bGlkIHNpZ25hdHVyZS4KLSAgICAvLyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1Q7VjIiIGlzIG5v
dC4KLSAgICBjb25zdCBjaGFyIG1hbmlmZXN0U2lnbmF0dXJlW10gPSAiQ0FDSEUgTUFOSUZFU1Qi
OwotICAgIGlmICghbWFuaWZlc3RTdHJpbmcuc3RhcnRzV2l0aChtYW5pZmVzdFNpZ25hdHVyZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
IG1hbmlmZXN0OworICAgICAgICBhdXRvIG1vZGUgPSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9k
ZTo6RXhwbGljaXQ7CisKKyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG1hZ2ljIHNpZ25hdHVyZTog
Il5ceEZFRkY/Q0FDSEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJlbW92ZWQgYnkgVGV4
dFJlc291cmNlRGVjb2RlcikuCisgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNIRSBNQU5JRkVTVCAj
Y29tbWVudCIgaXMgYSB2YWxpZCBzaWduYXR1cmUuCisgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNI
RSBNQU5JRkVTVDtWMiIgaXMgbm90LgorICAgICAgICBpZiAoIXNraXBDaGFyYWN0ZXJzRXhhY3Rs
eShidWZmZXIsIGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyPENoYXJhY3RlclR5cGU+KSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5nVmlldyBtYW5pZmVz
dEFmdGVyU2lnbmF0dXJlID0gU3RyaW5nVmlldyhtYW5pZmVzdFN0cmluZykuc3Vic3RyaW5nKHNp
emVvZihtYW5pZmVzdFNpZ25hdHVyZSkgLSAxKTsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFj
dGVycyA9IG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0g
ICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNo
YXIqIGVuZCA9IHAgKyBtYW5pZmVzdEFmdGVyU2lnbmF0dXJlLmxlbmd0aCgpOwotCi0gICAgaWYg
KHAgPCBlbmQgJiYgKnAgIT0gJyAnICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJ1xuJyAmJiAqcCAh
PSAnXHInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBTa2lwIHRvIHRoZSBlbmQg
b2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xyJyAmJiAqcCAhPSAn
XG4nKQotICAgICAgICBwKys7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBTa2lwIHdo
aXRlc3BhY2UKLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwID09ICdcbicgfHwgKnAgPT0g
J1xyJyB8fCAqcCA9PSAnICcgfHwgKnAgPT0gJ1x0JykpCi0gICAgICAgICAgICBwKys7Ci0gICAg
ICAgIAotICAgICAgICBpZiAocCA9PSBlbmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lU3RhcnQgPSBwOwotICAgICAgICAKLSAgICAgICAg
Ly8gRmluZCB0aGUgZW5kIG9mIHRoZSBsaW5lCi0gICAgICAgIHdoaWxlIChwIDwgZW5kICYmICpw
ICE9ICdccicgJiYgKnAgIT0gJ1xuJykKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgCi0gICAg
ICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjb21tZW50Ci0gICAgICAgIGlmICgqbGluZVN0YXJ0
ID09ICcjJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gR2V0
IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCi0gICAgICAgIGNvbnN0IFVDaGFyKiB0bXAgPSBw
IC0gMTsKLSAgICAgICAgd2hpbGUgKHRtcCA+IGxpbmVTdGFydCAmJiAoKnRtcCA9PSAnICcgfHwg
KnRtcCA9PSAnXHQnKSkKLSAgICAgICAgICAgIHRtcC0tOwotICAgICAgICAKLSAgICAgICAgU3Ry
aW5nIGxpbmUobGluZVN0YXJ0LCB0bXAgLSBsaW5lU3RhcnQgKyAxKTsKLQotICAgICAgICBpZiAo
bGluZSA9PSAiQ0FDSEU6IikgCi0gICAgICAgICAgICBtb2RlID0gRXhwbGljaXQ7Ci0gICAgICAg
IGVsc2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCi0gICAgICAgICAgICBtb2RlID0gRmFsbGJh
Y2s7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdPUks6IikKLSAgICAgICAgICAgIG1v
ZGUgPSBPbmxpbmVBbGxvd2xpc3Q7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUuZW5kc1dpdGgoJzon
KSkKLSAgICAgICAgICAgIG1vZGUgPSBVbmtub3duOwotICAgICAgICBlbHNlIGlmIChtb2RlID09
IFVua25vd24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxzZSBpZiAobW9kZSA9
PSBFeHBsaWNpdCB8fCBtb2RlID09IE9ubGluZUFsbG93bGlzdCkgewotICAgICAgICAgICAgYXV0
byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5lKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0gdXBjb252ZXJ0ZWRM
aW5lQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lRW5kID0gcCArIGxp
bmUubGVuZ3RoKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRl
c3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4K
LSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcg
JykgCi0gICAgICAgICAgICAgICAgcCsrOwotCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBPbmxp
bmVBbGxvd2xpc3QgJiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPT0gMSAmJiBsaW5l
WzBdID09ICcqJykgewotICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdhcyBmb3VuZC4KLSAg
ICAgICAgICAgICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChidWZm
ZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICFpc01hbmlmZXN0V2hpdGVzcGFjZU9yTmV3
bGluZSgqYnVmZmVyKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAg
ICAgICAgIFVSTCB1cmwobWFuaWZlc3RVUkwsIGxpbmUuc3Vic3RyaW5nKDAsIHAgLSB1cGNvbnZl
cnRlZExpbmVDaGFyYWN0ZXJzKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghdXJs
LmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gU2tpcCB0
byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwg
aXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CiAKLSAgICAgICAgICAgIHVybC5yZW1vdmVGcmFn
bWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIC8vIFNr
aXAgd2hpdGVzcGFjZQorICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFu
aWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lPihidWZmZXIpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1hbmlmZXN0
VVJMLnByb3RvY29sKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgICAgICBhdXRvIGxpbmVTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBFeHBsaWNpdCAmJiBtYW5pZmVzdFVSTC5w
cm90b2NvbElzKCJodHRwcyIpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZl
c3RVUkwsIHVybCkpCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAg
ICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0TmV3bGluZT4oYnVm
ZmVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTGluZSBpcyBhIGNvbW1lbnQsIHNr
aXAgdG8gdGhlIG5leHQgbGluZS4KKyAgICAgICAgICAgIGlmICgqbGluZVN0YXJ0ID09ICcjJykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYg
KG1vZGUgPT0gRXhwbGljaXQpCi0gICAgICAgICAgICAgICAgbWFuaWZlc3QuZXhwbGljaXRVUkxz
LmFkZCh1cmwuc3RyaW5nKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1h
bmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVuZCh1cmwpOworICAgICAgICAgICAgLy8gR2V0
IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAKLSAgICAgICAgfSBlbHNl
IGlmIChtb2RlID09IEZhbGxiYWNrKSB7Ci0gICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGlu
ZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzOwot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5n
IHRoZSB0d28gVVJMcwotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdc
dCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICBhdXRv
IGxpbmVFbmQgPSBidWZmZXIucG9zaXRpb24oKSAtIDE7CisgICAgICAgICAgICByZXZlcnNlU2tp
cFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lRW5kLCBsaW5l
U3RhcnQpOworCisgICAgICAgICAgICBhdXRvIGxpbmVCdWZmZXIgPSBTdHJpbmdQYXJzaW5nQnVm
ZmVyIHsgbGluZVN0YXJ0LCBsaW5lRW5kIH07CisKKyAgICAgICAgICAgIGlmIChsaW5lQnVmZmVy
W2xpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgLSAxXSA9PSAnOicpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGxpbmVCdWZmZXIsIGNhY2hlTW9kZUlkZW50
aWZpZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0g
MSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1v
ZGU6OkV4cGxpY2l0OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShsaW5lQnVm
ZmVyLCBmYWxsYmFja01vZGVJZGVudGlmaWVyPENoYXJhY3RlclR5cGU+KSAmJiBsaW5lQnVmZmVy
Lmxlbmd0aFJlbWFpbmluZygpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IEFw
cGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpGYWxsYmFjazsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChza2lwQ2hh
cmFjdGVyc0V4YWN0bHkobGluZUJ1ZmZlciwgbmV0d29ya01vZGVJZGVudGlmaWVyPENoYXJhY3Rl
clR5cGU+KSAmJiBsaW5lQnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID09IDEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbW9kZSA9IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpPbmxpbmVBbGxv
d2xpc3Q7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKHAgPT0gbGluZUVuZCkgewotICAgICAgICAgICAgICAgIC8vIFRo
ZXJlIHdhcyBubyB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTHMuCisgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIGxpbmUgKGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZSkgZW5k
cyB3aXRoIGEgJzonIGFuZCBpc24ndCBvbmUgb2YgdGhlIGtub3duIG1vZGUKKyAgICAgICAgICAg
ICAgICAvLyBoZWFkZXJzLCB0cmFuc2l0aW9uIHRvIHRoZSAnVW5rbm93bicgbW9kZS4KKyAgICAg
ICAgICAgICAgICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6OlVua25vd247CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAg
ICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNl
ck1vZGU6OlVua25vd246CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFVSTCBuYW1lc3BhY2VVUkwobWFuaWZlc3RVUkwsIGxpbmUuc3Vic3RyaW5n
KDAsIHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzKSk7Ci0gICAgICAgICAgICBpZiAoIW5h
bWVzcGFjZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVQ
YXJzZXJNb2RlOjpFeHBsaWNpdDogeworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRl
c3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4K
KyAgICAgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRl
c3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAgICAgICAgICAgICAgYXV0byB1cmwgPSBtYWtlTWFu
aWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZlci5wb3NpdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwgbWFuaWZlc3RVUkwucHJvdG9jb2woKSkp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGlmIChtYW5pZmVzdFVSTC5wcm90b2NvbElzKCJodHRwcyIpICYmICFwcm90b2Nv
bEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIHVybCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1hbmlmZXN0
LmV4cGxpY2l0VVJMcy5hZGQodXJsLnN0cmluZygpKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIG5hbWVzcGFjZVVSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsK
KyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwobWFuaWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpPbmxpbmVB
bGxvd2xpc3Q6IHsKKyAgICAgICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFy
YXRpbmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVlbnQgaWdub3JlZCB0b2tlbnMuCisgICAgICAgICAg
ICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5l
QnVmZmVyKTsKKworICAgICAgICAgICAgICAgIGlmIChsaW5lQnVmZmVyLnBvc2l0aW9uKCkgLSBs
aW5lU3RhcnQgPT0gMSAmJiAqbGluZVN0YXJ0ID09ICcqJykgeworICAgICAgICAgICAgICAgICAg
ICAvLyBXaWxkY2FyZCB3YXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0LmFs
bG93QWxsTmV0d29ya1JlcXVlc3RzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGF1dG8gdXJsID0gbWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBsaW5lU3RhcnQsIGxpbmVC
dWZmZXIucG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1hbmlm
ZXN0VVJMLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgLy8gQWx0aG91Z2ggPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL29mZmxpbmUuaHRtbCNwYXJzaW5nLWNhY2hlLW1hbmlmZXN0cz4gKDA3LzA2LzIwMTcpIHNh
aWRzCi0gICAgICAgICAgICAvLyB0aGF0IHdlIHNob3VsZCBhbHdheXMgcHJlZml4IG1hdGNoIHRo
ZSBtYW5pZmVzdCBwYXRoIHdlIG9ubHkgZG8gc28gaWYgdGhlIG1hbmlmZXN0IHdhcyBzZXJ2ZWQg
d2l0aCBhIG5vbi0KLSAgICAgICAgICAgIC8vIHN0YW5kYXJkIEhUVFAgQ29udGVudC1UeXBlIGhl
YWRlciBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICBpZiAoIWFsbG93RmFsbGJh
Y2tOYW1lc3BhY2VPdXRzaWRlTWFuZmVzdFBhdGggJiYgIW5hbWVzcGFjZVVSTC5wYXRoKCkuc3Rh
cnRzV2l0aChtYW5pZmVzdFBhdGgpKQorICAgICAgICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZUFs
bG93ZWRVUkxzLmFwcGVuZCh1cmwpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVQ
YXJzZXJNb2RlOjpGYWxsYmFjazogeworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRl
c3BhY2Ugc2VwYXJhdGluZyB0aGUgdHdvIFVSTHMKKyAgICAgICAgICAgICAgICBza2lwVW50aWw8
Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOwogCi0gICAg
ICAgICAgICAvLyBTa2lwIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyBmYWxsYmFjayBuYW1lc3BhY2Ug
ZnJvbSBVUkwuCi0gICAgICAgICAgICB3aGlsZSAocCA8IGxpbmVFbmQgJiYgKCpwID09ICdcdCcg
fHwgKnAgPT0gJyAnKSkKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgaWYg
KGxpbmVCdWZmZXIuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSB3YXMg
bm8gd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkxzLgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIExvb2sgZm9yIHdo
aXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vu
cy4KLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBmYWxsYmFja1N0YXJ0ID0gcDsKLSAgICAgICAg
ICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcgJykgCi0gICAg
ICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIGF1dG8gbmFtZXNwYWNlVVJMID0gbWFr
ZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBsaW5lU3RhcnQsIGxpbmVCdWZmZXIucG9zaXRpb24o
KSk7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lc3BhY2VVUkwuaXNWYWxpZCgpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgVVJMIGZhbGxiYWNrVVJMKG1h
bmlmZXN0VVJMLCBTdHJpbmcoZmFsbGJhY2tTdGFydCwgcCAtIGZhbGxiYWNrU3RhcnQpKTsKLSAg
ICAgICAgICAgIGlmICghZmFsbGJhY2tVUkwuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgZmFsbGJhY2tVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFu
aWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVS
TCwgZmFsbGJhY2tVUkwpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIC8vIEFsdGhvdWdoIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9v
ZmZsaW5lLmh0bWwjcGFyc2luZy1jYWNoZS1tYW5pZmVzdHM+ICgwNy8wNi8yMDE3KSBzYWlkcwor
ICAgICAgICAgICAgICAgIC8vIHRoYXQgd2Ugc2hvdWxkIGFsd2F5cyBwcmVmaXggbWF0Y2ggdGhl
IG1hbmlmZXN0IHBhdGggd2Ugb25seSBkbyBzbyBpZiB0aGUgbWFuaWZlc3Qgd2FzIHNlcnZlZCB3
aXRoIGEgbm9uLQorICAgICAgICAgICAgICAgIC8vIHN0YW5kYXJkIEhUVFAgQ29udGVudC1UeXBl
IGhlYWRlciBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAgICAgaWYgKCFhbGxv
d0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRoICYmICFuYW1lc3BhY2VVUkwucGF0
aCgpLnN0YXJ0c1dpdGgobWFuaWZlc3RQYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgICAgICAvLyBTa2lwIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyBmYWxs
YmFjayBuYW1lc3BhY2UgZnJvbSBVUkwuCisgICAgICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJh
Y3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVyKTsKKworICAgICAgICAg
ICAgICAgIGF1dG8gZmFsbGJhY2tTdGFydCA9IGxpbmVCdWZmZXIucG9zaXRpb24oKTsKKworICAg
ICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZy
b20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4KKyAgICAgICAgICAgICAgICBza2lwVW50aWw8
Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAg
ICAgICAgICAgICAgYXV0byBmYWxsYmFja1VSTCA9IG1ha2VNYW5pZmVzdFVSTChtYW5pZmVzdFVS
TCwgZmFsbGJhY2tTdGFydCwgbGluZUJ1ZmZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIobmFtZXNwYWNlVVJMLCBmYWxsYmFja1VSTCkpOyAgICAgICAgICAgIAotICAgICAgICB9
IGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
bWFuaWZlc3RVUkwsIGZhbGxiYWNrVVJMKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBtYW5pZmVzdC5mYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKG5hbWVzcGFjZVVSTCwgZmFsbGJhY2tVUkwpKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAgICAgICB9CiAKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1hbmlmZXN0OworICAgIH0pOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAko
cmV2aXNpb24gMjYzNjE5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBNYW5pZmVzdCB7CitzdHJ1Y3QgQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0IHsKICAgICBWZWN0b3I8VVJMPiBvbmxpbmVBbGxvd2VkVVJMczsKICAgICBIYXNo
U2V0PFN0cmluZz4gZXhwbGljaXRVUkxzOwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIGZhbGxiYWNr
VVJMczsKLSAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVlc3RzOyAvLyBXaWxkY2FyZCBmb3Vu
ZCBpbiBORVRXT1JLIHNlY3Rpb24uCisgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyB7
IGZhbHNlIH07IC8vIFdpbGRjYXJkIGZvdW5kIGluIE5FVFdPUksgc2VjdGlvbi4KIH07CiAKLWJv
b2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1h
bmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0Jik7
CitPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RN
SU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403023</attachid>
            <date>2020-06-28 18:30:19 -0700</date>
            <delta_ts>2020-06-28 20:21:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200628183018.patch</filename>
            <type>text/plain</type>
            <size>21225</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA2LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVuYW1lcyBwYXJzZU1hbmlm
ZXN0IHRvIHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHRvIGRpZmZlcmVudGlhdGUgYmV0
d2VlbiB0aGUgbWFuaWZlc3QKKyAgICAgICAgICBmb3IgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGFu
ZCB0aGUgImFwcGxpY2F0aW9uIG1hbmlmZXN0Iiwgd2hpY2ggaXMgYSBkaWZmZXJlbnQgdGhpbmcg
ZW50aXJlbHkuCisgICAgICAgICAgQWxzbyByZW5hbWVzIHRoZSBjb250YWluZXIgc3RydWN0IGZy
b20gYmVpbmcgY2FsbGVkIE1hbmlmZXN0IHRvIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC4KKyAg
ICAgICAgICAoVGhlIGZpbGUgc2hvdWxkIGJlIHJlbmFtZWQgYXMgd2VsbCwgYnV0IHdpbGwgZG8g
dGhhdCBpbiBhIHNlcGVyYXRlIHBhc3MpLiAKKyAgICAgICAgLSBVcGRhdGUgcGFyc2VyIHRvIHJl
dHVybiBhbiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHJhdGhlciB0aGFuIHVz
aW5nIGJvb2wgKyBvdXQKKyAgICAgICAgICBwYXJhbWV0ZXIuCisgICAgICAgIC0gQWRvcHQgcmVh
ZENoYXJhY3RlcnNGb3JQYXJzaW5nIHRvIHJlcGxhY2UgdW5uZWNlc3NhcnkgY2FsbCB0byBTdHJp
bmdWaWV3Ojp1cGNvbnZlcnRlZENoYXJhY3RlcnMoKS4KKyAgICAgICAgLSBBZG9wdCBTdHJpbmdQ
YXJzaW5nQnVmZmVyIGFuZCBQYXJzaW5nVXRpbGl0aWVzIGFsb25nIHdpdGggc29tZSByZWZpbmVt
ZW50cyB0byB0aGUgY29kZQorICAgICAgICAgIHRvIG1ha2UgdGhlIGludGVudCBtb3JlIGNsZWFy
LgorCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpza2lwVW50aWwpOgorICAgICAgICBGaXggZm9ybWF0dGluZywgcHV0dGluZyB0
aGUgd2hvbGUgc2lnbmF0dXJlIG9uIG9uZSBsaW5lLgorCisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIFVwZGF0
ZSBmb3IgbmV3IHBhcnNlciBmdW5jdGlvbiBuYW1lIGFuZCBPcHRpb25hbCByZXR1cm4gdHlwZS4K
KworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc01hbmlmZXN0V2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc01h
bmlmZXN0TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjppc01hbmlmZXN0V2hpdGVzcGFjZU9y
TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlTWFuaWZlc3RVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oOgorICAgICAgICBVcGRhdGUgcGFyc2luZyBsb2dp
YyB0byB1c2UgcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nICh0byBhdm9pZCB1cGNvbnZlc2lvbikg
YW5kIHJld29yaworICAgICAgICB1c2luZyBTdHJpbmdQYXJzaW5nQnVmZmVyL1BhcnNpbmdVdGls
aXRpZXMgdG8gbWFrZSB0aGluZ3MgbW9yZSBjbGVhci4KKwogMjAyMC0wNi0yOCAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRqdXN0IHRhYmxl
IGNvbnRlbnQgdmVydGljYWwgcG9zaXRpb24gdG8gbWF0Y2ggdmVydGljYWwtYWxpZ24KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgJKHJldmlz
aW9uIDI2MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtCiAgICAgICAgICsrcG9zaXRpb247CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIERlbGltaXRlclR5cGU+Ci12b2lkIHNr
aXBVbnRpbChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIERlbGlt
aXRlclR5cGUgZGVsaW1pdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgRGVsaW1pdGVyVHlwZT4gdm9pZCBza2lwVW50aWwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBEZWxpbWl0ZXJUeXBlIGRlbGltaXRlcikKIHsKICAgICB3
aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAqYnVmZmVyICE9IGRlbGlt
aXRlcikKICAgICAgICAgKytidWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24g
MjYzNjE5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNSw4ICs2MDUsOCBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgTWFuaWZlc3QgbWFuaWZlc3Q7Ci0gICAgaWYgKCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSwgbWFuaWZlc3QpKSB7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RS
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAv
LyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBz
aWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFu
aWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklG
RVNUPyJfcyk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC02MzUsMTUgKzYzNSwx
NSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBleHBsaWNpdFVSTCA6IG1hbmlmZXN0
LmV4cGxpY2l0VVJMcykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGV4cGxpY2l0VVJMIDogbWFuaWZl
c3QtPmV4cGxpY2l0VVJMcykKICAgICAgICAgYWRkRW50cnkoZXhwbGljaXRVUkwsIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6RXhwbGljaXQpOwogCi0gICAgZm9yIChhdXRvJiBmYWxsYmFja1VS
TCA6IG1hbmlmZXN0LmZhbGxiYWNrVVJMcykKKyAgICBmb3IgKGF1dG8mIGZhbGxiYWNrVVJMIDog
bWFuaWZlc3QtPmZhbGxiYWNrVVJMcykKICAgICAgICAgYWRkRW50cnkoZmFsbGJhY2tVUkwuc2Vj
b25kLnN0cmluZygpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKTsKICAgICAK
LSAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3Qub25s
aW5lQWxsb3dlZFVSTHMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEZhbGxiYWNrVVJM
cyhtYW5pZmVzdC5mYWxsYmFja1VSTHMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFs
bG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7
CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lQWxsb3dsaXN0KG1hbmlmZXN0LT5v
bmxpbmVBbGxvd2VkVVJMcyk7CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tV
UkxzKG1hbmlmZXN0LT5mYWxsYmFja1VSTHMpOworICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNl
dEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC0+YWxsb3dBbGxOZXR3b3JrUmVxdWVz
dHMpOwogCiAgICAgbV9wcm9ncmVzc1RvdGFsID0gbV9wZW5kaW5nRW50cmllcy5zaXplKCk7CiAg
ICAgbV9wcm9ncmVzc0RvbmUgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjM2MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJN
YW5pZmVzdFBhcnNlci5oIgogCisjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25s
aW5lQWxsb3dsaXN0LCBVbmtub3duIH07CitlbnVtIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVQYXJz
ZXJNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsK
IAogc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwp
CiB7CkBAIC00NCwxNjAgKzQ1LDE5MiBAQCBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgo
Y29uc3QgVVJMCiAgICAgcmV0dXJuIG1hbmlmZXN0UGF0aDsKIH0KIAotYm9vbCBwYXJzZU1hbmlm
ZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlw
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFu
aWZlc3RXaGl0ZXNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewotICAgIEFTU0VSVCht
YW5pZmVzdC5leHBsaWNpdFVSTHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3Qub25s
aW5lQWxsb3dlZFVSTHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3QuZmFsbGJhY2tV
UkxzLmlzRW1wdHkoKSk7Ci0gICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSBm
YWxzZTsKKyAgICByZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsK
K30KIAotICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlm
ZXN0VVJMKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc01hbmlmZXN0TmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAg
ICByZXR1cm4gY2hhcmFjdGVyID09ICdcbicgfHwgY2hhcmFjdGVyID09ICdccic7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc01h
bmlmZXN0V2hpdGVzcGFjZU9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAg
ICByZXR1cm4gaXNNYW5pZmVzdFdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBpc01hbmlmZXN0TmV3
bGluZShjaGFyYWN0ZXIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgVVJMIG1ha2VNYW5pZmVzdFVSTChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdGFydCwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQoreworICAgIFVS
TCB1cmwobWFuaWZlc3RVUkwsIFN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgICB1cmwu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybDsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBl
IGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyW10gPSB7ICdDJywgJ0EnLCAnQycsICdIJywgJ0UnLCAn
ICcsICdNJywgJ0EnLCAnTicsICdJJywgJ0YnLCAnRScsICdTJywgJ1QnIH07Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgY2Fj
aGVNb2RlSWRlbnRpZmllcltdID0geyAnQycsICdBJywgJ0MnLCAnSCcsICdFJyB9OwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBl
IGZhbGxiYWNrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ0YnLCAnQScsICdMJywgJ0wnLCAnQicsICdB
JywgJ0MnLCAnSycgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBj
b25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBuZXR3b3JrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ04nLCAn
RScsICdUJywgJ1cnLCAnTycsICdSJywgJ0snIH07CiAKLSAgICBjb25zdCBjaGFyIGNhY2hlTWFu
aWZlc3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOworT3B0aW9uYWw8QXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBV
UkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
IGNhY2hlTWFuaWZlc3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJv
b2wgYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlw
ZSk7CisgICAgYXV0byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZl
c3RVUkwpOwogCi0gICAgTW9kZSBtb2RlID0gRXhwbGljaXQ7CisgICAgYXV0byBtYW5pZmVzdFN0
cmluZyA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWw6OmZyb21MaXRl
cmFsVW5zYWZlKGNhY2hlTWFuaWZlc3RNSU1FVHlwZSksICJVVEYtOCIpLT5kZWNvZGVBbmRGbHVz
aChkYXRhLCBsZW5ndGgpOwogCi0gICAgU3RyaW5nIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVN
YW5pZmVzdE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhtYW5pZmVzdFN0cmluZywgWyZd
KGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHsKKyAg
ICAgICAgdXNpbmcgQ2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNo
YXJhY3RlclR5cGU7CiAgICAgCi0gICAgLy8gTG9vayBmb3IgdGhlIG1hZ2ljIHNpZ25hdHVyZTog
Il5ceEZFRkY/Q0FDSEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJlbW92ZWQgYnkgVGV4
dFJlc291cmNlRGVjb2RlcikuCi0gICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21t
ZW50IiBpcyBhIHZhbGlkIHNpZ25hdHVyZS4KLSAgICAvLyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZF
U1Q7VjIiIGlzIG5vdC4KLSAgICBjb25zdCBjaGFyIG1hbmlmZXN0U2lnbmF0dXJlW10gPSAiQ0FD
SEUgTUFOSUZFU1QiOwotICAgIGlmICghbWFuaWZlc3RTdHJpbmcuc3RhcnRzV2l0aChtYW5pZmVz
dFNpZ25hdHVyZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0IG1hbmlmZXN0OworICAgICAgICBhdXRvIG1vZGUgPSBBcHBsaWNhdGlvbkNh
Y2hlUGFyc2VyTW9kZTo6RXhwbGljaXQ7CisKKyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG1hZ2lj
IHNpZ25hdHVyZTogIl5ceEZFRkY/Q0FDSEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJl
bW92ZWQgYnkgVGV4dFJlc291cmNlRGVjb2RlcikuCisgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNI
RSBNQU5JRkVTVCAjY29tbWVudCIgaXMgYSB2YWxpZCBzaWduYXR1cmUuCisgICAgICAgIC8vIEV4
YW1wbGU6ICJDQUNIRSBNQU5JRkVTVDtWMiIgaXMgbm90LgorICAgICAgICBpZiAoIXNraXBDaGFy
YWN0ZXJzRXhhY3RseShidWZmZXIsIGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyPENoYXJhY3RlclR5
cGU+KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5n
VmlldyBtYW5pZmVzdEFmdGVyU2lnbmF0dXJlID0gU3RyaW5nVmlldyhtYW5pZmVzdFN0cmluZyku
c3Vic3RyaW5nKHNpemVvZihtYW5pZmVzdFNpZ25hdHVyZSkgLSAxKTsKLSAgICBhdXRvIHVwY29u
dmVydGVkQ2hhcmFjdGVycyA9IG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0g
ICAgY29uc3QgVUNoYXIqIGVuZCA9IHAgKyBtYW5pZmVzdEFmdGVyU2lnbmF0dXJlLmxlbmd0aCgp
OwotCi0gICAgaWYgKHAgPCBlbmQgJiYgKnAgIT0gJyAnICYmICpwICE9ICdcdCcgJiYgKnAgIT0g
J1xuJyAmJiAqcCAhPSAnXHInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBTa2lw
IHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xy
JyAmJiAqcCAhPSAnXG4nKQotICAgICAgICBwKys7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAg
ICAvLyBTa2lwIHdoaXRlc3BhY2UKLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwID09ICdc
bicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnICcgfHwgKnAgPT0gJ1x0JykpCi0gICAgICAgICAg
ICBwKys7Ci0gICAgICAgIAotICAgICAgICBpZiAocCA9PSBlbmQpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lU3RhcnQgPSBwOwotICAgICAg
ICAKLSAgICAgICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSBsaW5lCi0gICAgICAgIHdoaWxlIChw
IDwgZW5kICYmICpwICE9ICdccicgJiYgKnAgIT0gJ1xuJykKLSAgICAgICAgICAgIHArKzsKLSAg
ICAgICAgCi0gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjb21tZW50Ci0gICAgICAgIGlm
ICgqbGluZVN0YXJ0ID09ICcjJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAg
ICAgICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCi0gICAgICAgIGNvbnN0IFVD
aGFyKiB0bXAgPSBwIC0gMTsKLSAgICAgICAgd2hpbGUgKHRtcCA+IGxpbmVTdGFydCAmJiAoKnRt
cCA9PSAnICcgfHwgKnRtcCA9PSAnXHQnKSkKLSAgICAgICAgICAgIHRtcC0tOwotICAgICAgICAK
LSAgICAgICAgU3RyaW5nIGxpbmUobGluZVN0YXJ0LCB0bXAgLSBsaW5lU3RhcnQgKyAxKTsKLQot
ICAgICAgICBpZiAobGluZSA9PSAiQ0FDSEU6IikgCi0gICAgICAgICAgICBtb2RlID0gRXhwbGlj
aXQ7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCi0gICAgICAgICAgICBt
b2RlID0gRmFsbGJhY2s7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdPUks6IikKLSAg
ICAgICAgICAgIG1vZGUgPSBPbmxpbmVBbGxvd2xpc3Q7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUu
ZW5kc1dpdGgoJzonKSkKLSAgICAgICAgICAgIG1vZGUgPSBVbmtub3duOwotICAgICAgICBlbHNl
IGlmIChtb2RlID09IFVua25vd24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxz
ZSBpZiAobW9kZSA9PSBFeHBsaWNpdCB8fCBtb2RlID09IE9ubGluZUFsbG93bGlzdCkgewotICAg
ICAgICAgICAgYXV0byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5l
KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0g
dXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5l
RW5kID0gcCArIGxpbmUubGVuZ3RoKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExv
b2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25v
cmVkIHRva2Vucy4KLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQn
ICYmICpwICE9ICcgJykgCi0gICAgICAgICAgICAgICAgcCsrOwotCi0gICAgICAgICAgICBpZiAo
bW9kZSA9PSBPbmxpbmVBbGxvd2xpc3QgJiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMg
PT0gMSAmJiBsaW5lWzBdID09ICcqJykgewotICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdh
cyBmb3VuZC4KLSAgICAgICAgICAgICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0
cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAg
ICAgIGlmIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICFpc01hbmlmZXN0V2hp
dGVzcGFjZU9yTmV3bGluZSgqYnVmZmVyKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIFVSTCB1cmwobWFuaWZlc3RVUkwsIGxpbmUuc3Vic3RyaW5nKDAs
IHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgLy8gU2tpcCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICAgICBza2lwVW50aWw8Q2hh
cmFjdGVyVHlwZSwgaXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CiAKLSAgICAgICAgICAgIHVy
bC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAg
ICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZQorICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3Rl
clR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lPihidWZmZXIpOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29s
KCksIG1hbmlmZXN0VVJMLnByb3RvY29sKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBhdXRvIGxpbmVTdGFydCA9IGJ1ZmZlci5wb3NpdGlv
bigpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBFeHBsaWNpdCAmJiBt
YW5pZmVzdFVSTC5wcm90b2NvbElzKCJodHRwcyIpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwobWFuaWZlc3RVUkwsIHVybCkpCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbmQgb2Yg
dGhlIGxpbmUKKyAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0
TmV3bGluZT4oYnVmZmVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTGluZSBpcyBh
IGNvbW1lbnQsIHNraXAgdG8gdGhlIG5leHQgbGluZS4KKyAgICAgICAgICAgIGlmICgqbGluZVN0
YXJ0ID09ICcjJykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG1vZGUgPT0gRXhwbGljaXQpCi0gICAgICAgICAgICAgICAgbWFuaWZlc3Qu
ZXhwbGljaXRVUkxzLmFkZCh1cmwuc3RyaW5nKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVuZCh1cmwpOworICAgICAg
ICAgICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAKLSAg
ICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZhbGxiYWNrKSB7Ci0gICAgICAgICAgICBhdXRvIHVw
Y29udmVydGVkTGluZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hh
cmFjdGVycygpOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVD
aGFyYWN0ZXJzOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5s
ZW5ndGgoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFj
ZSBzZXBhcmF0aW5nIHRoZSB0d28gVVJMcwotICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lRW5k
ICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAgICAgICBwKys7CisgICAg
ICAgICAgICBhdXRvIGxpbmVFbmQgPSBidWZmZXIucG9zaXRpb24oKSAtIDE7CisgICAgICAgICAg
ICByZXZlcnNlU2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihs
aW5lRW5kLCBsaW5lU3RhcnQpOworCisgICAgICAgICAgICBhdXRvIGxpbmVCdWZmZXIgPSBTdHJp
bmdQYXJzaW5nQnVmZmVyIHsgbGluZVN0YXJ0LCBsaW5lRW5kIH07CisKKyAgICAgICAgICAgIGlm
IChsaW5lQnVmZmVyW2xpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgLSAxXSA9PSAnOicpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGxpbmVCdWZmZXIsIGNh
Y2hlTW9kZUlkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGljYXRpb25D
YWNoZVBhcnNlck1vZGU6OkV4cGxpY2l0OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhh
Y3RseShsaW5lQnVmZmVyLCBmYWxsYmFja01vZGVJZGVudGlmaWVyPENoYXJhY3RlclR5cGU+KSAm
JiBsaW5lQnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID09IDEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbW9kZSA9IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpGYWxsYmFjazsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkobGluZUJ1ZmZlciwgbmV0d29ya01vZGVJZGVudGlm
aWVyPENoYXJhY3RlclR5cGU+KSAmJiBsaW5lQnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID09IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2Rl
OjpPbmxpbmVBbGxvd2xpc3Q7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHAgPT0gbGluZUVuZCkgewotICAgICAgICAg
ICAgICAgIC8vIFRoZXJlIHdhcyBubyB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTHMuCisg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIGxpbmUgKGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgd2hp
dGVzcGFjZSkgZW5kcyB3aXRoIGEgJzonIGFuZCBpc24ndCBvbmUgb2YgdGhlIGtub3duIG1vZGUK
KyAgICAgICAgICAgICAgICAvLyBoZWFkZXJzLCB0cmFuc2l0aW9uIHRvIHRoZSAnVW5rbm93bicg
bW9kZS4KKyAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6
OlVua25vd247CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CisgICAg
CisgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRp
b25DYWNoZVBhcnNlck1vZGU6OlVua25vd246CisgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIFVSTCBuYW1lc3BhY2VVUkwobWFuaWZlc3RVUkwsIGxp
bmUuc3Vic3RyaW5nKDAsIHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzKSk7Ci0gICAgICAg
ICAgICBpZiAoIW5hbWVzcGFjZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBjYXNlIEFwcGxp
Y2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpFeHBsaWNpdDogeworICAgICAgICAgICAgICAgIC8vIExv
b2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25v
cmVkIHRva2Vucy4KKyAgICAgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNN
YW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAgICAgICAgICAgICAgYXV0byB1
cmwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZlci5w
b3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwgbWFuaWZlc3RVUkwu
cHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChtYW5pZmVzdFVSTC5wcm90b2NvbElzKCJodHRwcyIp
ICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIHVybCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5hZGQodXJsLnN0cmluZygpKTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG5hbWVzcGFjZVVSTC5yZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJN
b2RlOjpPbmxpbmVBbGxvd2xpc3Q6IHsKKyAgICAgICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0
ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVlbnQgaWdub3JlZCB0b2tlbnMu
CisgICAgICAgICAgICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0
ZXNwYWNlPihsaW5lQnVmZmVyKTsKKworICAgICAgICAgICAgICAgIGlmIChsaW5lQnVmZmVyLnBv
c2l0aW9uKCkgLSBsaW5lU3RhcnQgPT0gMSAmJiAqbGluZVN0YXJ0ID09ICcqJykgeworICAgICAg
ICAgICAgICAgICAgICAvLyBXaWxkY2FyZCB3YXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAg
IG1hbmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGF1dG8gdXJsID0gbWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBsaW5l
U3RhcnQsIGxpbmVCdWZmZXIucG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKCF1cmwu
aXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3Rv
Y29sKCksIG1hbmlmZXN0VVJMLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgLy8gQWx0aG91Z2ggPGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL29mZmxpbmUuaHRtbCNwYXJzaW5nLWNhY2hlLW1hbmlmZXN0cz4gKDA3
LzA2LzIwMTcpIHNhaWRzCi0gICAgICAgICAgICAvLyB0aGF0IHdlIHNob3VsZCBhbHdheXMgcHJl
Zml4IG1hdGNoIHRoZSBtYW5pZmVzdCBwYXRoIHdlIG9ubHkgZG8gc28gaWYgdGhlIG1hbmlmZXN0
IHdhcyBzZXJ2ZWQgd2l0aCBhIG5vbi0KLSAgICAgICAgICAgIC8vIHN0YW5kYXJkIEhUVFAgQ29u
dGVudC1UeXBlIGhlYWRlciBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICBpZiAo
IWFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuZmVzdFBhdGggJiYgIW5hbWVzcGFjZVVS
TC5wYXRoKCkuc3RhcnRzV2l0aChtYW5pZmVzdFBhdGgpKQorICAgICAgICAgICAgICAgIG1hbmlm
ZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVuZCh1cmwpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEFwcGxp
Y2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpGYWxsYmFjazogeworICAgICAgICAgICAgICAgIC8vIExv
b2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgdHdvIFVSTHMKKyAgICAgICAgICAgICAg
ICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZm
ZXIpOwogCi0gICAgICAgICAgICAvLyBTa2lwIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyBmYWxsYmFj
ayBuYW1lc3BhY2UgZnJvbSBVUkwuCi0gICAgICAgICAgICB3aGlsZSAocCA8IGxpbmVFbmQgJiYg
KCpwID09ICdcdCcgfHwgKnAgPT0gJyAnKSkKLSAgICAgICAgICAgICAgICBwKys7CisgICAgICAg
ICAgICAgICAgaWYgKGxpbmVCdWZmZXIuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAv
LyBUaGVyZSB3YXMgbm8gd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkxzLgorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8v
IExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBp
Z25vcmVkIHRva2Vucy4KLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBmYWxsYmFja1N0YXJ0ID0g
cDsKLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9
ICcgJykgCi0gICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIGF1dG8gbmFtZXNw
YWNlVVJMID0gbWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBsaW5lU3RhcnQsIGxpbmVCdWZm
ZXIucG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFuYW1lc3BhY2VVUkwuaXNWYWxp
ZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgVVJMIGZh
bGxiYWNrVVJMKG1hbmlmZXN0VVJMLCBTdHJpbmcoZmFsbGJhY2tTdGFydCwgcCAtIGZhbGxiYWNr
U3RhcnQpKTsKLSAgICAgICAgICAgIGlmICghZmFsbGJhY2tVUkwuaXNWYWxpZCgpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZmFsbGJhY2tVUkwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwobWFuaWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChtYW5pZmVzdFVSTCwgZmFsbGJhY2tVUkwpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIC8vIEFsdGhvdWdoIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9vZmZsaW5lLmh0bWwjcGFyc2luZy1jYWNoZS1tYW5pZmVzdHM+ICgwNy8wNi8y
MDE3KSBzYWlkcworICAgICAgICAgICAgICAgIC8vIHRoYXQgd2Ugc2hvdWxkIGFsd2F5cyBwcmVm
aXggbWF0Y2ggdGhlIG1hbmlmZXN0IHBhdGggd2Ugb25seSBkbyBzbyBpZiB0aGUgbWFuaWZlc3Qg
d2FzIHNlcnZlZCB3aXRoIGEgbm9uLQorICAgICAgICAgICAgICAgIC8vIHN0YW5kYXJkIEhUVFAg
Q29udGVudC1UeXBlIGhlYWRlciBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAg
ICAgaWYgKCFhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRoICYmICFuYW1l
c3BhY2VVUkwucGF0aCgpLnN0YXJ0c1dpdGgobWFuaWZlc3RQYXRoKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAvLyBTa2lwIHdoaXRlc3BhY2Ugc2Vw
YXJhdGluZyBmYWxsYmFjayBuYW1lc3BhY2UgZnJvbSBVUkwuCisgICAgICAgICAgICAgICAgc2tp
cFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVyKTsK
KworICAgICAgICAgICAgICAgIGF1dG8gZmFsbGJhY2tTdGFydCA9IGxpbmVCdWZmZXIucG9zaXRp
b24oKTsKKworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGlu
ZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4KKyAgICAgICAgICAgICAg
ICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZm
ZXIpOworCisgICAgICAgICAgICAgICAgYXV0byBmYWxsYmFja1VSTCA9IG1ha2VNYW5pZmVzdFVS
TChtYW5pZmVzdFVSTCwgZmFsbGJhY2tTdGFydCwgbGluZUJ1ZmZlci5wb3NpdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIobmFtZXNwYWNlVVJMLCBmYWxsYmFja1VSTCkpOyAgICAgICAgICAg
IAotICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQ
b3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIGZhbGxiYWNrVVJMKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBtYW5pZmVzdC5mYWxsYmFja1VSTHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVzcGFjZVVSTCwgZmFsbGJhY2tVUkwpKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAgICAgICB9
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1hbmlmZXN0OworICAgIH0pOwog
fQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZl
c3RQYXJzZXIuaAkocmV2aXNpb24gMjYzNjE5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL01hbmlmZXN0UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBNYW5pZmVzdCB7CitzdHJ1Y3QgQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0IHsKICAgICBWZWN0b3I8VVJMPiBvbmxpbmVBbGxvd2VkVVJM
czsKICAgICBIYXNoU2V0PFN0cmluZz4gZXhwbGljaXRVUkxzOwogICAgIEZhbGxiYWNrVVJMVmVj
dG9yIGZhbGxiYWNrVVJMczsKLSAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVlc3RzOyAvLyBX
aWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCisgICAgYm9vbCBhbGxvd0FsbE5ldHdv
cmtSZXF1ZXN0cyB7IGZhbHNlIH07IC8vIFdpbGRjYXJkIGZvdW5kIGluIE5FVFdPUksgc2VjdGlv
bi4KIH07CiAKLWJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25z
dCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgs
IE1hbmlmZXN0Jik7CitPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmlu
ZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403025</attachid>
            <date>2020-06-28 20:21:18 -0700</date>
            <delta_ts>2020-06-29 17:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200628202117.patch</filename>
            <type>text/plain</type>
            <size>21253</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA2LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVuYW1lcyBwYXJzZU1hbmlm
ZXN0IHRvIHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHRvIGRpZmZlcmVudGlhdGUgYmV0
d2VlbiB0aGUgbWFuaWZlc3QKKyAgICAgICAgICBmb3IgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGFu
ZCB0aGUgImFwcGxpY2F0aW9uIG1hbmlmZXN0Iiwgd2hpY2ggaXMgYSBkaWZmZXJlbnQgdGhpbmcg
ZW50aXJlbHkuCisgICAgICAgICAgQWxzbyByZW5hbWVzIHRoZSBjb250YWluZXIgc3RydWN0IGZy
b20gYmVpbmcgY2FsbGVkIE1hbmlmZXN0IHRvIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC4KKyAg
ICAgICAgICAoVGhlIGZpbGUgc2hvdWxkIGJlIHJlbmFtZWQgYXMgd2VsbCwgYnV0IHdpbGwgZG8g
dGhhdCBpbiBhIHNlcGVyYXRlIHBhc3MpLiAKKyAgICAgICAgLSBVcGRhdGUgcGFyc2VyIHRvIHJl
dHVybiBhbiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHJhdGhlciB0aGFuIHVz
aW5nIGJvb2wgKyBvdXQKKyAgICAgICAgICBwYXJhbWV0ZXIuCisgICAgICAgIC0gQWRvcHQgcmVh
ZENoYXJhY3RlcnNGb3JQYXJzaW5nIHRvIHJlcGxhY2UgdW5uZWNlc3NhcnkgY2FsbCB0byBTdHJp
bmdWaWV3Ojp1cGNvbnZlcnRlZENoYXJhY3RlcnMoKS4KKyAgICAgICAgLSBBZG9wdCBTdHJpbmdQ
YXJzaW5nQnVmZmVyIGFuZCBQYXJzaW5nVXRpbGl0aWVzIGFsb25nIHdpdGggc29tZSByZWZpbmVt
ZW50cyB0byB0aGUgY29kZQorICAgICAgICAgIHRvIG1ha2UgdGhlIGludGVudCBtb3JlIGNsZWFy
LgorCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpza2lwVW50aWwpOgorICAgICAgICBGaXggZm9ybWF0dGluZywgcHV0dGluZyB0
aGUgd2hvbGUgc2lnbmF0dXJlIG9uIG9uZSBsaW5lLgorCisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIFVwZGF0
ZSBmb3IgbmV3IHBhcnNlciBmdW5jdGlvbiBuYW1lIGFuZCBPcHRpb25hbCByZXR1cm4gdHlwZS4K
KworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc01hbmlmZXN0V2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc01h
bmlmZXN0TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjppc01hbmlmZXN0V2hpdGVzcGFjZU9y
TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlTWFuaWZlc3RVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oOgorICAgICAgICBVcGRhdGUgcGFyc2luZyBsb2dp
YyB0byB1c2UgcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nICh0byBhdm9pZCB1cGNvbnZlc2lvbikg
YW5kIHJld29yaworICAgICAgICB1c2luZyBTdHJpbmdQYXJzaW5nQnVmZmVyL1BhcnNpbmdVdGls
aXRpZXMgdG8gbWFrZSB0aGluZ3MgbW9yZSBjbGVhci4KKwogMjAyMC0wNi0yOCAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RGQ10gQWRqdXN0IHRhYmxl
IGNvbnRlbnQgdmVydGljYWwgcG9zaXRpb24gdG8gbWF0Y2ggdmVydGljYWwtYWxpZ24KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmgJKHJldmlz
aW9uIDI2MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODEsOCArODEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtCiAgICAgICAgICsrcG9zaXRpb247CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIERlbGltaXRlclR5cGU+Ci12b2lkIHNr
aXBVbnRpbChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIERlbGlt
aXRlclR5cGUgZGVsaW1pdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgRGVsaW1pdGVyVHlwZT4gdm9pZCBza2lwVW50aWwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBEZWxpbWl0ZXJUeXBlIGRlbGltaXRlcikKIHsKICAgICB3
aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAqYnVmZmVyICE9IGRlbGlt
aXRlcikKICAgICAgICAgKytidWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24g
MjYzNjE5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNSw4ICs2MDUsOCBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgTWFuaWZlc3QgbWFuaWZlc3Q7Ci0gICAgaWYgKCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSwgbWFuaWZlc3QpKSB7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RS
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAv
LyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBz
aWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAg
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFu
aWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklG
RVNUPyJfcyk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC02MzUsMTUgKzYzNSwx
NSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBleHBsaWNpdFVSTCA6IG1hbmlmZXN0
LmV4cGxpY2l0VVJMcykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGV4cGxpY2l0VVJMIDogbWFuaWZl
c3QtPmV4cGxpY2l0VVJMcykKICAgICAgICAgYWRkRW50cnkoZXhwbGljaXRVUkwsIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6RXhwbGljaXQpOwogCi0gICAgZm9yIChhdXRvJiBmYWxsYmFja1VS
TCA6IG1hbmlmZXN0LmZhbGxiYWNrVVJMcykKKyAgICBmb3IgKGF1dG8mIGZhbGxiYWNrVVJMIDog
bWFuaWZlc3QtPmZhbGxiYWNrVVJMcykKICAgICAgICAgYWRkRW50cnkoZmFsbGJhY2tVUkwuc2Vj
b25kLnN0cmluZygpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKTsKICAgICAK
LSAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5zZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3Qub25s
aW5lQWxsb3dlZFVSTHMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEZhbGxiYWNrVVJM
cyhtYW5pZmVzdC5mYWxsYmFja1VSTHMpOwotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldEFs
bG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7
CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lQWxsb3dsaXN0KG1hbmlmZXN0LT5v
bmxpbmVBbGxvd2VkVVJMcyk7CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tV
UkxzKG1hbmlmZXN0LT5mYWxsYmFja1VSTHMpOworICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNl
dEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC0+YWxsb3dBbGxOZXR3b3JrUmVxdWVz
dHMpOwogCiAgICAgbV9wcm9ncmVzc1RvdGFsID0gbV9wZW5kaW5nRW50cmllcy5zaXplKCk7CiAg
ICAgbV9wcm9ncmVzc0RvbmUgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyNjM2MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJN
YW5pZmVzdFBhcnNlci5oIgogCisjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1ZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25s
aW5lQWxsb3dsaXN0LCBVbmtub3duIH07CitlbnVtIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVQYXJz
ZXJNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsK
IAogc3RhdGljIFN0cmluZ1ZpZXcgbWFuaWZlc3RQYXRoKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwp
CiB7CkBAIC00NCwxNjAgKzQ1LDE5MiBAQCBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVzdFBhdGgo
Y29uc3QgVVJMCiAgICAgcmV0dXJuIG1hbmlmZXN0UGF0aDsKIH0KIAotYm9vbCBwYXJzZU1hbmlm
ZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlw
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1hbmlmZXN0KQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFu
aWZlc3RXaGl0ZXNwYWNlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewotICAgIEFTU0VSVCht
YW5pZmVzdC5leHBsaWNpdFVSTHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3Qub25s
aW5lQWxsb3dlZFVSTHMuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobWFuaWZlc3QuZmFsbGJhY2tV
UkxzLmlzRW1wdHkoKSk7Ci0gICAgbWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSBm
YWxzZTsKKyAgICByZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsK
K30KIAotICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlm
ZXN0VVJMKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc01hbmlmZXN0TmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAg
ICByZXR1cm4gY2hhcmFjdGVyID09ICdcbicgfHwgY2hhcmFjdGVyID09ICdccic7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc01h
bmlmZXN0V2hpdGVzcGFjZU9yTmV3bGluZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAg
ICByZXR1cm4gaXNNYW5pZmVzdFdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBpc01hbmlmZXN0TmV3
bGluZShjaGFyYWN0ZXIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgVVJMIG1ha2VNYW5pZmVzdFVSTChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdGFydCwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQoreworICAgIFVS
TCB1cmwobWFuaWZlc3RVUkwsIFN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgICB1cmwu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHVybDsKK30KIAotICAgIGNv
bnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJh
Y3RlclR5cGUgY2FjaGVNYW5pZmVzdElkZW50aWZpZXJbXSA9IHsgJ0MnLCAnQScsICdDJywgJ0gn
LCAnRScsICcgJywgJ00nLCAnQScsICdOJywgJ0knLCAnRicsICdFJywgJ1MnLCAnVCcgfTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVy
VHlwZSBjYWNoZU1vZGVJZGVudGlmaWVyW10gPSB7ICdDJywgJ0EnLCAnQycsICdIJywgJ0UnIH07
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJh
Y3RlclR5cGUgZmFsbGJhY2tNb2RlSWRlbnRpZmllcltdID0geyAnRicsICdBJywgJ0wnLCAnTCcs
ICdCJywgJ0EnLCAnQycsICdLJyB9OwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG5ldHdvcmtNb2RlSWRlbnRpZmllcltdID0g
eyAnTicsICdFJywgJ1QnLCAnVycsICdPJywgJ1InLCAnSycgfTsKKworT3B0aW9uYWw8QXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBV
UkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFy
IGNhY2hlTWFuaWZlc3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJv
b2wgYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCA9IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlw
ZSk7CisgICAgYXV0byBtYW5pZmVzdFBhdGggPSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZl
c3RVUkwpOwogCi0gICAgTW9kZSBtb2RlID0gRXhwbGljaXQ7CisgICAgYXV0byBtYW5pZmVzdFN0
cmluZyA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWw6OmZyb21MaXRl
cmFsVW5zYWZlKGNhY2hlTWFuaWZlc3RNSU1FVHlwZSksICJVVEYtOCIpLT5kZWNvZGVBbmRGbHVz
aChkYXRhLCBsZW5ndGgpOwogCi0gICAgU3RyaW5nIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVN
YW5pZmVzdE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhtYW5pZmVzdFN0cmluZywgWyZd
KGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHsKKyAg
ICAgICAgdXNpbmcgQ2hhcmFjdGVyVHlwZSA9IHR5cGVuYW1lIGRlY2x0eXBlKGJ1ZmZlcik6OkNo
YXJhY3RlclR5cGU7CiAgICAgCi0gICAgLy8gTG9vayBmb3IgdGhlIG1hZ2ljIHNpZ25hdHVyZTog
Il5ceEZFRkY/Q0FDSEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJlbW92ZWQgYnkgVGV4
dFJlc291cmNlRGVjb2RlcikuCi0gICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21t
ZW50IiBpcyBhIHZhbGlkIHNpZ25hdHVyZS4KLSAgICAvLyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZF
U1Q7VjIiIGlzIG5vdC4KLSAgICBjb25zdCBjaGFyIG1hbmlmZXN0U2lnbmF0dXJlW10gPSAiQ0FD
SEUgTUFOSUZFU1QiOwotICAgIGlmICghbWFuaWZlc3RTdHJpbmcuc3RhcnRzV2l0aChtYW5pZmVz
dFNpZ25hdHVyZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0IG1hbmlmZXN0OworICAgICAgICBhdXRvIG1vZGUgPSBBcHBsaWNhdGlvbkNh
Y2hlUGFyc2VyTW9kZTo6RXhwbGljaXQ7CisKKyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG1hZ2lj
IHNpZ25hdHVyZTogIl5ceEZFRkY/Q0FDSEUgTUFOSUZFU1RbIFx0XT8iICh0aGUgQk9NIGlzIHJl
bW92ZWQgYnkgVGV4dFJlc291cmNlRGVjb2RlcikuCisgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNI
RSBNQU5JRkVTVCAjY29tbWVudCIgaXMgYSB2YWxpZCBzaWduYXR1cmUuCisgICAgICAgIC8vIEV4
YW1wbGU6ICJDQUNIRSBNQU5JRkVTVDtWMiIgaXMgbm90LgorICAgICAgICBpZiAoIXNraXBDaGFy
YWN0ZXJzRXhhY3RseShidWZmZXIsIGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyPENoYXJhY3RlclR5
cGU+KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgU3RyaW5n
VmlldyBtYW5pZmVzdEFmdGVyU2lnbmF0dXJlID0gU3RyaW5nVmlldyhtYW5pZmVzdFN0cmluZyku
c3Vic3RyaW5nKHNpemVvZihtYW5pZmVzdFNpZ25hdHVyZSkgLSAxKTsKLSAgICBhdXRvIHVwY29u
dmVydGVkQ2hhcmFjdGVycyA9IG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0g
ICAgY29uc3QgVUNoYXIqIGVuZCA9IHAgKyBtYW5pZmVzdEFmdGVyU2lnbmF0dXJlLmxlbmd0aCgp
OwotCi0gICAgaWYgKHAgPCBlbmQgJiYgKnAgIT0gJyAnICYmICpwICE9ICdcdCcgJiYgKnAgIT0g
J1xuJyAmJiAqcCAhPSAnXHInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBTa2lw
IHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xy
JyAmJiAqcCAhPSAnXG4nKQotICAgICAgICBwKys7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAg
ICAvLyBTa2lwIHdoaXRlc3BhY2UKLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwID09ICdc
bicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnICcgfHwgKnAgPT0gJ1x0JykpCi0gICAgICAgICAg
ICBwKys7Ci0gICAgICAgIAotICAgICAgICBpZiAocCA9PSBlbmQpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IFVDaGFyKiBsaW5lU3RhcnQgPSBwOwotICAgICAg
ICAKLSAgICAgICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSBsaW5lCi0gICAgICAgIHdoaWxlIChw
IDwgZW5kICYmICpwICE9ICdccicgJiYgKnAgIT0gJ1xuJykKLSAgICAgICAgICAgIHArKzsKLSAg
ICAgICAgCi0gICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjb21tZW50Ci0gICAgICAgIGlm
ICgqbGluZVN0YXJ0ID09ICcjJykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAg
ICAgICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlCi0gICAgICAgIGNvbnN0IFVD
aGFyKiB0bXAgPSBwIC0gMTsKLSAgICAgICAgd2hpbGUgKHRtcCA+IGxpbmVTdGFydCAmJiAoKnRt
cCA9PSAnICcgfHwgKnRtcCA9PSAnXHQnKSkKLSAgICAgICAgICAgIHRtcC0tOwotICAgICAgICAK
LSAgICAgICAgU3RyaW5nIGxpbmUobGluZVN0YXJ0LCB0bXAgLSBsaW5lU3RhcnQgKyAxKTsKLQot
ICAgICAgICBpZiAobGluZSA9PSAiQ0FDSEU6IikgCi0gICAgICAgICAgICBtb2RlID0gRXhwbGlj
aXQ7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIkZBTExCQUNLOiIpCi0gICAgICAgICAgICBt
b2RlID0gRmFsbGJhY2s7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUgPT0gIk5FVFdPUks6IikKLSAg
ICAgICAgICAgIG1vZGUgPSBPbmxpbmVBbGxvd2xpc3Q7Ci0gICAgICAgIGVsc2UgaWYgKGxpbmUu
ZW5kc1dpdGgoJzonKSkKLSAgICAgICAgICAgIG1vZGUgPSBVbmtub3duOwotICAgICAgICBlbHNl
IGlmIChtb2RlID09IFVua25vd24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxz
ZSBpZiAobW9kZSA9PSBFeHBsaWNpdCB8fCBtb2RlID09IE9ubGluZUFsbG93bGlzdCkgewotICAg
ICAgICAgICAgYXV0byB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhsaW5l
KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBwID0g
dXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVyczsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBsaW5l
RW5kID0gcCArIGxpbmUubGVuZ3RoKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExv
b2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25v
cmVkIHRva2Vucy4KLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQn
ICYmICpwICE9ICcgJykgCi0gICAgICAgICAgICAgICAgcCsrOwotCi0gICAgICAgICAgICBpZiAo
bW9kZSA9PSBPbmxpbmVBbGxvd2xpc3QgJiYgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMg
PT0gMSAmJiBsaW5lWzBdID09ICcqJykgewotICAgICAgICAgICAgICAgIC8vIFdpbGRjYXJkIHdh
cyBmb3VuZC4KLSAgICAgICAgICAgICAgICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0
cyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAg
ICAgIGlmIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICFpc01hbmlmZXN0V2hp
dGVzcGFjZU9yTmV3bGluZSgqYnVmZmVyKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIFVSTCB1cmwobWFuaWZlc3RVUkwsIGxpbmUuc3Vic3RyaW5nKDAs
IHAgLSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgLy8gU2tpcCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgICAgICBza2lwVW50aWw8Q2hh
cmFjdGVyVHlwZSwgaXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CiAKLSAgICAgICAgICAgIHVy
bC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
aWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgpLCBtYW5pZmVzdFVSTC5w
cm90b2NvbCgpKSkKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIC8vIFNraXAgd2hp
dGVzcGFjZQorICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RX
aGl0ZXNwYWNlT3JOZXdsaW5lPihidWZmZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGF1dG8gbGluZVN0YXJ0ID0gYnVmZmVyLnBvc2l0aW9uKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVuZCBvZiB0aGUgbGluZQorICAgICAgICAg
ICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3ROZXdsaW5lPihidWZmZXIpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBMaW5lIGlzIGEgY29tbWVudCwgc2tpcCB0byB0
aGUgbmV4dCBsaW5lLgorICAgICAgICAgICAgaWYgKCpsaW5lU3RhcnQgPT0gJyMnKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBHZXQgcmlk
IG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAgIGF1dG8gbGluZUVuZCA9IGJ1ZmZl
ci5wb3NpdGlvbigpIC0gMTsKKyAgICAgICAgICAgIHdoaWxlIChsaW5lRW5kID4gbGluZVN0YXJ0
ICYmIGlzTWFuaWZlc3RXaGl0ZXNwYWNlKCpsaW5lRW5kKSkKKyAgICAgICAgICAgICAgICAtLWxp
bmVFbmQ7CisKKyAgICAgICAgICAgIGF1dG8gbGluZUJ1ZmZlciA9IFN0cmluZ1BhcnNpbmdCdWZm
ZXIgeyBsaW5lU3RhcnQsIGxpbmVFbmQgLSBsaW5lU3RhcnQgKyAxIH07CisKKyAgICAgICAgICAg
IGlmIChsaW5lQnVmZmVyW2xpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgLSAxXSA9PSAnOicp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGxpbmVCdWZmZXIs
IGNhY2hlTW9kZUlkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVuZ3Ro
UmVtYWluaW5nKCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGljYXRp
b25DYWNoZVBhcnNlck1vZGU6OkV4cGxpY2l0OworICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJz
RXhhY3RseShsaW5lQnVmZmVyLCBmYWxsYmFja01vZGVJZGVudGlmaWVyPENoYXJhY3RlclR5cGU+
KSAmJiBsaW5lQnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbW9kZSA9IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpGYWxsYmFjazsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkobGluZUJ1ZmZlciwgbmV0d29ya01vZGVJZGVu
dGlmaWVyPENoYXJhY3RlclR5cGU+KSAmJiBsaW5lQnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID09
IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJN
b2RlOjpPbmxpbmVBbGxvd2xpc3Q7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsaW5lIChleGNsdWRp
bmcgdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2UpIGVuZHMgd2l0aCBhICc6JyBhbmQgaXNuJ3Qgb25l
IG9mIHRoZSBrbm93biBtb2RlCisgICAgICAgICAgICAgICAgLy8gaGVhZGVycywgdHJhbnNpdGlv
biB0byB0aGUgJ1Vua25vd24nIG1vZGUuCisgICAgICAgICAgICAgICAgbW9kZSA9IEFwcGxpY2F0
aW9uQ2FjaGVQYXJzZXJNb2RlOjpVbmtub3duOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBFeHBsaWNpdCAmJiBtYW5pZmVz
dFVSTC5wcm90b2NvbElzKCJodHRwcyIpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
bWFuaWZlc3RVUkwsIHVybCkpCisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBzd2l0
Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6
OlVua25vd246CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmIChtb2RlID09IEV4cGxpY2l0KQorICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlv
bkNhY2hlUGFyc2VyTW9kZTo6RXhwbGljaXQ6IHsKKyAgICAgICAgICAgICAgICAvLyBMb29rIGZv
ciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVlbnQgaWdub3JlZCB0
b2tlbnMuCisgICAgICAgICAgICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZl
c3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVyKTsKKworICAgICAgICAgICAgICAgIGF1dG8gdXJsID0g
bWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBsaW5lU3RhcnQsIGxpbmVCdWZmZXIucG9zaXRp
b24oKSk7CisgICAgICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
IWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1hbmlmZXN0VVJMLnByb3Rv
Y29sKCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAobWFuaWZlc3RVUkwucHJvdG9jb2xJcygiaHR0cHMiKSAmJiAh
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1hbmlmZXN0VVJMLCB1cmwpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBt
YW5pZmVzdC5leHBsaWNpdFVSTHMuYWRkKHVybC5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3Qub25saW5lQWxsb3dlZFVSTHMuYXBwZW5kKHVybCk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGluZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxp
bmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAg
PSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzOwotICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxp
bmVFbmQgPSBwICsgbGluZS5sZW5ndGgoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8g
TG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSB0d28gVVJMcwotICAgICAgICAgICAg
d2hpbGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAg
ICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6Ok9ubGluZUFsbG93
bGlzdDogeworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGlu
ZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4KKyAgICAgICAgICAgICAg
ICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZm
ZXIpOworCisgICAgICAgICAgICAgICAgaWYgKGxpbmVCdWZmZXIucG9zaXRpb24oKSAtIGxpbmVT
dGFydCA9PSAxICYmICpsaW5lU3RhcnQgPT0gJyonKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFdpbGRjYXJkIHdhcyBmb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QuYWxsb3dB
bGxOZXR3b3JrUmVxdWVzdHMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0
byB1cmwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZl
ci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwgbWFuaWZlc3RV
UkwucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAocCA9PSBsaW5lRW5kKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5v
IHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMcy4KKyAgICAgICAgICAgICAgICBtYW5pZmVz
dC5vbmxpbmVBbGxvd2VkVVJMcy5hcHBlbmQodXJsKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgVVJMIG5hbWVzcGFj
ZVVSTChtYW5pZmVzdFVSTCwgbGluZS5zdWJzdHJpbmcoMCwgcCAtIHVwY29udmVydGVkTGluZUNo
YXJhY3RlcnMpKTsKLSAgICAgICAgICAgIGlmICghbmFtZXNwYWNlVVJMLmlzVmFsaWQoKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG5hbWVzcGFjZVVSTC5yZW1vdmVG
cmFnbWVudElkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBh
cnNlck1vZGU6OkZhbGxiYWNrOiB7CisgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVz
cGFjZSBzZXBhcmF0aW5nIHRoZSB0d28gVVJMcworICAgICAgICAgICAgICAgIHNraXBVbnRpbDxD
aGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CiAKLSAgICAg
ICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1hbmlmZXN0VVJMLCBuYW1l
c3BhY2VVUkwpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlm
IChsaW5lQnVmZmVyLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2Fz
IG5vIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMcy4KKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBBbHRob3VnaCA8
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb2ZmbGluZS5odG1sI3BhcnNp
bmctY2FjaGUtbWFuaWZlc3RzPiAoMDcvMDYvMjAxNykgc2FpZHMKLSAgICAgICAgICAgIC8vIHRo
YXQgd2Ugc2hvdWxkIGFsd2F5cyBwcmVmaXggbWF0Y2ggdGhlIG1hbmlmZXN0IHBhdGggd2Ugb25s
eSBkbyBzbyBpZiB0aGUgbWFuaWZlc3Qgd2FzIHNlcnZlZCB3aXRoIGEgbm9uLQotICAgICAgICAg
ICAgLy8gc3RhbmRhcmQgSFRUUCBDb250ZW50LVR5cGUgaGVhZGVyIGZvciB3ZWIgY29tcGF0aWJp
bGl0eS4KLSAgICAgICAgICAgIGlmICghYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5m
ZXN0UGF0aCAmJiAhbmFtZXNwYWNlVVJMLnBhdGgoKS5zdGFydHNXaXRoKG1hbmlmZXN0UGF0aCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYXV0byBuYW1lc3Bh
Y2VVUkwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwgbGluZUJ1ZmZl
ci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5hbWVzcGFjZVVSTC5pc1ZhbGlk
KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAvLyBTa2lw
IHdoaXRlc3BhY2Ugc2VwYXJhdGluZyBmYWxsYmFjayBuYW1lc3BhY2UgZnJvbSBVUkwuCi0gICAg
ICAgICAgICB3aGlsZSAocCA8IGxpbmVFbmQgJiYgKCpwID09ICdcdCcgfHwgKnAgPT0gJyAnKSkK
LSAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RB
bmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNl
cGFyYXRpbmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVlbnQgaWdub3JlZCB0b2tlbnMuCi0gICAgICAg
ICAgICBjb25zdCBVQ2hhciogZmFsbGJhY2tTdGFydCA9IHA7Ci0gICAgICAgICAgICB3aGlsZSAo
cCA8IGxpbmVFbmQgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnICcpIAotICAgICAgICAgICAgICAg
IHArKzsKKyAgICAgICAgICAgICAgICAvLyBBbHRob3VnaCA8aHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvb2ZmbGluZS5odG1sI3BhcnNpbmctY2FjaGUtbWFuaWZlc3RzPiAo
MDcvMDYvMjAxNykgc2FpZHMKKyAgICAgICAgICAgICAgICAvLyB0aGF0IHdlIHNob3VsZCBhbHdh
eXMgcHJlZml4IG1hdGNoIHRoZSBtYW5pZmVzdCBwYXRoIHdlIG9ubHkgZG8gc28gaWYgdGhlIG1h
bmlmZXN0IHdhcyBzZXJ2ZWQgd2l0aCBhIG5vbi0KKyAgICAgICAgICAgICAgICAvLyBzdGFuZGFy
ZCBIVFRQIENvbnRlbnQtVHlwZSBoZWFkZXIgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgorICAgICAg
ICAgICAgICAgIGlmICghYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5mZXN0UGF0aCAm
JiAhbmFtZXNwYWNlVVJMLnBhdGgoKS5zdGFydHNXaXRoKG1hbmlmZXN0UGF0aCkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBVUkwgZmFsbGJhY2tVUkwobWFu
aWZlc3RVUkwsIFN0cmluZyhmYWxsYmFja1N0YXJ0LCBwIC0gZmFsbGJhY2tTdGFydCkpOwotICAg
ICAgICAgICAgaWYgKCFmYWxsYmFja1VSTC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBmYWxsYmFja1VSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KTsKKyAgICAgICAgICAgICAgICAvLyBTa2lwIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyBmYWxsYmFj
ayBuYW1lc3BhY2UgZnJvbSBVUkwuCisgICAgICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3Rl
clR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVyKTsKIAotICAgICAgICAgICAg
aWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkwsIGZhbGxiYWNrVVJM
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBhdXRvIGZhbGxi
YWNrU3RhcnQgPSBsaW5lQnVmZmVyLnBvc2l0aW9uKCk7CisKKyAgICAgICAgICAgICAgICAvLyBM
b29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTCBmcm9tIHN1YnNlcXVlbnQgaWdu
b3JlZCB0b2tlbnMuCisgICAgICAgICAgICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlz
TWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVyKTsKKworICAgICAgICAgICAgICAgIGF1dG8g
ZmFsbGJhY2tVUkwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGZhbGxiYWNrU3RhcnQs
IGxpbmVCdWZmZXIucG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgaWYgKCFmYWxsYmFja1VS
TC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBtYW5pZmVzdC5mYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG5hbWVzcGFjZVVS
TCwgZmFsbGJhY2tVUkwpKTsgICAgICAgICAgICAKLSAgICAgICAgfSBlbHNlIAorICAgICAgICAg
ICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKG1hbmlmZXN0VVJMLCBmYWxs
YmFja1VSTCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAg
ICAgbWFuaWZlc3QuZmFsbGJhY2tVUkxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihuYW1lc3BhY2VV
UkwsIGZhbGxiYWNrVVJMKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIH0KKyAgICAgICAgfQogCi0gICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBtYW5pZmVzdDsKKyAgICB9KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgJKHJldmlzaW9uIDI2MzYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dHJ1Y3QgTWFuaWZlc3Qgeworc3RydWN0IEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCB7CiAgICAg
VmVjdG9yPFVSTD4gb25saW5lQWxsb3dlZFVSTHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IGV4cGxp
Y2l0VVJMczsKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7Ci0gICAgYm9vbCBh
bGxvd0FsbE5ldHdvcmtSZXF1ZXN0czsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0
aW9uLgorICAgIGJvb2wgYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgeyBmYWxzZSB9OyAvLyBXaWxk
Y2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCiB9OwogCi1ib29sIHBhcnNlTWFuaWZlc3Qo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYpOworT3B0aW9uYWw8QXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBV
UkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403143</attachid>
            <date>2020-06-29 17:33:14 -0700</date>
            <delta_ts>2020-06-29 20:52:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213680-20200629173314.patch</filename>
            <type>text/plain</type>
            <size>21213</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzY5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA2LTI5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFwcENhY2hlIG1hbmlm
ZXN0IHBhcnNlciBvdmVyIHRvIHVzaW5nIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVuYW1lcyBwYXJzZU1hbmlm
ZXN0IHRvIHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHRvIGRpZmZlcmVudGlhdGUgYmV0
d2VlbiB0aGUgbWFuaWZlc3QKKyAgICAgICAgICBmb3IgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGFu
ZCB0aGUgImFwcGxpY2F0aW9uIG1hbmlmZXN0Iiwgd2hpY2ggaXMgYSBkaWZmZXJlbnQgdGhpbmcg
ZW50aXJlbHkuCisgICAgICAgICAgQWxzbyByZW5hbWVzIHRoZSBjb250YWluZXIgc3RydWN0IGZy
b20gYmVpbmcgY2FsbGVkIE1hbmlmZXN0IHRvIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC4KKyAg
ICAgICAgICAoVGhlIGZpbGUgc2hvdWxkIGJlIHJlbmFtZWQgYXMgd2VsbCwgYnV0IHdpbGwgZG8g
dGhhdCBpbiBhIHNlcGVyYXRlIHBhc3MpLiAKKyAgICAgICAgLSBVcGRhdGUgcGFyc2VyIHRvIHJl
dHVybiBhbiBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHJhdGhlciB0aGFuIHVz
aW5nIGJvb2wgKyBvdXQKKyAgICAgICAgICBwYXJhbWV0ZXIuCisgICAgICAgIC0gQWRvcHQgcmVh
ZENoYXJhY3RlcnNGb3JQYXJzaW5nIHRvIHJlcGxhY2UgdW5uZWNlc3NhcnkgY2FsbCB0byBTdHJp
bmdWaWV3Ojp1cGNvbnZlcnRlZENoYXJhY3RlcnMoKS4KKyAgICAgICAgLSBBZG9wdCBTdHJpbmdQ
YXJzaW5nQnVmZmVyIGFuZCBQYXJzaW5nVXRpbGl0aWVzIGFsb25nIHdpdGggc29tZSByZWZpbmVt
ZW50cyB0byB0aGUgY29kZQorICAgICAgICAgIHRvIG1ha2UgdGhlIGludGVudCBtb3JlIGNsZWFy
LgorCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpza2lwVW50aWwpOgorICAgICAgICBGaXggZm9ybWF0dGluZywgcHV0dGluZyB0
aGUgd2hvbGUgc2lnbmF0dXJlIG9uIG9uZSBsaW5lLgorCisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIFVwZGF0
ZSBmb3IgbmV3IHBhcnNlciBmdW5jdGlvbiBuYW1lIGFuZCBPcHRpb25hbCByZXR1cm4gdHlwZS4K
KworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc01hbmlmZXN0V2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc01h
bmlmZXN0TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjppc01hbmlmZXN0V2hpdGVzcGFjZU9y
TmV3bGluZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlTWFuaWZlc3RVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oOgorICAgICAgICBVcGRhdGUgcGFyc2luZyBsb2dp
YyB0byB1c2UgcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nICh0byBhdm9pZCB1cGNvbnZlc2lvbikg
YW5kIHJld29yaworICAgICAgICB1c2luZyBTdHJpbmdQYXJzaW5nQnVmZmVyL1BhcnNpbmdVdGls
aXRpZXMgdG8gbWFrZSB0aGluZ3MgbW9yZSBjbGVhci4KKwogMjAyMC0wNi0yOSAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyBtYWtlU2lt
cGxlQ29sb3JGcm9tKiB2YXJpYW50cwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
UGFyc2luZ1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1BhcnNpbmdVdGlsaXRpZXMuaAkocmV2aXNpb24gMjYzNjk3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4
ICs4MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW0KICAgICAg
ICAgKytwb3NpdGlvbjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgRGVsaW1pdGVyVHlwZT4KLXZvaWQgc2tpcFVudGlsKFN0cmluZ1BhcnNpbmdCdWZmZXI8
Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgRGVsaW1pdGVyVHlwZSBkZWxpbWl0ZXIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBEZWxpbWl0ZXJUeXBlPiB2b2lkIHNr
aXBVbnRpbChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIERlbGlt
aXRlclR5cGUgZGVsaW1pdGVyKQogewogICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1Jl
bWFpbmluZygpICYmICpidWZmZXIgIT0gZGVsaW1pdGVyKQogICAgICAgICArK2J1ZmZlcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAyNjM2OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjA1LDggKzYwNSw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2EKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBNYW5pZmVzdCBtYW5pZmVzdDsKLSAgICBp
ZiAoIXBhcnNlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpLCBtYW5pZmVzdCkpIHsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKICAgICAgICAgY2FjaGVVcGRh
dGVGYWlsZWQoKTsKQEAgLTYzNSwxNSArNjM1LDE1IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGV4cGxpY2l0VVJMIDogbWFuaWZlc3QuZXhwbGljaXRVUkxzKQorICAgIGZvciAoY29u
c3QgYXV0byYgZXhwbGljaXRVUkwgOiBtYW5pZmVzdC0+ZXhwbGljaXRVUkxzKQogICAgICAgICBh
ZGRFbnRyeShleHBsaWNpdFVSTCwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCk7
CiAKLSAgICBmb3IgKGF1dG8mIGZhbGxiYWNrVVJMIDogbWFuaWZlc3QuZmFsbGJhY2tVUkxzKQor
ICAgIGZvciAoYXV0byYgZmFsbGJhY2tVUkwgOiBtYW5pZmVzdC0+ZmFsbGJhY2tVUkxzKQogICAg
ICAgICBhZGRFbnRyeShmYWxsYmFja1VSTC5zZWNvbmQuc3RyaW5nKCksIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6RmFsbGJhY2spOwogICAgIAotICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNl
dE9ubGluZUFsbG93bGlzdChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcyk7Ci0gICAgbV9jYWNo
ZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7Ci0g
ICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlm
ZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzKTsKKyAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5z
ZXRPbmxpbmVBbGxvd2xpc3QobWFuaWZlc3QtPm9ubGluZUFsbG93ZWRVUkxzKTsKKyAgICBtX2Nh
Y2hlQmVpbmdVcGRhdGVkLT5zZXRGYWxsYmFja1VSTHMobWFuaWZlc3QtPmZhbGxiYWNrVVJMcyk7
CisgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1h
bmlmZXN0LT5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyk7CiAKICAgICBtX3Byb2dyZXNzVG90YWwg
PSBtX3BlbmRpbmdFbnRyaWVzLnNpemUoKTsKICAgICBtX3Byb2dyZXNzRG9uZSA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5j
cHAJKHJldmlzaW9uIDI2MzY5NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9N
YW5pZmVzdFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hbmlmZXN0UGFyc2VyLmgiCiAKKyNpbmNsdWRl
ICJQYXJzaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVm
ZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBN
b2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVBbGxvd2xpc3QsIFVua25vd24gfTsKK2Vu
dW0gY2xhc3MgQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGUgeyBFeHBsaWNpdCwgRmFsbGJhY2ss
IE9ubGluZUFsbG93bGlzdCwgVW5rbm93biB9OwogCiBzdGF0aWMgU3RyaW5nVmlldyBtYW5pZmVz
dFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKQEAgLTQ0LDE2MCArNDUsMTkyIEBAIHN0
YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0UGF0aChjb25zdCBVUkwKICAgICByZXR1cm4gbWFuaWZl
c3RQYXRoOwogfQogCi1ib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwg
Y29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNNYW5pZmVzdFdoaXRlc3BhY2UoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpCiB7Ci0gICAgQVNTRVJUKG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5
KCkpOwotICAgIEFTU0VSVChtYW5pZmVzdC5vbmxpbmVBbGxvd2VkVVJMcy5pc0VtcHR5KCkpOwot
ICAgIEFTU0VSVChtYW5pZmVzdC5mYWxsYmFja1VSTHMuaXNFbXB0eSgpKTsKLSAgICBtYW5pZmVz
dC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IGZhbHNlOworICAgIHJldHVybiBjaGFyYWN0ZXIg
PT0gJyAnIHx8IGNoYXJhY3RlciA9PSAnXHQnOworfQogCi0gICAgYXV0byBtYW5pZmVzdFBhdGgg
PSBXZWJDb3JlOjptYW5pZmVzdFBhdGgobWFuaWZlc3RVUkwpOwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFuaWZlc3ROZXdsaW5lKENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQoreworICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJ1xuJyB8
fCBjaGFyYWN0ZXIgPT0gJ1xyJzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGNvbnN0ZXhwciBib29sIGlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lKENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQoreworICAgIHJldHVybiBpc01hbmlmZXN0V2hpdGVzcGFj
ZShjaGFyYWN0ZXIpIHx8IGlzTWFuaWZlc3ROZXdsaW5lKGNoYXJhY3Rlcik7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBVUkwgbWFrZU1hbmlmZXN0VVJMKGNv
bnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN0YXJ0LCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBlbmQpCit7CisgICAgVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5nKHN0
YXJ0LCBlbmQgLSBzdGFydCkpOworICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsK
KyAgICByZXR1cm4gdXJsOworfQogCi0gICAgY29uc3QgY2hhciBjYWNoZU1hbmlmZXN0TUlNRVR5
cGVbXSA9ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IjsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBjYWNoZU1hbmlmZXN0SWRlbnRp
ZmllcltdID0geyAnQycsICdBJywgJ0MnLCAnSCcsICdFJywgJyAnLCAnTScsICdBJywgJ04nLCAn
SScsICdGJywgJ0UnLCAnUycsICdUJyB9OwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hlTW9kZUlkZW50aWZpZXJbXSA9
IHsgJ0MnLCAnQScsICdDJywgJ0gnLCAnRScgfTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBmYWxsYmFja01vZGVJZGVudGlm
aWVyW10gPSB7ICdGJywgJ0EnLCAnTCcsICdMJywgJ0InLCAnQScsICdDJywgJ0snIH07Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5
cGUgbmV0d29ya01vZGVJZGVudGlmaWVyW10gPSB7ICdOJywgJ0UnLCAnVCcsICdXJywgJ08nLCAn
UicsICdLJyB9OworCitPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmlu
ZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAi
dGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0
c2lkZU1hbmZlc3RQYXRoID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RN
SU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1JTUVUeXBlKTsKKyAgICBhdXRvIG1hbmlmZXN0UGF0aCA9
IFdlYkNvcmU6Om1hbmlmZXN0UGF0aChtYW5pZmVzdFVSTCk7CiAKLSAgICBNb2RlIG1vZGUgPSBF
eHBsaWNpdDsKKyAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVzdE1JTUVU
eXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CiAKLSAgICBTdHJp
bmcgbWFuaWZlc3RTdHJpbmcgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRl
cmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUpLCAiVVRGLTgiKS0+
ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNG
b3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBbJl0oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFsPEFw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4geworICAgICAgICB1c2luZyBDaGFyYWN0ZXJUeXBlID0g
dHlwZW5hbWUgZGVjbHR5cGUoYnVmZmVyKTo6Q2hhcmFjdGVyVHlwZTsKICAgICAKLSAgICAvLyBM
b29rIGZvciB0aGUgbWFnaWMgc2lnbmF0dXJlOiAiXlx4RkVGRj9DQUNIRSBNQU5JRkVTVFsgXHRd
PyIgKHRoZSBCT00gaXMgcmVtb3ZlZCBieSBUZXh0UmVzb3VyY2VEZWNvZGVyKS4KLSAgICAvLyBF
eGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1QgI2NvbW1lbnQiIGlzIGEgdmFsaWQgc2lnbmF0dXJlLgot
ICAgIC8vIEV4YW1wbGU6ICJDQUNIRSBNQU5JRkVTVDtWMiIgaXMgbm90LgotICAgIGNvbnN0IGNo
YXIgbWFuaWZlc3RTaWduYXR1cmVbXSA9ICJDQUNIRSBNQU5JRkVTVCI7Ci0gICAgaWYgKCFtYW5p
ZmVzdFN0cmluZy5zdGFydHNXaXRoKG1hbmlmZXN0U2lnbmF0dXJlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgbWFuaWZlc3Q7CisgICAg
ICAgIGF1dG8gbW9kZSA9IEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpFeHBsaWNpdDsKKwor
ICAgICAgICAvLyBMb29rIGZvciB0aGUgbWFnaWMgc2lnbmF0dXJlOiAiXlx4RkVGRj9DQUNIRSBN
QU5JRkVTVFsgXHRdPyIgKHRoZSBCT00gaXMgcmVtb3ZlZCBieSBUZXh0UmVzb3VyY2VEZWNvZGVy
KS4KKyAgICAgICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUICNjb21tZW50IiBpcyBhIHZh
bGlkIHNpZ25hdHVyZS4KKyAgICAgICAgLy8gRXhhbXBsZTogIkNBQ0hFIE1BTklGRVNUO1YyIiBp
cyBub3QuCisgICAgICAgIGlmICghc2tpcENoYXJhY3RlcnNFeGFjdGx5KGJ1ZmZlciwgY2FjaGVN
YW5pZmVzdElkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAKLSAgICBTdHJpbmdWaWV3IG1hbmlmZXN0QWZ0ZXJTaWduYXR1cmUg
PSBTdHJpbmdWaWV3KG1hbmlmZXN0U3RyaW5nKS5zdWJzdHJpbmcoc2l6ZW9mKG1hbmlmZXN0U2ln
bmF0dXJlKSAtIDEpOwotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gbWFuaWZlc3RB
ZnRlclNpZ25hdHVyZS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciog
cCA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5kID0gcCArIG1h
bmlmZXN0QWZ0ZXJTaWduYXR1cmUubGVuZ3RoKCk7Ci0KLSAgICBpZiAocCA8IGVuZCAmJiAqcCAh
PSAnICcgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnXG4nICYmICpwICE9ICdccicpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIFNraXAgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAg
ICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHInICYmICpwICE9ICdcbicpCi0gICAgICAgIHAr
KzsKLQotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZQotICAgICAg
ICB3aGlsZSAocCA8IGVuZCAmJiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInIHx8ICpwID09ICcg
JyB8fCAqcCA9PSAnXHQnKSkKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgCi0gICAgICAgIGlm
IChwID09IGVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgY29uc3Qg
VUNoYXIqIGxpbmVTdGFydCA9IHA7Ci0gICAgICAgIAotICAgICAgICAvLyBGaW5kIHRoZSBlbmQg
b2YgdGhlIGxpbmUKLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1xyJyAmJiAqcCAh
PSAnXG4nKQotICAgICAgICAgICAgcCsrOwotICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgaWYg
d2UgaGF2ZSBhIGNvbW1lbnQKLSAgICAgICAgaWYgKCpsaW5lU3RhcnQgPT0gJyMnKQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBHZXQgcmlkIG9mIHRyYWlsaW5n
IHdoaXRlc3BhY2UKLSAgICAgICAgY29uc3QgVUNoYXIqIHRtcCA9IHAgLSAxOwotICAgICAgICB3
aGlsZSAodG1wID4gbGluZVN0YXJ0ICYmICgqdG1wID09ICcgJyB8fCAqdG1wID09ICdcdCcpKQot
ICAgICAgICAgICAgdG1wLS07Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgbGluZShsaW5lU3Rh
cnQsIHRtcCAtIGxpbmVTdGFydCArIDEpOwotCi0gICAgICAgIGlmIChsaW5lID09ICJDQUNIRToi
KSAKLSAgICAgICAgICAgIG1vZGUgPSBFeHBsaWNpdDsKLSAgICAgICAgZWxzZSBpZiAobGluZSA9
PSAiRkFMTEJBQ0s6IikKLSAgICAgICAgICAgIG1vZGUgPSBGYWxsYmFjazsKLSAgICAgICAgZWxz
ZSBpZiAobGluZSA9PSAiTkVUV09SSzoiKQotICAgICAgICAgICAgbW9kZSA9IE9ubGluZUFsbG93
bGlzdDsKLSAgICAgICAgZWxzZSBpZiAobGluZS5lbmRzV2l0aCgnOicpKQotICAgICAgICAgICAg
bW9kZSA9IFVua25vd247Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gVW5rbm93bikKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlIGlmIChtb2RlID09IEV4cGxpY2l0IHx8IG1v
ZGUgPT0gT25saW5lQWxsb3dsaXN0KSB7Ci0gICAgICAgICAgICBhdXRvIHVwY29udmVydGVkTGlu
ZUNoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGxpbmUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIHAgPSB1cGNvbnZlcnRlZExpbmVDaGFyYWN0ZXJzOwot
ICAgICAgICAgICAgY29uc3QgVUNoYXIqIGxpbmVFbmQgPSBwICsgbGluZS5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5n
IHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgotICAgICAgICAgICAgd2hp
bGUgKHAgPCBsaW5lRW5kICYmICpwICE9ICdcdCcgJiYgKnAgIT0gJyAnKSAKLSAgICAgICAgICAg
ICAgICBwKys7Ci0KLSAgICAgICAgICAgIGlmIChtb2RlID09IE9ubGluZUFsbG93bGlzdCAmJiBw
IC0gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVycyA9PSAxICYmIGxpbmVbMF0gPT0gJyonKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2lsZGNhcmQgd2FzIGZvdW5kLgotICAgICAgICAgICAgICAgIG1h
bmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJz
UmVtYWluaW5nKCkgJiYgIWlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lKCpidWZmZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICAgICAgVVJMIHVybCht
YW5pZmVzdFVSTCwgbGluZS5zdWJzdHJpbmcoMCwgcCAtIHVwY29udmVydGVkTGluZUNoYXJhY3Rl
cnMpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBTa2lwIHRvIHRoZSBlbmQgb2YgdGhl
IGxpbmUuCisgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0TmV3bGlu
ZT4oYnVmZmVyKTsKIAotICAgICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
dXJsLnByb3RvY29sKCksIG1hbmlmZXN0VVJMLnByb3RvY29sKCkpKQorICAgICAgICB3aGlsZSAo
MSkgeworICAgICAgICAgICAgLy8gU2tpcCB3aGl0ZXNwYWNlCisgICAgICAgICAgICBza2lwV2hp
bGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xpbmU+KGJ1ZmZlcik7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYXV0byBsaW5lU3RhcnQg
PSBidWZmZXIucG9zaXRpb24oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRmluZCB0
aGUgZW5kIG9mIHRoZSBsaW5lCisgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwg
aXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IExpbmUgaXMgYSBjb21tZW50LCBza2lwIHRvIHRoZSBuZXh0IGxpbmUuCisgICAgICAgICAgICBp
ZiAoKmxpbmVTdGFydCA9PSAnIycpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIEdldCByaWQgb2YgdHJhaWxpbmcgd2hpdGVzcGFjZQorICAg
ICAgICAgICAgYXV0byBsaW5lRW5kID0gYnVmZmVyLnBvc2l0aW9uKCkgLSAxOworICAgICAgICAg
ICAgd2hpbGUgKGxpbmVFbmQgPiBsaW5lU3RhcnQgJiYgaXNNYW5pZmVzdFdoaXRlc3BhY2UoKmxp
bmVFbmQpKQorICAgICAgICAgICAgICAgIC0tbGluZUVuZDsKKworICAgICAgICAgICAgYXV0byBs
aW5lQnVmZmVyID0gU3RyaW5nUGFyc2luZ0J1ZmZlciB7IGxpbmVTdGFydCwgbGluZUVuZCArIDEg
fTsKKworICAgICAgICAgICAgaWYgKGxpbmVCdWZmZXJbbGluZUJ1ZmZlci5sZW5ndGhSZW1haW5p
bmcoKSAtIDFdID09ICc6JykgeworICAgICAgICAgICAgICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4
YWN0bHkobGluZUJ1ZmZlciwgY2FjaGVNb2RlSWRlbnRpZmllcjxDaGFyYWN0ZXJUeXBlPikgJiYg
bGluZUJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAg
IG1vZGUgPSBBcHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9kZTo6RXhwbGljaXQ7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGxpbmVCdWZmZXIsIGZhbGxiYWNrTW9kZUlkZW50aWZp
ZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0gMSkg
eworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6
OkZhbGxiYWNrOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShsaW5lQnVmZmVy
LCBuZXR3b3JrTW9kZUlkZW50aWZpZXI8Q2hhcmFjdGVyVHlwZT4pICYmIGxpbmVCdWZmZXIubGVu
Z3RoUmVtYWluaW5nKCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlID0gQXBwbGlj
YXRpb25DYWNoZVBhcnNlck1vZGU6Ok9ubGluZUFsbG93bGlzdDsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gSWYg
dGhlIGxpbmUgKGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZSkgZW5kcyB3aXRoIGEg
JzonIGFuZCBpc24ndCBvbmUgb2YgdGhlIGtub3duIG1vZGUKKyAgICAgICAgICAgICAgICAvLyBo
ZWFkZXJzLCB0cmFuc2l0aW9uIHRvIHRoZSAnVW5rbm93bicgbW9kZS4KKyAgICAgICAgICAgICAg
ICBtb2RlID0gQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6OlVua25vd247CiAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtb2RlID09IEV4
cGxpY2l0ICYmIG1hbmlmZXN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgdXJsKSkKKyAgICAgICAgICAgIH0KKyAgICAK
KyAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlv
bkNhY2hlUGFyc2VyTW9kZTo6VW5rbm93bjoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1vZGUgPT0gRXhwbGljaXQpCisgICAgICAgICAg
ICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2RlOjpFeHBsaWNpdDogeworICAgICAgICAg
ICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vi
c2VxdWVudCBpZ25vcmVkIHRva2Vucy4KKyAgICAgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFj
dGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAgICAgICAg
ICAgICAgYXV0byB1cmwgPSBtYWtlTWFuaWZlc3RVUkwobWFuaWZlc3RVUkwsIGxpbmVTdGFydCwg
bGluZUJ1ZmZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlk
KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwg
bWFuaWZlc3RVUkwucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChtYW5pZmVzdFVSTC5wcm90b2Nv
bElzKCJodHRwcyIpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFuaWZlc3RVUkws
IHVybCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5hZGQodXJsLnN0cmluZygpKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtYW5pZmVzdC5vbmxpbmVBbGxvd2Vk
VVJMcy5hcHBlbmQodXJsKTsKLSAgICAgICAgICAgIAotICAgICAgICB9IGVsc2UgaWYgKG1vZGUg
PT0gRmFsbGJhY2spIHsKLSAgICAgICAgICAgIGF1dG8gdXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVy
cyA9IFN0cmluZ1ZpZXcobGluZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgICAgICAg
ICBjb25zdCBVQ2hhciogcCA9IHVwY29udmVydGVkTGluZUNoYXJhY3RlcnM7Ci0gICAgICAgICAg
ICBjb25zdCBVQ2hhciogbGluZUVuZCA9IHAgKyBsaW5lLmxlbmd0aCgpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIHR3byBV
UkxzCi0gICAgICAgICAgICB3aGlsZSAocCA8IGxpbmVFbmQgJiYgKnAgIT0gJ1x0JyAmJiAqcCAh
PSAnICcpIAotICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkNhY2hlUGFyc2Vy
TW9kZTo6T25saW5lQWxsb3dsaXN0OiB7CisgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hp
dGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5z
LgorICAgICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hp
dGVzcGFjZT4obGluZUJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICBpZiAobGluZUJ1ZmZlci5w
b3NpdGlvbigpIC0gbGluZVN0YXJ0ID09IDEgJiYgKmxpbmVTdGFydCA9PSAnKicpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gV2lsZGNhcmQgd2FzIGZvdW5kLgorICAgICAgICAgICAgICAgICAg
ICBtYW5pZmVzdC5hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBhdXRvIHVybCA9IG1ha2VNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCwgbGlu
ZVN0YXJ0LCBsaW5lQnVmZmVyLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGlmICghdXJs
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90
b2NvbCgpLCBtYW5pZmVzdFVSTC5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgICAgIGlmIChwID09IGxpbmVFbmQpIHsKLSAgICAgICAgICAgICAg
ICAvLyBUaGVyZSB3YXMgbm8gd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkxzLgorICAgICAg
ICAgICAgICAgIG1hbmlmZXN0Lm9ubGluZUFsbG93ZWRVUkxzLmFwcGVuZCh1cmwpOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBVUkwgbmFtZXNwYWNlVVJMKG1hbmlmZXN0VVJMLCBsaW5lLnN1YnN0cmluZygwLCBwIC0g
dXBjb252ZXJ0ZWRMaW5lQ2hhcmFjdGVycykpOwotICAgICAgICAgICAgaWYgKCFuYW1lc3BhY2VV
UkwuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbmFt
ZXNwYWNlVVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAgICAgY2FzZSBB
cHBsaWNhdGlvbkNhY2hlUGFyc2VyTW9kZTo6RmFsbGJhY2s6IHsKKyAgICAgICAgICAgICAgICAv
LyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIHR3byBVUkxzCisgICAgICAgICAg
ICAgICAgc2tpcFVudGlsPENoYXJhY3RlclR5cGUsIGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5l
QnVmZmVyKTsKIAotICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
bWFuaWZlc3RVUkwsIG5hbWVzcGFjZVVSTCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgaWYgKGxpbmVCdWZmZXIuYXRFbmQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBUaGVyZSB3YXMgbm8gd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkxzLgorICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIC8vIEFsdGhvdWdoIDxodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9v
ZmZsaW5lLmh0bWwjcGFyc2luZy1jYWNoZS1tYW5pZmVzdHM+ICgwNy8wNi8yMDE3KSBzYWlkcwot
ICAgICAgICAgICAgLy8gdGhhdCB3ZSBzaG91bGQgYWx3YXlzIHByZWZpeCBtYXRjaCB0aGUgbWFu
aWZlc3QgcGF0aCB3ZSBvbmx5IGRvIHNvIGlmIHRoZSBtYW5pZmVzdCB3YXMgc2VydmVkIHdpdGgg
YSBub24tCi0gICAgICAgICAgICAvLyBzdGFuZGFyZCBIVFRQIENvbnRlbnQtVHlwZSBoZWFkZXIg
Zm9yIHdlYiBjb21wYXRpYmlsaXR5LgotICAgICAgICAgICAgaWYgKCFhbGxvd0ZhbGxiYWNrTmFt
ZXNwYWNlT3V0c2lkZU1hbmZlc3RQYXRoICYmICFuYW1lc3BhY2VVUkwucGF0aCgpLnN0YXJ0c1dp
dGgobWFuaWZlc3RQYXRoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICBhdXRvIG5hbWVzcGFjZVVSTCA9IG1ha2VNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCwgbGlu
ZVN0YXJ0LCBsaW5lQnVmZmVyLnBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGlmICghbmFt
ZXNwYWNlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZSBzZXBhcmF0aW5nIGZhbGxiYWNrIG5hbWVzcGFj
ZSBmcm9tIFVSTC4KLSAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAoKnAgPT0gJ1x0
JyB8fCAqcCA9PSAnICcpKQotICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICBp
ZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVzdFVSTCwgbmFtZXNwYWNlVVJM
KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIC8vIExvb2sg
Zm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVk
IHRva2Vucy4KLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBmYWxsYmFja1N0YXJ0ID0gcDsKLSAg
ICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcgJykg
Ci0gICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIC8vIEFsdGhvdWdoIDxodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vZmZsaW5lLmh0bWwjcGFyc2luZy1j
YWNoZS1tYW5pZmVzdHM+ICgwNy8wNi8yMDE3KSBzYWlkcworICAgICAgICAgICAgICAgIC8vIHRo
YXQgd2Ugc2hvdWxkIGFsd2F5cyBwcmVmaXggbWF0Y2ggdGhlIG1hbmlmZXN0IHBhdGggd2Ugb25s
eSBkbyBzbyBpZiB0aGUgbWFuaWZlc3Qgd2FzIHNlcnZlZCB3aXRoIGEgbm9uLQorICAgICAgICAg
ICAgICAgIC8vIHN0YW5kYXJkIEhUVFAgQ29udGVudC1UeXBlIGhlYWRlciBmb3Igd2ViIGNvbXBh
dGliaWxpdHkuCisgICAgICAgICAgICAgICAgaWYgKCFhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0
c2lkZU1hbmZlc3RQYXRoICYmICFuYW1lc3BhY2VVUkwucGF0aCgpLnN0YXJ0c1dpdGgobWFuaWZl
c3RQYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFVS
TCBmYWxsYmFja1VSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGZhbGxiYWNrU3RhcnQsIHAgLSBmYWxs
YmFja1N0YXJ0KSk7Ci0gICAgICAgICAgICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZhbGxiYWNrVVJMLnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAgICAgICAgIC8vIFNraXAgd2hpdGVzcGFjZSBz
ZXBhcmF0aW5nIGZhbGxiYWNrIG5hbWVzcGFjZSBmcm9tIFVSTC4KKyAgICAgICAgICAgICAgICBz
a2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIp
OwogCi0gICAgICAgICAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtYW5pZmVz
dFVSTCwgZmFsbGJhY2tVUkwpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIGF1dG8gZmFsbGJhY2tTdGFydCA9IGxpbmVCdWZmZXIucG9zaXRpb24oKTsKKworICAg
ICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZy
b20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4KKyAgICAgICAgICAgICAgICBza2lwVW50aWw8
Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOworCisgICAg
ICAgICAgICAgICAgYXV0byBmYWxsYmFja1VSTCA9IG1ha2VNYW5pZmVzdFVSTChtYW5pZmVzdFVS
TCwgZmFsbGJhY2tTdGFydCwgbGluZUJ1ZmZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIG1hbmlmZXN0LmZhbGxiYWNrVVJMcy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIobmFtZXNwYWNlVVJMLCBmYWxsYmFja1VSTCkpOyAgICAgICAgICAgIAotICAgICAgICB9
IGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
bWFuaWZlc3RVUkwsIGZhbGxiYWNrVVJMKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBtYW5pZmVzdC5mYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKG5hbWVzcGFjZVVSTCwgZmFsbGJhY2tVUkwpKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAgICAgICB9CiAKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1hbmlmZXN0OworICAgIH0pOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuaAko
cmV2aXNpb24gMjYzNjk3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBNYW5pZmVzdCB7CitzdHJ1Y3QgQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0IHsKICAgICBWZWN0b3I8VVJMPiBvbmxpbmVBbGxvd2VkVVJMczsKICAgICBIYXNo
U2V0PFN0cmluZz4gZXhwbGljaXRVUkxzOwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIGZhbGxiYWNr
VVJMczsKLSAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVlc3RzOyAvLyBXaWxkY2FyZCBmb3Vu
ZCBpbiBORVRXT1JLIHNlY3Rpb24uCisgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyB7
IGZhbHNlIH07IC8vIFdpbGRjYXJkIGZvdW5kIGluIE5FVFdPUksgc2VjdGlvbi4KIH07CiAKLWJv
b2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1h
bmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0Jik7
CitPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RN
SU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>