<?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>40406</bug_id>
          
          <creation_ts>2010-06-10 00:43:33 -0700</creation_ts>
          <short_desc>Move HTML5 entity parser to its own file</short_desc>
          <delta_ts>2010-06-10 00:49:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236203</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-10 00:43:33 -0700</bug_when>
    <thetext>Move HTML5 entity parser to its own file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236204</commentid>
    <comment_count>1</comment_count>
      <attachid>58341</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-10 00:45:35 -0700</bug_when>
    <thetext>Created attachment 58341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236205</commentid>
    <comment_count>2</comment_count>
      <attachid>58341</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-10 00:47:53 -0700</bug_when>
    <thetext>Comment on attachment 58341
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236206</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-10 00:47:58 -0700</bug_when>
    <thetext>Attachment 58341 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/HTML5EntityParser.cpp:69:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236208</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-10 00:49:07 -0700</bug_when>
    <thetext>Committed r60941: &lt;http://trac.webkit.org/changeset/60941&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58341</attachid>
            <date>2010-06-10 00:45:35 -0700</date>
            <delta_ts>2010-06-10 00:48:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40406-20100610004534.patch</filename>
            <type>text/plain</type>
            <size>154493</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYtMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IEhUTUw1IGVudGl0eSBwYXJzZXIgdG8gaXRzIG93biBmaWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDQwNgorCisgICAgICAgIE1vdmluZyB0aGlz
IGFsZ29yaXRobSB0byBpdHMgb3duIGZpbGUgYmV0dGVyIGVuY2Fwc3VsYXRlcyBpdHMKKyAgICAg
ICAgZGVwZW5kZW5jaWVzIGFuZCBtYWtlcyBpdCBjYWxsYWJsZSBmcm9tIG90aGVyIHBhcnRzIG9m
IFdlYkNvcmUuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHA6IENvcGllZCBmcm9tIFdlYkNvcmUv
aHRtbC9IVE1MNUxleGVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lSFRNTDVFbnRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTDVFbnRpdHlQYXJz
ZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaC4KKyAgICAgICAgKiBo
dG1sL0hUTUw1TGV4ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6cHJvY2Vz
c0VudGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpuZXh0VG9rZW4pOgorICAg
ICAgICAqIGh0bWwvSFRNTDVMZXhlci5oOgorCiAyMDEwLTA2LTA5ICBUb255IEdlbnRpbGNvcmUg
IDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
SW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQu
bWsJKHJldmlzaW9uIDYwOTM4KQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDcsNiArMjQ3LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVT
KSBcCiAJaHRtbC9GaWxlLmNwcCBcCiAJaHRtbC9GaWxlTGlzdC5jcHAgXAogCWh0bWwvRm9ybURh
dGFMaXN0LmNwcCBcCisJaHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHAgXAogCWh0bWwvSFRNTDVM
ZXhlci5jcHAgXAogCWh0bWwvSFRNTDVUb2tlbml6ZXIuY3BwIFwKIAlodG1sL0hUTUw1VHJlZUJ1
aWxkZXIuY3BwIFwKSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNjA5MzgpCisrKyBXZWJDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNiArOTAzLDcgQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIGh0bWwvRmlsZS5jcHAKICAgICBodG1sL0ZpbGVMaXN0LmNwcAogICAgIGh0
bWwvRm9ybURhdGFMaXN0LmNwcAorICAgIGh0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwCiAgICAg
aHRtbC9IVE1MNUxleGVyLmNwcAogICAgIGh0bWwvSFRNTDVUb2tlbml6ZXIuY3BwCiAgICAgaHRt
bC9IVE1MNVRyZWVCdWlsZGVyLmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2MDkzOCkKKysrIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwODcsNiArMTA4Nyw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0ZpbGVUaHJlYWRUYXNrLmggXAog
CVdlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIFwKIAlXZWJDb3JlL2h0bWwvRm9ybURhdGFM
aXN0LmggXAorCVdlYkNvcmUvaHRtbC9IVE1MNUVudGl0eVBhcnNlci5jcHAgXAorCVdlYkNvcmUv
aHRtbC9IVE1MNUVudGl0eVBhcnNlci5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAg
XAogCVdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmggXAogCVdlYkNvcmUvaHRtbC9IVE1MNVRva2Vu
LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDYwOTM4KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTE0NzQsNiArMTQ3NCw4IEBACiAgICAgICAgICAgICAnaHRtbC9GaWxl
VGhyZWFkVGFzay5oJywKICAgICAgICAgICAgICdodG1sL0Zvcm1EYXRhTGlzdC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvRm9ybURhdGFMaXN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTDVF
bnRpdHlQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUw1RW50aXR5UGFyc2VyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVMZXhlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
SFRNTDVMZXhlci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUw1VG9rZW5pemVyLmNwcCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5w
cm8JKHJldmlzaW9uIDYwOTM4KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5
KQpAQCAtNjEwLDYgKzYxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvRmlsZVN0cmVhbVBy
b3h5LmNwcCBcCiAgICAgaHRtbC9GaWxlVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxp
c3QuY3BwIFwKKyAgICBodG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCBcCiAgICAgaHRtbC9IVE1M
NUxleGVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNVRva2VuaXplci5jcHAgXAogICAgIGh0bWwvSFRN
TDVUcmVlQnVpbGRlci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiA2MDkzOCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxMDI1LDYgKzMxMDI1LDE0IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTDVFbnRp
dHlQYXJzZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxIVE1MNUVudGl0eVBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MNUxleGVyLmNwcCIN
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gNjA5MzgpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU1NSw2ICsyNTU1LDggQEAK
IAkJOTczODg5QTExMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzM4ODk5RjExNkVBOURDMDBB
REYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTczRTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNw
cCAqLzsgfTsKIAkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNF
MzI1NTEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzZFODk2MDExQzBDQTNB
MDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RTg5NUUxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUw1
RW50aXR5UGFyc2VyLmNwcCAqLzsgfTsKKwkJOTc2RTg5NjExMUMwQ0EzQTAwRUE5Q0E5IC8qIEhU
TUw1RW50aXR5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJzZXIuaCAq
LzsgfTsKIAkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0Qx
MTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0
M0Q0MTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNC
IC8qIFJlZGlyZWN0U2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTdDMDc4NTAxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QzA3ODRG
MTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggKi87IH07CkBAIC04MTUwLDYgKzgxNTIs
OCBAQAogCQk5NzM4ODk5RjExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNl
TG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcz
RTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NkU4OTVFMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MNUVu
dGl0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1M
NUVudGl0eVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NkU4OTVG
MTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MNUVudGl0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MNUVudGl0eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVkaXJlY3RTY2hlZHVs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRBMDAw
MEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVkaXJlY3RTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3VmZml4VHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM0MjgsNiArMTM0MzIsOCBAQAogCQkJCTg5NTI1M0RFMTE2QzRGMDYwMENBQkYwMCAv
KiBGaWxlVGhyZWFkVGFzay5oICovLAogCQkJCUE4MTM2RDM3MDk3M0E4RTcwMEQ3NDQ2MyAvKiBG
b3JtRGF0YUxpc3QuY3BwICovLAogCQkJCUE4MTM2RDM2MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3Jt
RGF0YUxpc3QuaCAqLywKKwkJCQk5NzZFODk1RTExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRp
dHlQYXJzZXIuY3BwICovLAorCQkJCTk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MNUVu
dGl0eVBhcnNlci5oICovLAogCQkJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxl
eGVyLmNwcCAqLywKIAkJCQk5N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5o
ICovLAogCQkJCUE4M0IzQUVFMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MNVNjcmlwdFJ1bm5lci5j
cHAgKi8sCkBAIC0xOTQ1Miw2ICsxOTQ1OCw3IEBACiAJCQkJNEYxNTM0REUxMUI1MzJFQzAwMjFG
RDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYxNTM0RTAxMUI1
MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTc2RTg5NjExMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUw1RW50aXR5UGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIxNzU1LDYgKzIxNzYyLDcgQEAKIAkJCQlBN0JCRTI2NjExQUZCM0Yy
MDAwNUVBMDMgLyogSlNIVE1MTWV0ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2
QjA1NDA5MTFCNjhGMTAwMDI1NjRDNSAvKiBJREJPYmplY3RTdG9yZUltcGwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjk4RkZGNDQxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTc2RTg5NjAxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUw1RW50aXR5
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIu
Y3BwCShyZXZpc2lvbiA2MDkzOCkJKGZyb20gV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwOjYw
OTM4KQorKysgV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE2OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
VE1MNUxleGVyLmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJIVE1M
NVRva2VuLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvVW5pY29kZS5oPgorCisKKy8vIFVzZSBfX0dOVUNfXyBpbnN0ZWFkIG9mIFBMQVRGT1JN
KEdDQykgdG8gc3RheSBjb25zaXN0ZW50IHdpdGggdGhlIGdwZXJmIGdlbmVyYXRlZCBjIGZpbGUK
KyNpZmRlZiBfX0dOVUNfXworLy8gVGhlIG1haW4gdG9rZW5pemVyIGluY2x1ZGVzIHRoaXMgdG9v
IHNvIHdlIGFyZSBnZXR0aW5nIHR3byBjb3BpZXMgb2YgdGhlIGRhdGEuIEhvd2V2ZXIsIHRoaXMg
d2F5IHRoZSBjb2RlIGdldHMgaW5saW5lZC4KKyNpbmNsdWRlICJIVE1MRW50aXR5TmFtZXMuYyIK
KyNlbHNlCisvLyBOb3QgaW5saW5lZCBmb3Igbm9uLUdDQyBjb21waWxlcnMKK3N0cnVjdCBFbnRp
dHkgeworICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgaW50IGNvZGU7Cit9OworY29uc3Qgc3Ry
dWN0IEVudGl0eSogZmluZEVudGl0eShyZWdpc3RlciBjb25zdCBjaGFyKiBzdHIsIHJlZ2lzdGVy
IHVuc2lnbmVkIGludCBsZW4pOworI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworbmFtZXNw
YWNlIHsKKworc3RhdGljIGNvbnN0IFVDaGFyIHdpbmRvd3NMYXRpbjFFeHRlbnNpb25BcnJheVsz
Ml0gPSB7CisgICAgMHgyMEFDLCAweDAwODEsIDB4MjAxQSwgMHgwMTkyLCAweDIwMUUsIDB4MjAy
NiwgMHgyMDIwLCAweDIwMjEsIC8vIDgwLTg3CisgICAgMHgwMkM2LCAweDIwMzAsIDB4MDE2MCwg
MHgyMDM5LCAweDAxNTIsIDB4MDA4RCwgMHgwMTdELCAweDAwOEYsIC8vIDg4LThGCisgICAgMHgw
MDkwLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFDLCAweDIwMUQsIDB4MjAyMiwgMHgyMDEzLCAweDIw
MTQsIC8vIDkwLTk3CisgICAgMHgwMkRDLCAweDIxMjIsIDB4MDE2MSwgMHgyMDNBLCAweDAxNTMs
IDB4MDA5RCwgMHgwMTdFLCAweDAxNzgsIC8vIDk4LTlGCit9OworCitpbmxpbmUgVUNoYXIgdG9M
b3dlckNhc2UoVUNoYXIgY2MpCit7CisgICAgQVNTRVJUKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
OworICAgIGNvbnN0IGludCBsb3dlckNhc2VPZmZzZXQgPSAweDIwOworICAgIHJldHVybiBjYyAr
IGxvd2VyQ2FzZU9mZnNldDsKK30KKworaW5saW5lIHZvaWQgYWR2YW5jZVN0cmluZ0FuZEFTU0VS
VElnbm9yaW5nQ2FzZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29uc3QgY2hhciogZXhwZWN0
ZWRDaGFyYWN0ZXJzKQoreworICAgIHdoaWxlICgqZXhwZWN0ZWRDaGFyYWN0ZXJzKQorICAgICAg
ICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgqZXhwZWN0ZWRDaGFyYWN0ZXJz
KyspOworfQorCitpbmxpbmUgYm9vbCB2ZWN0b3JFcXVhbHNTdHJpbmcoY29uc3QgVmVjdG9yPFVD
aGFyLCAzMj4mIHZlY3RvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgaWYgKHZlY3Rv
ci5zaXplKCkgIT0gc3RyaW5nLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Y29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAgIGNvbnN0
IFVDaGFyKiB2ZWN0b3JEYXRhID0gdmVjdG9yLmRhdGEoKTsKKyAgICAvLyBGSVhNRTogSXMgdGhl
cmUgYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gd2Ugc2hvdWxkIGJlIGNhbGxpbmcgaGVyZT8KKyAg
ICByZXR1cm4gIW1lbWNtcChzdHJpbmdEYXRhLCB2ZWN0b3JEYXRhLCB2ZWN0b3Iuc2l6ZSgpICog
c2l6ZW9mKFVDaGFyKSk7Cit9CisKK2lubGluZSBVQ2hhciBhZGp1c3RFbnRpdHkodW5zaWduZWQg
dmFsdWUpCit7CisgICAgaWYgKCh2YWx1ZSAmIH4weDFGKSAhPSAweDAwODApCisgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICByZXR1cm4gd2luZG93c0xhdGluMUV4dGVuc2lvbkFycmF5W3ZhbHVl
IC0gMHg4MF07Cit9CisKK2lubGluZSB1bnNpZ25lZCBsZWdhbEVudGl0eUZvcih1bnNpZ25lZCB2
YWx1ZSkKK3sKKyAgICAvLyBGSVhNRTogQSBudW1iZXIgb2Ygc3BlY2lmaWMgZW50aXR5IHZhbHVl
cyBnZW5lcmF0ZSBwYXJzZSBlcnJvcnMuCisgICAgaWYgKHZhbHVlID09IDAgfHwgdmFsdWUgPiAw
eDEwRkZGRiB8fCAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REZGRikpCisgICAgICAg
IHJldHVybiAweEZGRkQ7CisgICAgaWYgKHZhbHVlIDwgMHhGRkZGKQorICAgICAgICByZXR1cm4g
YWRqdXN0RW50aXR5KHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2lubGluZSBib29s
IGlzSGV4RGlnaXQoVUNoYXIgY2MpCit7CisgICAgcmV0dXJuIChjYyA+PSAnMCcgJiYgY2MgPD0g
JzknKSB8fCAoY2MgPj0gJ2EnICYmIGNjIDw9ICdmJykgfHwgKGNjID49ICdBJyAmJiBjYyA8PSAn
RicpOworfQorCitpbmxpbmUgYm9vbCBpc0FscGhhTnVtZXJpYyhVQ2hhciBjYykKK3sKKyAgICBy
ZXR1cm4gKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHx8IChjYyA+PSAnYScgJiYgY2MgPD0gJ3on
KSB8fCAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJyk7Cit9CisKK3ZvaWQgdW5jb25zdW1lQ2hhcmFj
dGVycyhTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29uc3QgVmVjdG9yPFVDaGFyLCAxMD4mIGNv
bnN1bWVkQ2hhcmFjdGVycykKK3sKKyAgICBpZiAoY29uc3VtZWRDaGFyYWN0ZXJzLnNpemUoKSA9
PSAxKQorICAgICAgICBzb3VyY2UucHVzaChjb25zdW1lZENoYXJhY3RlcnNbMF0pOworICAgIGVs
c2UgaWYgKGNvbnN1bWVkQ2hhcmFjdGVycy5zaXplKCkgPT0gMikgeworICAgICAgICBzb3VyY2Uu
cHVzaChjb25zdW1lZENoYXJhY3RlcnNbMF0pOworICAgICAgICBzb3VyY2UucHVzaChjb25zdW1l
ZENoYXJhY3RlcnNbMV0pOworICAgIH0gZWxzZQorICAgICAgICBzb3VyY2UucHJlcGVuZChTZWdt
ZW50ZWRTdHJpbmcoU3RyaW5nKGNvbnN1bWVkQ2hhcmFjdGVycy5kYXRhKCksIGNvbnN1bWVkQ2hh
cmFjdGVycy5zaXplKCkpKSk7Cit9CisKK2lubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5nU3Rh
dGUoSFRNTDVMZXhlcjo6U3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIHN0YXRlID09IEhUTUw1
TGV4ZXI6OlJDREFUQUVuZFRhZ09wZW5TdGF0ZQorICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxl
eGVyOjpSQ0RBVEFFbmRUYWdOYW1lU3RhdGUKKyAgICAgICAgfHwgc3RhdGUgPT0gSFRNTDVMZXhl
cjo6UkFXVEVYVEVuZFRhZ09wZW5TdGF0ZQorICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxleGVy
OjpSQVdURVhURW5kVGFnTmFtZVN0YXRlCisgICAgICAgIHx8IHN0YXRlID09IEhUTUw1TGV4ZXI6
OlNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUKKyAgICAgICAgfHwgc3RhdGUgPT0gSFRNTDVMZXhl
cjo6U2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZQorICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxl
eGVyOjpTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZQorICAgICAgICB8fCBzdGF0ZSA9
PSBIVE1MNUxleGVyOjpTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZTsKK30KKworfQor
CitIVE1MNUxleGVyOjpIVE1MNUxleGVyKCkKK3sKKyAgICByZXNldCgpOworfQorCitIVE1MNUxl
eGVyOjp+SFRNTDVMZXhlcigpCit7Cit9CisKK3ZvaWQgSFRNTDVMZXhlcjo6cmVzZXQoKQorewor
ICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgbV90b2tlbiA9IDA7CisgICAgbV9saW5lTnVt
YmVyID0gMDsKKyAgICBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKKyAg
ICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wwJzsKK30KKwordW5zaWduZWQgSFRN
TDVMZXhlcjo6Y29uc3VtZUVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90
RW5vdWdoQ2hhcmFjdGVycykKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBDaGFyYWN0ZXJSZWZl
cmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUgfHwgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rl
ciA9PSAnIicgfHwgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnXCcnIHx8IG1fYWRk
aXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJz4nKTsKKyAgICBBU1NFUlQoIW5vdEVub3VnaENo
YXJhY3RlcnMpOworCisgICAgZW51bSBFbnRpdHlTdGF0ZSB7CisgICAgICAgIEluaXRpYWwsCisg
ICAgICAgIE51bWJlclR5cGUsCisgICAgICAgIE1heWJlSGV4TG93ZXJDYXNlWCwKKyAgICAgICAg
TWF5YmVIZXhVcHBlckNhc2VYLAorICAgICAgICBIZXgsCisgICAgICAgIERlY2ltYWwsCisgICAg
ICAgIE5hbWVkCisgICAgfTsKKyAgICBFbnRpdHlTdGF0ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7
CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwPiBjb25zdW1l
ZENoYXJhY3RlcnM7CisgICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRpdHlOYW1lOworCisgICAgd2hp
bGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7CisgICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKKyAg
ICAgICAgc3dpdGNoIChlbnRpdHlTdGF0ZSkgeworICAgICAgICBjYXNlIEluaXRpYWw6IHsKKyAg
ICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJzwnIHx8IGNjID09ICcmJykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChtX3N0YXRlID09IENoYXJhY3RlclJlZmVyZW5j
ZUluQXR0cmlidXRlVmFsdWVTdGF0ZSAmJiBjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFj
dGVyKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKGNjID09ICcj
JykgeworICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTnVtYmVyVHlwZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoY2MgPj0gJ2En
ICYmIGNjIDw9ICd6JykgfHwgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpKSB7CisgICAgICAgICAg
ICAgICAgZW50aXR5U3RhdGUgPSBOYW1lZDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNh
c2UgTnVtYmVyVHlwZTogeworICAgICAgICAgICAgaWYgKGNjID09ICd4JykgeworICAgICAgICAg
ICAgICAgIGVudGl0eVN0YXRlID0gTWF5YmVIZXhMb3dlckNhc2VYOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNjID09ICdYJykgeworICAg
ICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTWF5YmVIZXhVcHBlckNhc2VYOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNjID49ICcwJyAm
JiBjYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IERlY2ltYWw7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzb3Vy
Y2UucHVzaCgnIycpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBNYXliZUhleExvd2VyQ2FzZVg6IHsKKyAgICAgICAgICAgIGlmIChpc0hleERpZ2l0KGNj
KSkgeworICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gSGV4OworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc291cmNlLnB1c2goJyMnKTsK
KyAgICAgICAgICAgIHNvdXJjZS5wdXNoKCd4Jyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIE1heWJlSGV4VXBwZXJDYXNlWDogeworICAgICAgICAgICAg
aWYgKGlzSGV4RGlnaXQoY2MpKSB7CisgICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBIZXg7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBz
b3VyY2UucHVzaCgnIycpOworICAgICAgICAgICAgc291cmNlLnB1c2goJ1gnKTsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNhc2UgSGV4OiB7CisgICAgICAgICAg
ICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBy
ZXN1bHQgKiAxNiArIGNjIC0gJzAnOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ2EnICYm
IGNjIDw9ICdmJykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIDEwICsg
Y2MgLSAnYSc7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ0YnKQor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAgKyBjYyAtICdBJzsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7JykgeworICAgICAgICAgICAgICAgIHNvdXJjZS5h
ZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRp
dHlGb3IocmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICByZXR1
cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRGVjaW1hbDogeworICAgICAgICAgICAgaWYgKGNjID49ICcwJyAmJiBj
YyA8PSAnOScpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTAgKyBjYyAtICcw
JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7JykgeworICAgICAgICAgICAgICAgIHNv
dXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVn
YWxFbnRpdHlGb3IocmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBOYW1lZDogeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y29kZSBpcyB3cm9uZy4gV2UgbmVlZCB0byBmaW5kIHRoZSBsb25nZXN0IG1hdGNoaW5nIGVudGl0
eS4KKyAgICAgICAgICAgIC8vICAgICAgICBUaGUgZXhhbXBsZXMgZnJvbSB0aGUgc3BlYyBhcmU6
CisgICAgICAgICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aXQ7IEkgdGVsbCB5b3UKKyAgICAg
ICAgICAgIC8vICAgICAgICAgICAgSSdtICZub3RpbjsgSSB0ZWxsIHlvdQorICAgICAgICAgICAg
Ly8gICAgICAgIEluIHRoZSBmaXJzdCBjYXNlLCAiJm5vdCIgaXMgdGhlIGVudGl0eS4gIEluIHRo
ZSBzZWNvbmQKKyAgICAgICAgICAgIC8vICAgICAgICBjYXNlLCAiJm5vdGluOyIgaXMgdGhlIGVu
dGl0eS4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBPdXIgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGlz
IGluY29tcGxldGUuCisgICAgICAgICAgICAvLyBGSVhNRTogVGhlIG51bWJlciA4IGJlbG93IGlz
IGJvZ3VzLgorICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpICYmIGVudGl0eU5h
bWUuc2l6ZSgpIDw9IDgpIHsKKyAgICAgICAgICAgICAgICBjYyA9ICpzb3VyY2U7CisgICAgICAg
ICAgICAgICAgaWYgKGNjID09ICc7JykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBFbnRp
dHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50aXR5TmFtZS5kYXRhKCksIGVudGl0eU5hbWUuc2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJzsnKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghaXNBbHBoYU51bWVy
aWMoY2MpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmlu
ZEVudGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoZW50aXR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBIVE1M
NSB0ZWxscyB1cyB0byBpZ25vcmUgdGhpcyBlbnRpdHksIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgbG9va2hlYWQgY2hhcmFjdGVyIGlz
ICc9Jy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlID09IENoYXJhY3RlclJl
ZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSAmJiBjYyA9PSAnPScpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZW50aXR5TmFtZS5hcHBlbmQoY2MpOworICAgICAg
ICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAg
IHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG5vdEVub3VnaENoYXJhY3RlcnMgPSBzb3VyY2UuaXNFbXB0eSgpOworICAgICAgICAgICAgdW5j
b25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnN1bWVkQ2hhcmFj
dGVycy5hcHBlbmQoY2MpOworICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7Cisg
ICAgfQorICAgIEFTU0VSVChzb3VyY2UuaXNFbXB0eSgpKTsKKyAgICBub3RFbm91Z2hDaGFyYWN0
ZXJzID0gdHJ1ZTsKKyAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFy
YWN0ZXJzKTsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJv
Y2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBib29sIG5vdEVub3Vn
aENoYXJhY3RlcnMgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVFbnRpdHko
c291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVy
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghdmFsdWUpCisgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyYnKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRDb2RlUG9pbnQodmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCisjaWYgQ09NUElMRVIoTVNWQykKKy8vIFdlIG5lZWQgdG8g
ZGlzYWJsZSB0aGUgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgYmVjYXVzZSB3ZSB3YW50IHRv
IGFzc2VydAorLy8gdGhhdCBzb21lIGNvZGUgcG9pbnRzIGFyZW4ndCByZWFjaGVkIGluIHRoZSBz
dGF0ZSBtYWNoaW5lLgorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDIpCisjZW5kaWYKKwor
I2RlZmluZSBCRUdJTl9TVEFURShzdGF0ZU5hbWUpIGNhc2Ugc3RhdGVOYW1lOiBzdGF0ZU5hbWU6
CisjZGVmaW5lIEVORF9TVEFURSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBicmVhazsKKworLy8g
V2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJyZWNvbnN1bWUgdGhl
IGN1cnJlbnQgaW5wdXQKKy8vIGNoYXJhY3RlciBpbiB0aGUgPG11bWJsZT4gc3RhdGUuIgorI2Rl
ZmluZSBSRUNPTlNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0g
c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisvLyBXZSB1c2Ug
dGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgImNvbnN1bWUgdGhlIG5leHQgaW5w
dXQKKy8vIGNoYXJhY3RlciAuLi4gYW5kIHN3aXRjaCB0byB0aGUgPG11bWJsZT4gc3RhdGUuIgor
I2RlZmluZSBBRFZBTkNFX1RPKHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRl
ID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShzb3Vy
Y2UsIG1fbGluZU51bWJlcikpICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRC
dWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7ICAgICAgICAgICAgICAgXAorICAgICAgICBj
YyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAgICAg
ICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisv
LyBTb21ldGltZXMgdGhlcmUncyBtb3JlIGNvbXBsaWNhdGVkIGxvZ2ljIGluIHRoZSBzcGVjIHRo
YXQgc2VwYXJhdGVzIHdoZW4KKy8vIHdlIGNvbnN1bWUgdGhlIG5leHQgaW5wdXQgY2hhcmFjdGVy
IGFuZCB3aGVuIHdlIHN3aXRjaCB0byBhIHBhcnRpY3VsYXIKKy8vIHN0YXRlLiAgV2UgaGFuZGxl
IHRob3NlIGNhc2VzIGJ5IGFkdmFuY2luZyB0aGUgc291cmNlIGRpcmVjdGx5IGFuZCB1c2luZwor
Ly8gdGhpcyBtYWNybyB0byBzd2l0Y2ggdG8gdGhlIGluZGljYXRlZCBzdGF0ZS4KKyNkZWZpbmUg
U1dJVENIX1RPKHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9IHN0YXRl
TmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgaWYgKCFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlLCBtX2xpbmVO
dW1iZXIpKSAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSBtX2lu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAg
IFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworLy8gV2UgdXNl
IHRoaXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJFbWl0IHRoZSBjdXJyZW50IDxt
dW1ibGU+CisvLyB0b2tlbi4gU3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4iICBXZSB1c2Ug
dGhlIHdvcmQgInJlc3VtZSIgaW5zdGVhZCBvZgorLy8gc3dpdGNoIHRvIGluZGljYXRlIHRoYXQg
dGhpcyBtYWNybyBhY3R1YWxseSByZXR1cm5zIGFuZCB0aGF0IHdlJ2xsIGVuZCB1cAorLy8gaW4g
dGhlIHN0YXRlIHdoZW4gd2UgInJlc3VtZSIgKGkuZS4sIGFyZSBjYWxsZWQgYWdhaW4pLgorI2Rl
ZmluZSBFTUlUX0FORF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0g
c3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1
cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIF9GTFVTSF9CVUZGRVJFRF9F
TkRfVEFHKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6Q2hhcmFjdGVyIHx8ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICBtX3Rv
a2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7ICAgICAgICAgICAgICBc
CisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TDVUb2tlbjo6Q2hhcmFjdGVyKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1l
KTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1l
LmNsZWFyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgbV9zdGF0ZSA9IHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNv
dXJjZS5pc0VtcHR5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291
cmNlLCBtX2xpbmVOdW1iZXIpKSAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
Y2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBGTFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRl
ID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBfRkxVU0hfQlVGRkVSRURfRU5EX1RBRygpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCitib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCit7CisgICAgLy8gSWYgd2UgaGF2ZSBhIHRva2Vu
IGluIHByb2dyZXNzLCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCisgICAg
Ly8gd2l0aCB0aGUgc2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgorICAgIEFTU0VSVCgh
bV90b2tlbiB8fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tl
bjo6VW5pbml0aWFsaXplZCk7CisgICAgbV90b2tlbiA9ICZ0b2tlbjsKKworICAgIGlmICghbV9i
dWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpICYmICFpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1f
c3RhdGUpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYWxsIGZsdXNoQnVmZmVy
ZWRFbmRUYWcoKS4KKyAgICAgICAgLy8gV2Ugc3RhcnRlZCBhbiBlbmQgdGFnIGR1cmluZyBvdXIg
bGFzdCBpdGVyYXRpb24uCisgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRF
bmRUYWdOYW1lKTsKKyAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAg
ICAgaWYgKG1fc3RhdGUgPT0gRGF0YVN0YXRlKSB7CisgICAgICAgICAgICAvLyBXZSdyZSBiYWNr
IGluIHRoZSBkYXRhIHN0YXRlLCBzbyB3ZSBtdXN0IGJlIGRvbmUgd2l0aCB0aGUgdGFnLgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc291cmNl
LmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9s
aW5lTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRv
a2VuKHNvdXJjZSk7CisgICAgVUNoYXIgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5l
eHRJbnB1dENoYXJhY3RlcigpOworCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2lu
Zy1tYWluLWluYm9keQorICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljIGlzIGRpZmZlcmVudCB0
aGFuIHRoZSBnZW5lcmljIFxyXG4gY29sbGFwc2luZworICAgIC8vIGhhbmRsZWQgaW4gdGhlIGlu
cHV0IHN0cmVhbSBwcmVwcm9jZXNzb3IuICBUaGlzIGxvZ2ljIGlzIGhlcmUgYXMgYW4KKyAgICAv
LyAiYXV0aG9yaW5nIGNvbnZlbmllbmNlIiBzbyBmb2xrcyBjYW4gd3JpdGU6CisgICAgLy8KKyAg
ICAvLyA8cHJlPgorICAgIC8vIGxvcmVtIGlwc3VtCisgICAgLy8gbG9yZW0gaXBzdW0KKyAgICAv
LyA8L3ByZT4KKyAgICAvLworICAgIC8vIHdpdGhvdXQgZ2V0dGluZyBhbiBleHRyYSBuZXdsaW5l
IGF0IHRoZSBzdGFydCBvZiB0aGVpciA8cHJlPiBlbGVtZW50LgorICAgIGlmIChtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3RpbmcpIHsKKyAgICAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JM
aXN0aW5nID0gZmFsc2U7CisgICAgICAgIGlmIChtX3N0YXRlID09IERhdGFTdGF0ZSAmJiBjYyA9
PSAnXG4nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgIH0KKworICAg
IC8vIFNvdXJjZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jdG9rZW5pc2F0aW9uMAorICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIEJFR0lOX1NU
QVRFKERhdGFTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgQURW
QU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYg
KGNjID09ICc8JykgeworICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRv
a2VuOjpDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2Yg
Y2hhcmFjdGVyIHRva2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQorICAgICAgICAgICAgICAgIC8vIGFy
ZSBlbWl0dGluZyBsYXppbHkgaGVyZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSkgeworICAg
ICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoc291cmNlKSkKKyAgICAgICAgICAgIHJldHVybiBzaG91
bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOworICAgICAgICBTV0lUQ0hfVE8o
RGF0YVN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFJD
REFUQVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnJicpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOworICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPCcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUxlc3NUaGFuU2lnblN0YXRl
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0
YXRlKSB7CisgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQorICAgICAgICAgICAg
cmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAgICAg
IFNXSVRDSF9UTyhSQ0RBVEFTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShSQVdURVhUU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc8JykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oUkFXVEVYVFN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnPCcp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5E
X1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFBMQUlOVEVYVFN0YXRlKSB7CisgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOworICAgICAgICBBRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKKyAg
ICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkgewor
ICAgICAgICBpZiAoY2MgPT0gJyEnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhNYXJrdXBEZWNs
YXJhdGlvbk9wZW5TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0g
J0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyh0
b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdO
YW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykgeworICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIC8vIFRoZSBzcGVjIGNvbnN1bWVzIHRoZSBj
dXJyZW50IGNoYXJhY3RlciBiZWZvcmUgc3dpdGNoaW5nCisgICAgICAgICAgICAvLyB0byB0aGUg
Ym9ndXMgY29tbWVudCBzdGF0ZSwgYnV0IGl0J3MgZWFzaWVyIHRvIGltcGxlbWVudAorICAgICAg
ICAgICAgLy8gaWYgd2UgcmVjb25zdW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkg
eworICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90
b2tlbi0+YmVnaW5FbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0g
J3onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4n
KSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKKyAgICAgICAg
aWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09
ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxm
Q2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAg
ICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9O
YW1lKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUo
Y2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIo
KTsKKyAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgUkVD
T05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUo
KQorCisgICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKSB7CisgICAgICAgIGlm
IChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2Fz
ZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxl
RW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihS
Q0RBVEFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPj0gJ0En
ICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNj
KTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8
fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBw
cm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0Vf
VE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJy8nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAg
ICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRh
Z1N0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxV
U0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZl
cik7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOworICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRf
U1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKSB7Cisg
ICAgICAgIGlmIChjYyA9PSAnLycpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNs
ZWFyKCk7CisgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgp
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRf
U1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSkgeworICAg
ICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9M
b3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRv
UG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
JzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihSQVdURVhUU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShSQVdURVhURW5kVGFnTmFtZVN0YXRlKSB7CisgICAgICAgIGlm
IChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2Fz
ZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJs
ZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3Rh
dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAg
ICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNI
X0FORF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRl
RW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
eworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAg
ICAgICAgICAgIEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENo
YXJhY3RlcignLycpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90
ZW1wb3JhcnlCdWZmZXIpOworICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIo
KTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhTGVzc1Ro
YW5TaWduU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgbV90
ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5k
VGFnTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5k
VGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyEnKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUp
IHsKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAn
eicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CisgICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVT
dGF0ZSkgeworICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2li
bGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNj
IDw9ICd6JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBj
YyA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQor
ICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBG
TFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3By
aWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
JzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2Ny
aXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAg
QkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpIHsKKyAgICAgICAgaWYgKGNj
ID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNo
U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERh
c2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlw
dERhdGFTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShT
Y3JpcHREYXRhRXNjYXBlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlZERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQorICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkgeworICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNj
YXBlZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFFc2NhcGVkRGFzaERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkgewor
ICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5j
bGVhcigpOworICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHko
KSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBt
X3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90
ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVT
dGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
JzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2Ny
aXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID49ICdBJyAm
JiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7
CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBt
X3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVu
ZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFn
TmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
JzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1l
U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAn
YScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3By
aWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
LycpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAg
ICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3Rh
dGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBGTFVTSF9F
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBS
RUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVT
dGFydFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8
IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJy8nIHx8IGNjID09ICc+Jykgewor
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBpZiAodGVtcG9yYXJ5
QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkKKyAgICAgICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dl
ckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZVN0YXJ0U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicp
IHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURv
dWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkK
KworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
Y2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0
YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
KyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVkRGFzaFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8
JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7
CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2Mp
OworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNo
U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgeworICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
eworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRh
RG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLycp
IHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJs
ZUVzY2FwZUVuZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpIHsKKyAg
ICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8
IGNjID09ICcgJyB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRU
YWcubG9jYWxOYW1lKCkpKQorICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVz
Y2FwZWRTdGF0ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+
PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRl
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5
JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFn
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FO
RF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAn
PCcgfHwgY2MgPT0gJz0nKQorICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRy
aWJ1dGVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisg
ICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAg
IGVsc2UgaWYgKGNjID09ICc9JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmli
dXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAg
IEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0
ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRl
TmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnIicg
fHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQorICAgICAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0
ZU5hbWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVOYW1lU3Rh
dGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0g
J1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1
dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBB
RFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc9JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0g
J1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykK
KyAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+
YWRkTmV3QXR0cmlidXRlKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0
ZU5hbWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlVmFsdWVT
dGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQorICAgICAgICAg
ICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZh
bHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdcJycpCisgICAgICAg
ICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Cisg
ICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykK
KyAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJp
YnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRF
KCkKKworICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpIHsK
KyAgICAgICAgaWYgKGNjID09ICciJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRy
aWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Cisg
ICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyInOworICAgICAgICAg
ICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVW
YWx1ZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVv
dGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRl
VmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1wnJykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7CisgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyID0gJ1wnJzsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJl
bmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkK
KworICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSkgeworICAgICAg
ICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2Mg
PT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgIG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIgPSAnPic7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3Rl
clJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNj
ID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQorICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVl
KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRl
KTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAg
ICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5j
ZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkgeworICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3Rl
cnMgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1lRW50aXR5KHNvdXJj
ZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7CisgICAgICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJz
KQorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNv
dXJjZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKCcmJyk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlIDwgMHhGRkZGKQor
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShV
MTZfTEVBRCh2YWx1ZSkpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVW
YWx1ZShVMTZfVFJBSUwodmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSdyZSBzdXBw
b3NlZCB0byBzd2l0Y2ggYmFjayB0byB0aGUgYXR0cmlidXRlIHZhbHVlIHN0YXRlIHRoYXQKKyAg
ICAgICAgLy8gd2Ugd2VyZSBpbiB3aGVuIHdlIHdlcmUgc3dpdGNoZWQgaW50byB0aGlzIHN0YXRl
LiAgUmF0aGVyIHRoYW4KKyAgICAgICAgLy8ga2VlcGluZyB0cmFjayBvZiB0aGlzIGV4cGxpY3Rs
eSwgd2Ugb2JzZXJ2ZSB0aGF0IHRoZSBwcmV2aW91cworICAgICAgICAvLyBzdGF0ZSBjYW4gYmUg
ZGV0ZXJtaW5lZCBieSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyLgorICAgICAgICBpZiAo
bV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicpCisgICAgICAgICAgICBTV0lUQ0hf
VE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKG1f
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJykKKyAgICAgICAgICAgIFNXSVRDSF9U
TyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAobV9h
ZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnPicpCisgICAgICAgICAgICBTV0lUQ0hfVE8o
QXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJ
Tl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2lu
Z1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAg
ICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZUF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShT
ZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc+JykgeworICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUp
OworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQm9ndXNDb21tZW50U3RhdGUp
IHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhdGUgaXNuJ3QgY29ycmVjdCBiZWNhdXNlIHdl
J2xsIHRlcm1pbmF0ZSB0aGUKKyAgICAgICAgLy8gY29tbWVudCBlYXJseSBpZiB3ZSBkb24ndCBo
YXZlIHRoZSB3aG9sZSBpbnB1dCBzdHJlYW0gYXZhaWxhYmxlLgorICAgICAgICBtX3Rva2VuLT5i
ZWdpbkNvbW1lbnQoKTsKKyAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVy
KCk7CisgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KGNjKTsKKyAgICAgICAgICAgIG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShz
b3VyY2UsIG1fbGluZU51bWJlcik7CisgICAgICAgICAgICAvLyBXZSBpZ25vcmUgdGhlIHJldHVy
biB2YWx1ZSAod2hpY2ggaW5kaWNhdGVzIHRoYXQgfHNvdXJjZXwgaXMKKyAgICAgICAgICAgIC8v
IGVtcHR5KSBiZWNhdXNlIGl0J3MgY2hlY2tlZCBieSB0aGUgbG9vcCBjb25kaXRpb24gYWJvdmUu
CisgICAgICAgIH0KKyAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRpb25PcGVuU3Rh
dGUpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5n
LCAoIi0tIikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0
cmluZywgKCJkb2N0eXBlIikpOworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAg
ICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0Fo
ZWFkKGRhc2hEYXNoU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNT
RVJUKCctJyk7CisgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsK
KyAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKKyAgICAgICAgICAgICAg
ICBTV0lUQ0hfVE8oQ29tbWVudFN0YXJ0U3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKKyAgICAgICAgICAg
IFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhl
YWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3Ry
aW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKKyAgICAgICAgICAg
ICAgICBTV0lUQ0hfVE8oRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKKyAg
ICAgICAgfQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAvLyBGSVhNRTogV2Un
cmUgc3RpbGwgbWlzc2luZyB0aGUgYml0cyBhYm91dCB0aGUgaW5zZXJ0aW9uIG1vZGUgYmVpbmcg
aW4gZm9yZWlnbiBjb250ZW50OgorICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNtYXJr
dXAtZGVjbGFyYXRpb24tb3Blbi1zdGF0ZQorICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOworICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0U3RhdGUpIHsKKyAgICAgICAgaWYg
KGNjID09ICctJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXJ0RGFzaFN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAgICB9CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0RGFzaFN0YXRlKSB7CisgICAgICAgIGlmIChj
YyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhDb21tZW50U3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29t
bWVudFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1l
bnRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5k
RGFzaFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAg
ICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7CisgICAgICAg
IGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTcGFjZVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKKyAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRCYW5nU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0n
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1l
bnRFbmRCYW5nU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgn
IScpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4o
RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScp
OworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7CisgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhD
b21tZW50U3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVu
dEVuZFNwYWNlU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFNw
YWNlU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+
JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAg
ICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShET0NUWVBFU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVE
T0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVP
RiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJl
Zm9yZURPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49ICdB
JyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xv
d2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJl
Z2luRE9DVFlQRShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUp
OworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0ZSkg
eworICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1l
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FO
RF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNl
KGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAg
aWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBwdWJsaWNTdHJpbmcsICgicHVibGljIikpOworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7CisgICAgICAgICAgICBpZiAo
Y2MgPT0gJ1AnIHx8IGNjID09ICdwJykgeworICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmlu
Zzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uo
cHVibGljU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFT
U0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKKyAgICAgICAgICAgICAgICAgICAg
U1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0
ZXJzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFj
dGVyVG9rZW4oc291cmNlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNj
ID09ICdzJykgeworICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVz
dWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsK
KyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2Fz
ZShzb3VyY2UsICJzeXN0ZW0iKTsKKyAgICAgICAgICAgICAgICAgICAgU1dJVENIX1RPKEFmdGVy
RE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhC
b2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShB
ZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5
JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVv
dGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKKyAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
PicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5f
U1RBVEUoQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJ
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBF
UHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBt
X3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAg
QkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkgewor
ICAgICAgICBpZiAoY2MgPT0gJyInKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lk
ZW50aWZpZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRp
ZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NU
QVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAg
aWYgKGNjID09ICdcJycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVp
cmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmll
cihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2lu
Z2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQWZ0
ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAg
ICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJs
aWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NU
WVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Qm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
QmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKSB7CisgICAgICAg
IGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9
PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lz
dGVtSWRlbnRpZmllcnNTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAg
ICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChj
YyA9PSAnIicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVv
dGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSkgeworICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewor
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7Cisg
ICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8
fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU3RhdGUpOworICAgICAgICBpZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAgICBt
X3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRT
eXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhE
T0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVT
VU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICB9CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0
ZSkgeworICAgICAgICBpZiAoY2MgPT0gJyInKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRl
ckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5
c3RlbUlkZW50aWZpZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVt
SWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpIHsKKyAg
ICAgICAgaWYgKGNjID09ICdcJycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykgewor
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZv
cmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRl
bnRpZmllcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisg
ICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKSB7CisgICAg
ICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKKyAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpIHsKKyAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICAgICAgQURWQU5DRV9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIEhUTUw1TGV4ZXI6OnRlbXBvcmFyeUJ1ZmZl
cklzKGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRTdHJpbmcpCit7CisgICAgcmV0dXJuIHZlY3RvckVx
dWFsc1N0cmluZyhtX3RlbXBvcmFyeUJ1ZmZlciwgZXhwZWN0ZWRTdHJpbmcpOworfQorCitpbmxp
bmUgdm9pZCBIVE1MNUxleGVyOjphZGRUb1Bvc3NpYmxlRW5kVGFnKFVDaGFyIGNjKQoreworICAg
IEFTU0VSVChpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1fc3RhdGUpKTsKKyAgICBtX2J1ZmZlcmVk
RW5kVGFnTmFtZS5hcHBlbmQoY2MpOworfQorCitpbmxpbmUgYm9vbCBIVE1MNUxleGVyOjppc0Fw
cHJvcHJpYXRlRW5kVGFnKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXJlZEVuZFRhZ05hbWUgPT0g
bV9hcHByb3ByaWF0ZUVuZFRhZ05hbWU7Cit9CisKK2lubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVt
aXRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIGlmIChtX3Rva2VuLT50eXBlKCkg
IT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyKSB7CisgICAgICAgIG1fdG9rZW4tPmJlZ2luQ2hhcmFj
dGVyKGNoYXJhY3Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV90b2tlbi0+YXBw
ZW5kVG9DaGFyYWN0ZXIoY2hhcmFjdGVyKTsKK30KKworaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6
ZW1pdENvZGVQb2ludCh1bnNpZ25lZCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPCAweEZGRkYp
IHsKKyAgICAgICAgZW1pdENoYXJhY3Rlcih2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZW1pdENoYXJhY3RlcihVMTZfTEVBRCh2YWx1ZSkpOworICAgIGVtaXRDaGFyYWN0ZXIo
VTE2X1RSQUlMKHZhbHVlKSk7Cit9CisKK2lubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRQYXJz
ZUVycm9yKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbmxpbmUgdm9pZCBIVE1M
NUxleGVyOjplbWl0Q3VycmVudFRva2VuKCkKK3sKKyAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgp
ICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOworICAgIGlmIChtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTDVUb2tlbjo6U3RhcnRUYWcpCisgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1l
ID0gbV90b2tlbi0+bmFtZSgpOworfQorCitpbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpzaG91bGRF
bWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkK
K3sKKyAgICByZXR1cm4gc291cmNlLmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhU
TUw1VG9rZW46OkNoYXJhY3RlcjsKK30KKworfQorCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVF
bnRpdHlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MNUVudGl0eVBh
cnNlci5jcHAJKHJldmlzaW9uIDYwOTM4KQorKysgV2ViQ29yZS9odG1sL0hUTUw1RW50aXR5UGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTcgKzI2LDkgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTDVMZXhlci5oIgotCi0jaW5jbHVkZSAiQXRvbWlj
U3RyaW5nLmgiCi0jaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+Ci0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKyNpbmNsdWRlICJIVE1M
NUVudGl0eVBhcnNlci5oIgogCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAvLyBVc2UgX19H
TlVDX18gaW5zdGVhZCBvZiBQTEFURk9STShHQ0MpIHRvIHN0YXkgY29uc2lzdGVudCB3aXRoIHRo
ZSBncGVyZiBnZW5lcmF0ZWQgYyBmaWxlCiAjaWZkZWYgX19HTlVDX18KQEAgLTU1LDggKzQ3LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwotCiBuYW1lc3BhY2UgewogCiBzdGF0aWMgY29uc3QgVUNoYXIg
d2luZG93c0xhdGluMUV4dGVuc2lvbkFycmF5WzMyXSA9IHsKQEAgLTY2LDI5ICs1Niw2IEBAIHN0
YXRpYyBjb25zdCBVQ2hhciB3aW5kb3dzTGF0aW4xRXh0ZW5zaW8KICAgICAweDAyREMsIDB4MjEy
MiwgMHgwMTYxLCAweDIwM0EsIDB4MDE1MywgMHgwMDlELCAweDAxN0UsIDB4MDE3OCwgLy8gOTgt
OUYKIH07CiAKLWlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKLXsKLSAgICBBU1NF
UlQoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJyk7Ci0gICAgY29uc3QgaW50IGxvd2VyQ2FzZU9mZnNl
dCA9IDB4MjA7Ci0gICAgcmV0dXJuIGNjICsgbG93ZXJDYXNlT2Zmc2V0OwotfQotCi1pbmxpbmUg
dm9pZCBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKFNlZ21lbnRlZFN0cmluZyYg
c291cmNlLCBjb25zdCBjaGFyKiBleHBlY3RlZENoYXJhY3RlcnMpCi17Ci0gICAgd2hpbGUgKCpl
eHBlY3RlZENoYXJhY3RlcnMpCi0gICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUSWdub3Jp
bmdDYXNlKCpleHBlY3RlZENoYXJhY3RlcnMrKyk7Ci19Ci0KLWlubGluZSBib29sIHZlY3RvckVx
dWFsc1N0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIDMyPiYgdmVjdG9yLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKLXsKLSAgICBpZiAodmVjdG9yLnNpemUoKSAhPSBzdHJpbmcubGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBVQ2hhciogc3RyaW5nRGF0YSA9IHN0cmlu
Zy5jaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHZlY3RvckRhdGEgPSB2ZWN0b3IuZGF0
YSgpOwotICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiB3ZSBz
aG91bGQgYmUgY2FsbGluZyBoZXJlPwotICAgIHJldHVybiAhbWVtY21wKHN0cmluZ0RhdGEsIHZl
Y3RvckRhdGEsIHZlY3Rvci5zaXplKCkgKiBzaXplb2YoVUNoYXIpKTsKLX0KLQogaW5saW5lIFVD
aGFyIGFkanVzdEVudGl0eSh1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBpZiAoKHZhbHVlICYgfjB4
MUYpICE9IDB4MDA4MCkKQEAgLTEyNyw0MSArOTQsMTEgQEAgdm9pZCB1bmNvbnN1bWVDaGFyYWN0
ZXJzKFNlZ21lbnRlZFN0cmluZwogICAgICAgICBzb3VyY2UucHJlcGVuZChTZWdtZW50ZWRTdHJp
bmcoU3RyaW5nKGNvbnN1bWVkQ2hhcmFjdGVycy5kYXRhKCksIGNvbnN1bWVkQ2hhcmFjdGVycy5z
aXplKCkpKSk7CiB9CiAKLWlubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5nU3RhdGUoSFRNTDVM
ZXhlcjo6U3RhdGUgc3RhdGUpCi17Ci0gICAgcmV0dXJuIHN0YXRlID09IEhUTUw1TGV4ZXI6OlJD
REFUQUVuZFRhZ09wZW5TdGF0ZQotICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxleGVyOjpSQ0RB
VEFFbmRUYWdOYW1lU3RhdGUKLSAgICAgICAgfHwgc3RhdGUgPT0gSFRNTDVMZXhlcjo6UkFXVEVY
VEVuZFRhZ09wZW5TdGF0ZQotICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxleGVyOjpSQVdURVhU
RW5kVGFnTmFtZVN0YXRlCi0gICAgICAgIHx8IHN0YXRlID09IEhUTUw1TGV4ZXI6OlNjcmlwdERh
dGFFbmRUYWdPcGVuU3RhdGUKLSAgICAgICAgfHwgc3RhdGUgPT0gSFRNTDVMZXhlcjo6U2NyaXB0
RGF0YUVuZFRhZ05hbWVTdGF0ZQotICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxleGVyOjpTY3Jp
cHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZQotICAgICAgICB8fCBzdGF0ZSA9PSBIVE1MNUxl
eGVyOjpTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZTsKLX0KLQogfQogCi1IVE1MNUxl
eGVyOjpIVE1MNUxleGVyKCkKK3Vuc2lnbmVkIGNvbnN1bWVIVE1MNUVudGl0eShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVUNoYXIgYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIpCiB7Ci0gICAgcmVzZXQoKTsKLX0KLQotSFRNTDVMZXhlcjo6fkhU
TUw1TGV4ZXIoKQotewotfQotCi12b2lkIEhUTUw1TGV4ZXI6OnJlc2V0KCkKLXsKLSAgICBtX3N0
YXRlID0gRGF0YVN0YXRlOwotICAgIG1fdG9rZW4gPSAwOwotICAgIG1fbGluZU51bWJlciA9IDA7
Ci0gICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFsc2U7Ci0gICAgbV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICdcMCc7Ci19Ci0KLXVuc2lnbmVkIEhUTUw1TGV4ZXI6
OmNvbnN1bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENo
YXJhY3RlcnMpCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5B
dHRyaWJ1dGVWYWx1ZVN0YXRlIHx8IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJyIn
IHx8IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJyB8fCBtX2FkZGl0aW9uYWxB
bGxvd2VkQ2hhcmFjdGVyID09ICc+Jyk7CisgICAgQVNTRVJUKCFhZGRpdGlvbmFsQWxsb3dlZENo
YXJhY3RlciB8fCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicgfHwgYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJyB8fCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9
PSAnPicpOwogICAgIEFTU0VSVCghbm90RW5vdWdoQ2hhcmFjdGVycyk7CiAKICAgICBlbnVtIEVu
dGl0eVN0YXRlIHsKQEAgLTE4NCw3ICsxMjEsNyBAQCB1bnNpZ25lZCBIVE1MNUxleGVyOjpjb25z
dW1lRW50aXR5KFNlZ21lCiAgICAgICAgIGNhc2UgSW5pdGlhbDogewogICAgICAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJyYnKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICAgICAgaWYgKG1fc3RhdGUgPT0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVW
YWx1ZVN0YXRlICYmIGNjID09IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCisgICAgICAg
ICAgICBpZiAoYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgJiYgY2MgPT0gYWRkaXRpb25hbEFs
bG93ZWRDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBp
ZiAoY2MgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBOdW1iZXJUeXBl
OwpAQCAtMjcxLDcgKzIwOCw2IEBAIHVuc2lnbmVkIEhUTUw1TGV4ZXI6OmNvbnN1bWVFbnRpdHko
U2VnbWUKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCc7
Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5LT5jb2RlOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBpZiAoIWlzQWxwaGFOdW1lcmljKGNjKSkgewpAQCAtMjc5LDkgKzIxNSw4IEBAIHVuc2ln
bmVkIEhUTUw1TGV4ZXI6OmNvbnN1bWVFbnRpdHkoU2VnbWUKICAgICAgICAgICAgICAgICAgICAg
aWYgKGVudGl0eSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSFRNTDUgdGVsbHMgdXMg
dG8gaWdub3JlIHRoaXMgZW50aXR5LCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgdGhlIGxvb2toZWFkIGNoYXJhY3RlciBpcyAnPScuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0
dHJpYnV0ZVZhbHVlU3RhdGUgJiYgY2MgPT0gJz0nKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5LT5jb2RlOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzA0
LDEzODggKzIzOSw0IEBAIHVuc2lnbmVkIEhUTUw1TGV4ZXI6OmNvbnN1bWVFbnRpdHkoU2VnbWUK
ICAgICByZXR1cm4gMDsKIH0KIAotaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJvY2Vzc0VudGl0
eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICBib29sIG5vdEVub3VnaENoYXJhY3Rl
cnMgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVFbnRpdHkoc291cmNlLCBu
b3RFbm91Z2hDaGFyYWN0ZXJzKTsKLSAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIGVtaXRDaGFyYWN0ZXIo
JyYnKTsKLSAgICBlbHNlCi0gICAgICAgIGVtaXRDb2RlUG9pbnQodmFsdWUpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi0jaWYgQ09NUElMRVIoTVNWQykKLS8vIFdlIG5lZWQgdG8gZGlzYWJsZSB0
aGUgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydAot
Ly8gdGhhdCBzb21lIGNvZGUgcG9pbnRzIGFyZW4ndCByZWFjaGVkIGluIHRoZSBzdGF0ZSBtYWNo
aW5lLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDIpCi0jZW5kaWYKLQotI2RlZmluZSBC
RUdJTl9TVEFURShzdGF0ZU5hbWUpIGNhc2Ugc3RhdGVOYW1lOiBzdGF0ZU5hbWU6Ci0jZGVmaW5l
IEVORF9TVEFURSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBicmVhazsKLQotLy8gV2UgdXNlIHRo
aXMgbWFjcm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJyZWNvbnN1bWUgdGhlIGN1cnJlbnQg
aW5wdXQKLS8vIGNoYXJhY3RlciBpbiB0aGUgPG11bWJsZT4gc3RhdGUuIgotI2RlZmluZSBSRUNP
TlNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1l
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotCi0vLyBXZSB1c2UgdGhpcyBtYWNy
byB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgImNvbnN1bWUgdGhlIG5leHQgaW5wdXQKLS8vIGNo
YXJhY3RlciAuLi4gYW5kIHN3aXRjaCB0byB0aGUgPG11bWJsZT4gc3RhdGUuIgotI2RlZmluZSBB
RFZBTkNFX1RPKHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVO
YW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBpZiAoIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShzb3VyY2UsIG1fbGlu
ZU51bWJlcikpICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENo
YXJhY3RlclRva2VuKHNvdXJjZSk7ICAgICAgICAgICAgICAgXAotICAgICAgICBjYyA9IG1faW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAgICAgICAgICAgICAg
XAotICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotCi0vLyBTb21ldGlt
ZXMgdGhlcmUncyBtb3JlIGNvbXBsaWNhdGVkIGxvZ2ljIGluIHRoZSBzcGVjIHRoYXQgc2VwYXJh
dGVzIHdoZW4KLS8vIHdlIGNvbnN1bWUgdGhlIG5leHQgaW5wdXQgY2hhcmFjdGVyIGFuZCB3aGVu
IHdlIHN3aXRjaCB0byBhIHBhcnRpY3VsYXIKLS8vIHN0YXRlLiAgV2UgaGFuZGxlIHRob3NlIGNh
c2VzIGJ5IGFkdmFuY2luZyB0aGUgc291cmNlIGRpcmVjdGx5IGFuZCB1c2luZwotLy8gdGhpcyBt
YWNybyB0byBzd2l0Y2ggdG8gdGhlIGluZGljYXRlZCBzdGF0ZS4KLSNkZWZpbmUgU1dJVENIX1RP
KHN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV9zdGF0ZSA9IHN0YXRlTmFtZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYg
KCFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlLCBtX2xpbmVOdW1iZXIpKSAg
ICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFt
UHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotLy8gV2UgdXNlIHRoaXMgbWFj
cm8gd2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJFbWl0IHRoZSBjdXJyZW50IDxtdW1ibGU+Ci0v
LyB0b2tlbi4gU3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4iICBXZSB1c2UgdGhlIHdvcmQg
InJlc3VtZSIgaW5zdGVhZCBvZgotLy8gc3dpdGNoIHRvIGluZGljYXRlIHRoYXQgdGhpcyBtYWNy
byBhY3R1YWxseSByZXR1cm5zIGFuZCB0aGF0IHdlJ2xsIGVuZCB1cAotLy8gaW4gdGhlIHN0YXRl
IHdoZW4gd2UgInJlc3VtZSIgKGkuZS4sIGFyZSBjYWxsZWQgYWdhaW4pLgotI2RlZmluZSBFTUlU
X0FORF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1l
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gdHJ1ZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIH0gd2hpbGUgKGZhbHNlKQotCi0jZGVmaW5lIF9GTFVTSF9CVUZGRVJFRF9FTkRfVEFHKCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hh
cmFjdGVyIHx8ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICBtX3Rva2VuLT50eXBl
KCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7ICAgICAgICAgICAgICBcCi0gICAgICAg
IHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6
Q2hhcmFjdGVyKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFs
c2UpCi0KLSNkZWZpbmUgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
bV9zdGF0ZSA9IHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHNvdXJjZS5pc0Vt
cHR5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlLCBtX2xp
bmVOdW1iZXIpKSAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2MgPSBtX2lu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAg
IFwKLSAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotI2RlZmluZSBG
TFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVO
YW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBfRkxVU0hfQlVGRkVSRURfRU5EX1RBRygpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNl
KQotCi1ib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
SFRNTDVUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gSWYgd2UgaGF2ZSBhIHRva2VuIGluIHByb2dy
ZXNzLCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCi0gICAgLy8gd2l0aCB0
aGUgc2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgotICAgIEFTU0VSVCghbV90b2tlbiB8
fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0
aWFsaXplZCk7Ci0gICAgbV90b2tlbiA9ICZ0b2tlbjsKLQotICAgIGlmICghbV9idWZmZXJlZEVu
ZFRhZ05hbWUuaXNFbXB0eSgpICYmICFpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1fc3RhdGUpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYWxsIGZsdXNoQnVmZmVyZWRFbmRUYWco
KS4KLSAgICAgICAgLy8gV2Ugc3RhcnRlZCBhbiBlbmQgdGFnIGR1cmluZyBvdXIgbGFzdCBpdGVy
YXRpb24uCi0gICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1l
KTsKLSAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgaWYgKG1f
c3RhdGUgPT0gRGF0YVN0YXRlKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBiYWNrIGluIHRoZSBk
YXRhIHN0YXRlLCBzbyB3ZSBtdXN0IGJlIGRvbmUgd2l0aCB0aGUgdGFnLgotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc291cmNlLmlzRW1wdHko
KSB8fCAhbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVy
KSkKLSAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJj
ZSk7Ci0gICAgVUNoYXIgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENo
YXJhY3RlcigpOwotCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWlu
Ym9keQotICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBn
ZW5lcmljIFxyXG4gY29sbGFwc2luZwotICAgIC8vIGhhbmRsZWQgaW4gdGhlIGlucHV0IHN0cmVh
bSBwcmVwcm9jZXNzb3IuICBUaGlzIGxvZ2ljIGlzIGhlcmUgYXMgYW4KLSAgICAvLyAiYXV0aG9y
aW5nIGNvbnZlbmllbmNlIiBzbyBmb2xrcyBjYW4gd3JpdGU6Ci0gICAgLy8KLSAgICAvLyA8cHJl
PgotICAgIC8vIGxvcmVtIGlwc3VtCi0gICAgLy8gbG9yZW0gaXBzdW0KLSAgICAvLyA8L3ByZT4K
LSAgICAvLwotICAgIC8vIHdpdGhvdXQgZ2V0dGluZyBhbiBleHRyYSBuZXdsaW5lIGF0IHRoZSBz
dGFydCBvZiB0aGVpciA8cHJlPiBlbGVtZW50LgotICAgIGlmIChtX3NraXBMZWFkaW5nTmV3TGlu
ZUZvckxpc3RpbmcpIHsKLSAgICAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0g
ZmFsc2U7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IERhdGFTdGF0ZSAmJiBjYyA9PSAnXG4nKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOwotICAgIH0KLQotICAgIC8vIFNvdXJj
ZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdG9r
ZW5pc2F0aW9uMAotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIEJFR0lOX1NUQVRFKERhdGFT
dGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJyYnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhD
aGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc8
JykgewotICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFy
YWN0ZXIpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVy
IHRva2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQotICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGlu
ZyBsYXppbHkgaGVyZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhEYXRhU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBC
RUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSkgewotICAgICAgICBpZiAo
IXByb2Nlc3NFbnRpdHkoc291cmNlKSkKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICBTV0lUQ0hfVE8oRGF0YVN0YXRl
KTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFJDREFUQVN0YXRl
KSB7Ci0gICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJh
Y3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcp
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oUkNEQVRBU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKSB7Ci0g
ICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAgcmV0dXJuIHNo
b3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7Ci0gICAgICAgIFNXSVRDSF9U
TyhSQ0RBVEFTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFU
RShSQVdURVhUU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVY
VFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnPCcpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkK
LQotICAgIEJFR0lOX1NUQVRFKFBMQUlOVEVYVFN0YXRlKSB7Ci0gICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOwotICAgICAgICBBRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gJyEnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9w
ZW5TdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRW5kVGFnT3BlblN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyh0b0xvd2VyQ2Fz
ZShjYykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwotICAgICAgICB9
IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luU3RhcnRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUp
OwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykgewotICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIC8vIFRoZSBzcGVjIGNvbnN1bWVzIHRoZSBjdXJyZW50IGNo
YXJhY3RlciBiZWZvcmUgc3dpdGNoaW5nCi0gICAgICAgICAgICAvLyB0byB0aGUgYm9ndXMgY29t
bWVudCBzdGF0ZSwgYnV0IGl0J3MgZWFzaWVyIHRvIGltcGxlbWVudAotICAgICAgICAgICAgLy8g
aWYgd2UgcmVjb25zdW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KLSAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkgewotICAgICAg
ICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90b2tlbi0+YmVn
aW5FbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFt
ZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBCRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09
ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0
YXJ0VGFnU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0En
ICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93
ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgQkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpIHsKLSAgICAgICAgaWYgKGNj
ID09ICcvJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lO
KFJDREFUQVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAg
QkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwotICAgICAgICB9
IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNj
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRF
KFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9
ICdaJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAg
ICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChj
YyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5h
cHBlbmQoY2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVF
bmRUYWcoKSkKLSAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3Jl
QXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAg
ICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9B
TkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgUkVDT05T
VU1FX0lOKFJDREFUQVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQot
Ci0gICAgQkVHSU5fU1RBVEUoUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKSB7Ci0gICAgICAgIGlm
IChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBSRUNPTlNV
TUVfSU4oUkFXVEVYVFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQot
Ci0gICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSkgewotICAgICAgICBpZiAo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKGNjKTsKLSAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2Uo
Y2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIGFkZFRvUG9zc2libGVF
bmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihS
QVdURVhUU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBC
RUdJTl9TVEFURShSQVdURVhURW5kVGFnTmFtZVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAg
fSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhj
Yyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAgICAgIGlmIChp
c0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZB
TkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICcvJykgewotICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkp
Ci0gICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3Rh
cnRUYWdTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAg
ICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAg
IEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
LycpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlC
dWZmZXIpOwotICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhTGVzc1RoYW5TaWduU3Rh
dGUpIHsKLSAgICAgICAgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlC
dWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5p
c0VtcHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnT3BlblN0
YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKLSAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyEnKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05T
VU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRF
KCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUpIHsKLSAgICAg
ICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5
QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93
ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1l
U3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVu
ZFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCc8Jyk7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICBS
RUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSkgewot
ICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWco
dG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRh
Z05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykg
ewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAg
IGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChj
YyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcp
IHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAg
ICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUp
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRf
QURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRh
ZygpKQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAgIG1fYnVmZmVyZWRF
bmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0
YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICctJykg
ewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpIHsK
LSAgICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0
ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRh
RXNjYXBlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
ZERhc2hTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gJy0nKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
TGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAg
ICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVk
RGFzaERhc2hTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2Fw
ZWREYXNoRGFzaFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwotICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVH
SU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwot
ICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAg
ICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
U2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNj
ID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsK
LSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlC
dWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVz
Y2FwZWRFbmRUYWdPcGVuU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAn
WicpIHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihT
Y3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpIHsK
LSAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2Nh
cGVkRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2Mg
PD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAg
ICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRh
ZygpKQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRy
aWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAg
ICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNB
cHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9S
RVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NU
QVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRl
KSB7Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJy8nIHx8IGNjID09ICc+JykgewotICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBpZiAodGVtcG9yYXJ5QnVmZmVySXMo
c2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2Mp
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3Rh
dGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZVN0YXJ0U3RhdGUpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihT
Y3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJF
R0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNj
ID09ICctJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0
YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKLSAg
ICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0g
ICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
RGFzaFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNj
YXBlZERhc2hEYXNoU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVH
SU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7Ci0gICAgICAg
IGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVz
c1RoYW5TaWduU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAg
fQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNj
YXBlZExlc3NUaGFuU2lnblN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
Y2xlYXIoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVu
ZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0
RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpIHsKLSAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JyB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxO
YW1lKCkpKQotICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0
ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYg
Y2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwotICAgICAgICB9IGVs
c2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWRTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShCZWZv
cmVBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0g
Jy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwot
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykg
ewotICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2Mg
PT0gJz0nKQotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBt
X3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVT
dGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVOYW1l
U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRy
aWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGNjID09ICc9JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVT
dGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9M
b3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0g
J1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQotICAgICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKLSAg
ICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8
IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3Rh
dGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RP
KFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykKLSAgICAgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0
cmlidXRlKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkgewot
ICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1
ZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJyYnKQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90
ZWRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwotICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKLSAgICAgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVl
VW5xdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAg
IEJFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAg
aWYgKGNjID09ICciJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1
ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAg
ICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyInOwotICAgICAgICAgICAgQURWQU5D
RV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUp
OwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAg
IH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVTaW5n
bGVRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
ID0gJ1wnJzsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRy
aWJ1dGVWYWx1ZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRy
aWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJF
R0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQot
ICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRD
aGFyYWN0ZXIgPSAnPic7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5j
ZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKQot
ICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8
fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKLSAgICAg
ICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmli
dXRlVmFsdWVTdGF0ZSkgewotICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxz
ZTsKLSAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90RW5v
dWdoQ2hhcmFjdGVycyk7Ci0gICAgICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAg
ICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7Ci0g
ICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0
ZVZhbHVlKCcmJyk7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlIDwgMHhGRkZGKQotICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVMTZfTEVBRCh2
YWx1ZSkpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVMTZf
VFJBSUwodmFsdWUpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBXZSdyZSBzdXBwb3NlZCB0byBz
d2l0Y2ggYmFjayB0byB0aGUgYXR0cmlidXRlIHZhbHVlIHN0YXRlIHRoYXQKLSAgICAgICAgLy8g
d2Ugd2VyZSBpbiB3aGVuIHdlIHdlcmUgc3dpdGNoZWQgaW50byB0aGlzIHN0YXRlLiAgUmF0aGVy
IHRoYW4KLSAgICAgICAgLy8ga2VlcGluZyB0cmFjayBvZiB0aGlzIGV4cGxpY3RseSwgd2Ugb2Jz
ZXJ2ZSB0aGF0IHRoZSBwcmV2aW91cwotICAgICAgICAvLyBzdGF0ZSBjYW4gYmUgZGV0ZXJtaW5l
ZCBieSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyLgotICAgICAgICBpZiAobV9hZGRpdGlv
bmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicpCi0gICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmli
dXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJykKLSAgICAgICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1
dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAobV9hZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciA9PSAnPicpCi0gICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmlidXRl
VmFsdWVVbnF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShB
ZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5
JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFn
U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FO
RF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5h
bWVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTZWxmQ2xvc2lu
Z1N0YXJ0VGFnU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBF
TkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQm9ndXNDb21tZW50U3RhdGUpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc3RhdGUgaXNuJ3QgY29ycmVjdCBiZWNhdXNlIHdlJ2xsIHRlcm1p
bmF0ZSB0aGUKLSAgICAgICAgLy8gY29tbWVudCBlYXJseSBpZiB3ZSBkb24ndCBoYXZlIHRoZSB3
aG9sZSBpbnB1dCBzdHJlYW0gYXZhaWxhYmxlLgotICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1l
bnQoKTsKLSAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBj
YyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7Ci0gICAg
ICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsK
LSAgICAgICAgICAgIG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShzb3VyY2UsIG1f
bGluZU51bWJlcik7Ci0gICAgICAgICAgICAvLyBXZSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSAo
d2hpY2ggaW5kaWNhdGVzIHRoYXQgfHNvdXJjZXwgaXMKLSAgICAgICAgICAgIC8vIGVtcHR5KSBi
ZWNhdXNlIGl0J3MgY2hlY2tlZCBieSB0aGUgbG9vcCBjb25kaXRpb24gYWJvdmUuCi0gICAgICAg
IH0KLSAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RB
VEUoKQotCi0gICAgQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpIHsKLSAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoIi0tIikp
OwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0cmluZywgKCJk
b2N0eXBlIikpOwotICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGRhc2hE
YXNoU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpE
aWRNYXRjaCkgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7
Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgICAgICAgICBTV0lUQ0hf
VE8oQ29tbWVudFN0YXJ0U3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0g
U2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKLSAgICAgICAgICAgIFNlZ21lbnRl
ZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmlu
Z0Nhc2UoZG9jdHlwZVN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRl
ZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNT
RVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKLSAgICAgICAgICAgICAgICBTV0lU
Q0hfVE8oRE9DVFlQRVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgfQot
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAvLyBGSVhNRTogV2UncmUgc3RpbGwg
bWlzc2luZyB0aGUgYml0cyBhYm91dCB0aGUgaW5zZXJ0aW9uIG1vZGUgYmVpbmcgaW4gZm9yZWln
biBjb250ZW50OgotICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNtYXJrdXAtZGVjbGFy
YXRpb24tb3Blbi1zdGF0ZQotICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICBSRUNP
TlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICct
JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXJ0RGFzaFN0YXRlKTsKLSAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVH
SU5fU1RBVEUoQ29tbWVudFN0YXJ0RGFzaFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScp
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50
U3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXRl
KSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1l
bnRFbmREYXNoU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAg
fQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShDb21tZW50RW5kRGFzaFN0YXRl
KSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1l
bnRFbmRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2Mp
OwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9
PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVu
dChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTcGFjZVN0YXRlKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRCYW5nU3RhdGUpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29t
bWVudEVuZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0
YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
LSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRCYW5n
U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoJy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Jy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7Ci0gICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3Rh
dGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgot
ICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFNwYWNl
U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFNwYWNlU3RhdGUp
OwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZERhc2hTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAg
ICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKENvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFU
RShET0NUWVBFU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVET0NUWVBFTmFt
ZVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEJlZm9yZURPQ1RZ
UEVOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScg
fHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVm
b3JlRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8
PSAnWicpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShj
YykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKLSAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKLSAgICAgICAgICAgIG1fdG9rZW4t
PnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQ
RShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBF
TkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0ZSkgewotICAgICAg
ICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2Mg
PT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwot
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykg
ewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJ
Tl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5
JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKLSAgICAgICAgaWYgKGNjID09
ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwdWJsaWNT
dHJpbmcsICgicHVibGljIikpOwotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1An
IHx8IGNjID09ICdwJykgewotICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0Fo
ZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UocHVibGljU3Ry
aW5nKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlk
TWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9y
aW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAgICAgICAgICAgICAgU1dJVENIX1RP
KEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
c291cmNlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNjID09ICdzJykg
ewotICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3Vs
dCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsKLSAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAg
ICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2Us
ICJzeXN0ZW0iKTsKLSAgICAgICAgICAgICAgICAgICAgU1dJVENIX1RPKEFmdGVyRE9DVFlQRVN5
c3RlbUtleXdvcmRTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0g
U2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZ
UEVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZ
UEVQdWJsaWNLZXl3b3JkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGNjID09ICciJykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUp
OwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0
eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3Jj
ZVF1aXJrcygpOwotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9n
dXNET0NUWVBFU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQmVm
b3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1x4
MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJs
aWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NU
WVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVy
VG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRl
bnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicp
IHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5z
ZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0
ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQm9ndXNET0NUWVBFU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RB
VEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOwotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJs
ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09
ICdcJycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0g
ICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVk
U3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBF
UHVibGljSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2Mg
PT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSk7Ci0g
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVt
SWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
XCcnKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tl
bi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NU
WVBFU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQmV0d2VlbkRP
Q1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0g
ICAgICAgICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRp
ZmllcnNTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVN
SVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicp
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KEJvZ3VzRE9DVFlQRVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRF
KEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1x4
MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAg
ICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmco
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVR
dW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAg
ICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURW
QU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJ
Tl9TVEFURShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
U3RhdGUpOwotICAgICAgICBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5z
ZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lz
dGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPicpIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5zZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVH
SU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkgewotICAg
ICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3Jj
ZVF1aXJrcygpOwotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50
aWZpZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRF
KERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgaWYg
KGNjID09ICdcJycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAg
ICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtz
KCk7Ci0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihj
Yyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJE
T0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRh
U3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRF
KCkKLQotICAgIEJFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKSB7Ci0gICAgICAgIGlmIChj
YyA9PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAg
ICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5f
U1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICAgICAgQURWQU5DRV9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFU
RSgpCi0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWlubGluZSBib29sIEhUTUw1TGV4ZXI6OnRlbXBvcmFyeUJ1ZmZlcklzKGNvbnN0
IFN0cmluZyYgZXhwZWN0ZWRTdHJpbmcpCi17Ci0gICAgcmV0dXJuIHZlY3RvckVxdWFsc1N0cmlu
ZyhtX3RlbXBvcmFyeUJ1ZmZlciwgZXhwZWN0ZWRTdHJpbmcpOwotfQotCi1pbmxpbmUgdm9pZCBI
VE1MNUxleGVyOjphZGRUb1Bvc3NpYmxlRW5kVGFnKFVDaGFyIGNjKQotewotICAgIEFTU0VSVChp
c0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1fc3RhdGUpKTsKLSAgICBtX2J1ZmZlcmVkRW5kVGFnTmFt
ZS5hcHBlbmQoY2MpOwotfQotCi1pbmxpbmUgYm9vbCBIVE1MNUxleGVyOjppc0FwcHJvcHJpYXRl
RW5kVGFnKCkKLXsKLSAgICByZXR1cm4gbV9idWZmZXJlZEVuZFRhZ05hbWUgPT0gbV9hcHByb3By
aWF0ZUVuZFRhZ05hbWU7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRDaGFyYWN0
ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTDVU
b2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIG1fdG9rZW4tPmJlZ2luQ2hhcmFjdGVyKGNoYXJh
Y3Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV90b2tlbi0+YXBwZW5kVG9DaGFy
YWN0ZXIoY2hhcmFjdGVyKTsKLX0KLQotaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdENvZGVQ
b2ludCh1bnNpZ25lZCB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPCAweEZGRkYpIHsKLSAgICAg
ICAgZW1pdENoYXJhY3Rlcih2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZW1p
dENoYXJhY3RlcihVMTZfTEVBRCh2YWx1ZSkpOwotICAgIGVtaXRDaGFyYWN0ZXIoVTE2X1RSQUlM
KHZhbHVlKSk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRQYXJzZUVycm9yKCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1pbmxpbmUgdm9pZCBIVE1MNUxleGVyOjpl
bWl0Q3VycmVudFRva2VuKCkKLXsKLSAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpICE9IEhUTUw1
VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6U3RhcnRUYWcpCi0gICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tl
bi0+bmFtZSgpOwotfQotCi1pbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpzaG91bGRFbWl0QnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICBy
ZXR1cm4gc291cmNlLmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46
OkNoYXJhY3RlcjsKLX0KLQotfQotCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTDVFbnRpdHlQYXJzZXIuaAkocmV2aXNpb24gNjA5MzgpCShmcm9tIFdlYkNvcmUvaHRtbC9I
VE1MNUxleGVyLmg6NjA5MzgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUw1TGV4ZXJfaAorI2RlZmluZSBIVE1M
NUxleGVyX2gKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIlNlZ21lbnRl
ZFN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSFRNTDVUb2tlbjsK
KworICAgIGNsYXNzIEhUTUw1TGV4ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZW51bSBTdGF0ZSB7CisgICAgICAgICAgICBEYXRhU3RhdGUsCisgICAgICAg
ICAgICBDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSwKKyAgICAgICAgICAgIFJDREFUQVN0
YXRlLAorICAgICAgICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSwKKyAgICAg
ICAgICAgIFJBV1RFWFRTdGF0ZSwKKyAgICAgICAgICAgIFNjcmlwdERhdGFTdGF0ZSwKKyAgICAg
ICAgICAgIFBMQUlOVEVYVFN0YXRlLAorICAgICAgICAgICAgVGFnT3BlblN0YXRlLAorICAgICAg
ICAgICAgRW5kVGFnT3BlblN0YXRlLAorICAgICAgICAgICAgVGFnTmFtZVN0YXRlLAorICAgICAg
ICAgICAgUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUsCisgICAgICAgICAgICBSQ0RBVEFFbmRUYWdP
cGVuU3RhdGUsCisgICAgICAgICAgICBSQ0RBVEFFbmRUYWdOYW1lU3RhdGUsCisgICAgICAgICAg
ICBSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUsCisgICAgICAgICAgICBSQVdURVhURW5kVGFnT3Bl
blN0YXRlLAorICAgICAgICAgICAgUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSwKKyAgICAgICAgICAg
IFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSwKKyAgICAgICAgICAgIFNjcmlwdERhdGFFbmRU
YWdPcGVuU3RhdGUsCisgICAgICAgICAgICBTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlLAorICAg
ICAgICAgICAgU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUsCisgICAgICAgICAgICBTY3JpcHRE
YXRhRXNjYXBlU3RhcnREYXNoU3RhdGUsCisgICAgICAgICAgICBTY3JpcHREYXRhRXNjYXBlZFN0
YXRlLAorICAgICAgICAgICAgU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUsCisgICAgICAgICAg
ICBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUsCisgICAgICAgICAgICBTY3JpcHREYXRh
RXNjYXBlZExlc3NUaGFuU2lnblN0YXRlLAorICAgICAgICAgICAgU2NyaXB0RGF0YUVzY2FwZWRF
bmRUYWdPcGVuU3RhdGUsCisgICAgICAgICAgICBTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVT
dGF0ZSwKKyAgICAgICAgICAgIFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlLAorICAg
ICAgICAgICAgU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSwKKyAgICAgICAgICAgIFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlLAorICAgICAgICAgICAgU2NyaXB0RGF0YURvdWJs
ZUVzY2FwZWREYXNoRGFzaFN0YXRlLAorICAgICAgICAgICAgU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWRMZXNzVGhhblNpZ25TdGF0ZSwKKyAgICAgICAgICAgIFNjcmlwdERhdGFEb3VibGVFc2NhcGVF
bmRTdGF0ZSwKKyAgICAgICAgICAgIEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSwKKyAgICAgICAg
ICAgIEF0dHJpYnV0ZU5hbWVTdGF0ZSwKKyAgICAgICAgICAgIEFmdGVyQXR0cmlidXRlTmFtZVN0
YXRlLAorICAgICAgICAgICAgQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSwKKyAgICAgICAgICAg
IEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUsCisgICAgICAgICAgICBBdHRyaWJ1dGVW
YWx1ZVNpbmdsZVF1b3RlZFN0YXRlLAorICAgICAgICAgICAgQXR0cmlidXRlVmFsdWVVbnF1b3Rl
ZFN0YXRlLAorICAgICAgICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0
YXRlLAorICAgICAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAorICAgICAg
ICAgICAgU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlLAorICAgICAgICAgICAgQm9ndXNDb21tZW50
U3RhdGUsCisgICAgICAgICAgICBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSwKKyAgICAgICAg
ICAgIENvbW1lbnRTdGFydFN0YXRlLAorICAgICAgICAgICAgQ29tbWVudFN0YXJ0RGFzaFN0YXRl
LAorICAgICAgICAgICAgQ29tbWVudFN0YXRlLAorICAgICAgICAgICAgQ29tbWVudEVuZERhc2hT
dGF0ZSwKKyAgICAgICAgICAgIENvbW1lbnRFbmRTdGF0ZSwKKyAgICAgICAgICAgIENvbW1lbnRF
bmRCYW5nU3RhdGUsCisgICAgICAgICAgICBDb21tZW50RW5kU3BhY2VTdGF0ZSwKKyAgICAgICAg
ICAgIERPQ1RZUEVTdGF0ZSwKKyAgICAgICAgICAgIEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUsCisg
ICAgICAgICAgICBET0NUWVBFTmFtZVN0YXRlLAorICAgICAgICAgICAgQWZ0ZXJET0NUWVBFTmFt
ZVN0YXRlLAorICAgICAgICAgICAgQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlLAorICAg
ICAgICAgICAgQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSwKKyAgICAgICAgICAg
IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUsCisgICAgICAgICAgICBE
T0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlLAorICAgICAgICAgICAgQWZ0
ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAorICAgICAgICAgICAgQmV0d2VlbkRPQ1RZ
UEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlLAorICAgICAgICAgICAgQWZ0ZXJET0NU
WVBFU3lzdGVtS2V5d29yZFN0YXRlLAorICAgICAgICAgICAgQmVmb3JlRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJTdGF0ZSwKKyAgICAgICAgICAgIERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUsCisgICAgICAgICAgICBET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1
b3RlZFN0YXRlLAorICAgICAgICAgICAgQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRl
LAorICAgICAgICAgICAgQm9ndXNET0NUWVBFU3RhdGUsCisgICAgICAgICAgICBDREFUQVNlY3Rp
b25TdGF0ZSwKKyAgICAgICAgfTsKKworICAgICAgICBIVE1MNUxleGVyKCk7CisgICAgICAgIH5I
VE1MNUxleGVyKCk7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIC8vIFRoaXMg
ZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIGl0IGVtaXRzIGEgdG9rZW4uICBPdGhlcndpc2UsIGNh
bGxlcnMKKyAgICAgICAgLy8gbXVzdCBwcm92aWRlIHRoZSBzYW1lIChpbiBwcm9ncmVzcykgdG9r
ZW4gb24gdGhlIG5leHQgY2FsbCAodW5sZXNzCisgICAgICAgIC8vIHRoZXkgY2FsbCByZXNldCgp
IGZpcnN0KS4KKyAgICAgICAgYm9vbCBuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiwgSFRNTDVU
b2tlbiYpOworCisgICAgICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
TnVtYmVyOyB9CisgICAgICAgIGludCBjb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiAxOyB9
IC8vIE1hdGNoZXMgSFRNTFRva2VuaXplci5oIGJlaGF2aW9yLgorCisgICAgICAgIHZvaWQgc2V0
U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRlOyB9CisKKyAgICAgICAgLy8gSGFj
ayB0byBza2lwIGxlYWRpbmcgbmV3bGluZSBpbiA8cHJlPi88bGlzdGluZz4gZm9yIGF1dGhvcmlu
ZyBlYXNlLgorICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNwYXJzaW5nLW1haW4taW5i
b2R5CisgICAgICAgIHZvaWQgc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZygpIHsgbV9za2lw
TGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gdHJ1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8j
cHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtCisgICAgICAgIGNsYXNzIElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICAgICAgcHVibGljOgorICAg
ICAgICAgICAgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IoKQorICAgICAgICAgICAgICAgIDogbV9u
ZXh0SW5wdXRDaGFyYWN0ZXIoJ1wwJykKKyAgICAgICAgICAgICAgICAsIG1fc2tpcE5leHROZXdM
aW5lKGZhbHNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBV
Q2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBtX25leHRJbnB1dENoYXJh
Y3RlcjsgfQorCisgICAgICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgd2Ugc3VjY2VlZGVkIGlu
IHBlZWtpbmcgYXQgdGhlIG5leHQgY2hhcmFjdGVyLgorICAgICAgICAgICAgLy8gVGhlIG9ubHkg
d2F5IHdlIGNhbiBmYWlsIHRvIHBlZWsgaXMgaWYgdGhlcmUgYXJlIG5vIG1vcmUKKyAgICAgICAg
ICAgIC8vIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgKGFmdGVyIGNvbGxhcHNpbmcgXHJcbiwgZXRj
KS4KKyAgICAgICAgICAgIGJvb2wgcGVlayhTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgaW50JiBs
aW5lTnVtYmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hh
cmFjdGVyID0gKnNvdXJjZTsKKyAgICAgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0
ZXIgPT0gJ1xuJyAmJiBtX3NraXBOZXh0TmV3TGluZSkgeworICAgICAgICAgICAgICAgICAgICBt
X3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZVBhc3ROZXdsaW5lKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoc291
cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291cmNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0g
J1xyJykgeworICAgICAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICdcbic7
CisgICAgICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNwZWMgaW5kaWNhdGVz
IHRoYXQgdGhlIHN1cnJvZ2F0ZSBwYWlyIHJhbmdlIGFzIHdlbGwgYXMKKyAgICAgICAgICAgICAg
ICAgICAgLy8gYSBudW1iZXIgb2Ygc3BlY2lmaWMgY2hhcmFjdGVyIHZhbHVlcyBhcmUgcGFyc2Ug
ZXJyb3JzIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQKKyAgICAgICAgICAgICAgICAgICAgLy8gYnkg
dGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gV2Ugc3VzcGVjdCB0aGlzIGlzIGEgcHJvYmxlbSB3
aXRoIHRoZSBzcGVjIGFzIGRvaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgZmlsdGVy
aW5nIGJyZWFrcyBzdXJyb2dhdGUgcGFpciBoYW5kbGluZyBhbmQgY2F1c2VzIHVzIG5vdCB0byBt
YXRjaCBNaW5lZmllbGQuCisgICAgICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJh
Y3RlciA9PSAnXDAnKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0
ZXIgPSAweEZGRkQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
cmUgYXJlIG1vcmUgY2hhcmFjdGVycyBpbiB8c291cmNlfCBhZnRlciBhZHZhbmNpbmcuCisgICAg
ICAgICAgICBib29sIGFkdmFuY2UoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGludCYgbGluZU51
bWJlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZShsaW5l
TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBwZWVrKHNv
dXJjZSwgbGluZU51bWJlcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAg
ICAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvI25leHQtaW5wdXQtY2hhcmFjdGVyCisgICAgICAgICAgICBVQ2hhciBtX25leHRJbnB1
dENoYXJhY3RlcjsKKyAgICAgICAgICAgIGJvb2wgbV9za2lwTmV4dE5ld0xpbmU7CisgICAgICAg
IH07CisKKyAgICAgICAgaW5saW5lIHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhcik7CisgICAgICAg
IGlubGluZSB2b2lkIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgIGlubGluZSB2b2lkIGVtaXRD
dXJyZW50VG9rZW4oKTsKKyAgICAgICAgaW5saW5lIHZvaWQgZW1pdENvZGVQb2ludCh1bnNpZ25l
ZCk7CisKKyAgICAgICAgdW5zaWduZWQgY29uc3VtZUVudGl0eShTZWdtZW50ZWRTdHJpbmcmLCBi
b29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICAgICAgaW5saW5lIGJvb2wgcHJvY2Vzc0Vu
dGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSk7CisKKyAgICAgICAgaW5saW5lIGJvb2wgdGVt
cG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJik7CisKKyAgICAgICAgLy8gU29tZXRpbWVzIHdl
IHNwZWN1bGF0aXZlbHkgY29uc3VtZSBpbnB1dCBjaGFyYWN0ZXJzIGFuZCB3ZSBkb24ndAorICAg
ICAgICAvLyBrbm93IHdoZXRoZXIgdGhleSByZXByZXNlbnQgZW5kIHRhZ3Mgb3IgUkNEQVRBLCBl
dGMuICBUaGVzZQorICAgICAgICAvLyBmdW5jdGlvbnMgaGVscCBtYW5hZ2UgdGhlc2Ugc3RhdGUu
CisgICAgICAgIGlubGluZSB2b2lkIGFkZFRvUG9zc2libGVFbmRUYWcoVUNoYXIgY2MpOworICAg
ICAgICBpbmxpbmUgYm9vbCBpc0FwcHJvcHJpYXRlRW5kVGFnKCk7CisKKyAgICAgICAgaW5saW5l
IGJvb2wgc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oY29uc3QgU2VnbWVudGVkU3Ry
aW5nJik7CisKKyAgICAgICAgU3RhdGUgbV9zdGF0ZTsKKworICAgICAgICBWZWN0b3I8VUNoYXIs
IDMyPiBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsKKworICAgICAgICAvLyBtX3Rva2VuIGlzIG93
bmVkIGJ5IHRoZSBjYWxsZXIuICBJZiBuZXh0VG9rZW4gaXMgbm90IG9uIHRoZSBzdGFjaywKKyAg
ICAgICAgLy8gdGhpcyBtZW1iZXIgbWlnaHQgYmUgcG9pbnRpbmcgdG8gdW5hbGxvY2F0ZWQgbWVt
b3J5LgorICAgICAgICBIVE1MNVRva2VuKiBtX3Rva2VuOworICAgICAgICBpbnQgbV9saW5lTnVt
YmVyOworCisgICAgICAgIGJvb2wgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nOworCisg
ICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI3RlbXBvcmFyeS1idWZmZXIKKyAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gbV90ZW1wb3Jh
cnlCdWZmZXI7CisKKyAgICAgICAgLy8gV2Ugb2NjYXRpb25hbGx5IHdhbnQgdG8gZW1pdCBib3Ro
IGEgY2hhcmFjdGVyIHRva2VuIGFuZCBhbiBlbmQgdGFnCisgICAgICAgIC8vIHRva2VuIChlLmcu
LCB3aGVuIGxleGluZyBzY3JpcHQpLiAgV2UgYnVmZmVyIHRoZSBuYW1lIG9mIHRoZSBlbmQgdGFn
CisgICAgICAgIC8vIHRva2VuIGhlcmUgc28gd2UgcmVtZW1iZXIgaXQgbmV4dCB0aW1lIHdlIHJl
LWVudGVyIHRoZSBsZXhlci4KKyAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gbV9idWZmZXJlZEVu
ZFRhZ05hbWU7CisKKyAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jYWRkaXRpb25hbC1hbGxvd2VkLWNoYXJhY3RlcgorICAgICAgICBV
Q2hhciBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyOworCisgICAgICAgIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3ByZXByb2Nlc3Npbmct
dGhlLWlucHV0LXN0cmVhbQorICAgICAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lucHV0
U3RyZWFtUHJlcHJvY2Vzc29yOworICAgIH07CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TDVFbnRpdHlQYXJzZXIuaAkocmV2aXNpb24gNjA5MzgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVF
bnRpdHlQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMjA5ICsyNCwxNCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBIVE1MNUxleGVyX2gKLSNkZWZpbmUgSFRNTDVMZXhl
cl9oCisjaWZuZGVmIEhUTUw1RW50aXR5UGFyc2VyX2gKKyNkZWZpbmUgSFRNTDVFbnRpdHlQYXJz
ZXJfaAogCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3Ry
aW5nLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBIVE1MNVRva2VuOwotCi0g
ICAgY2xhc3MgSFRNTDVMZXhlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgcHVibGljOgot
ICAgICAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgICAgIERhdGFTdGF0ZSwKLSAgICAgICAgICAg
IENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlLAotICAgICAgICAgICAgUkNEQVRBU3RhdGUs
Ci0gICAgICAgICAgICBDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlLAotICAgICAgICAg
ICAgUkFXVEVYVFN0YXRlLAotICAgICAgICAgICAgU2NyaXB0RGF0YVN0YXRlLAotICAgICAgICAg
ICAgUExBSU5URVhUU3RhdGUsCi0gICAgICAgICAgICBUYWdPcGVuU3RhdGUsCi0gICAgICAgICAg
ICBFbmRUYWdPcGVuU3RhdGUsCi0gICAgICAgICAgICBUYWdOYW1lU3RhdGUsCi0gICAgICAgICAg
ICBSQ0RBVEFMZXNzVGhhblNpZ25TdGF0ZSwKLSAgICAgICAgICAgIFJDREFUQUVuZFRhZ09wZW5T
dGF0ZSwKLSAgICAgICAgICAgIFJDREFUQUVuZFRhZ05hbWVTdGF0ZSwKLSAgICAgICAgICAgIFJB
V1RFWFRMZXNzVGhhblNpZ25TdGF0ZSwKLSAgICAgICAgICAgIFJBV1RFWFRFbmRUYWdPcGVuU3Rh
dGUsCi0gICAgICAgICAgICBSQVdURVhURW5kVGFnTmFtZVN0YXRlLAotICAgICAgICAgICAgU2Ny
aXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlLAotICAgICAgICAgICAgU2NyaXB0RGF0YUVuZFRhZ09w
ZW5TdGF0ZSwKLSAgICAgICAgICAgIFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUsCi0gICAgICAg
ICAgICBTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSwKLSAgICAgICAgICAgIFNjcmlwdERhdGFF
c2NhcGVTdGFydERhc2hTdGF0ZSwKLSAgICAgICAgICAgIFNjcmlwdERhdGFFc2NhcGVkU3RhdGUs
Ci0gICAgICAgICAgICBTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSwKLSAgICAgICAgICAgIFNj
cmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSwKLSAgICAgICAgICAgIFNjcmlwdERhdGFFc2Nh
cGVkTGVzc1RoYW5TaWduU3RhdGUsCi0gICAgICAgICAgICBTY3JpcHREYXRhRXNjYXBlZEVuZFRh
Z09wZW5TdGF0ZSwKLSAgICAgICAgICAgIFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRl
LAotICAgICAgICAgICAgU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUsCi0gICAgICAg
ICAgICBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlLAotICAgICAgICAgICAgU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWREYXNoU3RhdGUsCi0gICAgICAgICAgICBTY3JpcHREYXRhRG91YmxlRXNj
YXBlZERhc2hEYXNoU3RhdGUsCi0gICAgICAgICAgICBTY3JpcHREYXRhRG91YmxlRXNjYXBlZExl
c3NUaGFuU2lnblN0YXRlLAotICAgICAgICAgICAgU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0
YXRlLAotICAgICAgICAgICAgQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlLAotICAgICAgICAgICAg
QXR0cmlidXRlTmFtZVN0YXRlLAotICAgICAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUs
Ci0gICAgICAgICAgICBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlLAotICAgICAgICAgICAgQXR0
cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVl
U2luZ2xlUXVvdGVkU3RhdGUsCi0gICAgICAgICAgICBBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3Rh
dGUsCi0gICAgICAgICAgICBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUs
Ci0gICAgICAgICAgICBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUsCi0gICAgICAgICAg
ICBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUsCi0gICAgICAgICAgICBCb2d1c0NvbW1lbnRTdGF0
ZSwKLSAgICAgICAgICAgIE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlLAotICAgICAgICAgICAg
Q29tbWVudFN0YXJ0U3RhdGUsCi0gICAgICAgICAgICBDb21tZW50U3RhcnREYXNoU3RhdGUsCi0g
ICAgICAgICAgICBDb21tZW50U3RhdGUsCi0gICAgICAgICAgICBDb21tZW50RW5kRGFzaFN0YXRl
LAotICAgICAgICAgICAgQ29tbWVudEVuZFN0YXRlLAotICAgICAgICAgICAgQ29tbWVudEVuZEJh
bmdTdGF0ZSwKLSAgICAgICAgICAgIENvbW1lbnRFbmRTcGFjZVN0YXRlLAotICAgICAgICAgICAg
RE9DVFlQRVN0YXRlLAotICAgICAgICAgICAgQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSwKLSAgICAg
ICAgICAgIERPQ1RZUEVOYW1lU3RhdGUsCi0gICAgICAgICAgICBBZnRlckRPQ1RZUEVOYW1lU3Rh
dGUsCi0gICAgICAgICAgICBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUsCi0gICAgICAg
ICAgICBCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAotICAgICAgICAgICAgRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgICAgIERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUsCi0gICAgICAgICAgICBBZnRlckRP
Q1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUsCi0gICAgICAgICAgICBCZXR3ZWVuRE9DVFlQRVB1
YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUsCi0gICAgICAgICAgICBBZnRlckRPQ1RZUEVT
eXN0ZW1LZXl3b3JkU3RhdGUsCi0gICAgICAgICAgICBCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclN0YXRlLAotICAgICAgICAgICAgRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90
ZWRTdGF0ZSwKLSAgICAgICAgICAgIERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVk
U3RhdGUsCi0gICAgICAgICAgICBBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUsCi0g
ICAgICAgICAgICBCb2d1c0RPQ1RZUEVTdGF0ZSwKLSAgICAgICAgICAgIENEQVRBU2VjdGlvblN0
YXRlLAotICAgICAgICB9OwotCi0gICAgICAgIEhUTUw1TGV4ZXIoKTsKLSAgICAgICAgfkhUTUw1
TGV4ZXIoKTsKLQotICAgICAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiByZXR1cm5zIHRydWUgaWYgaXQgZW1pdHMgYSB0b2tlbi4gIE90aGVyd2lzZSwgY2FsbGVy
cwotICAgICAgICAvLyBtdXN0IHByb3ZpZGUgdGhlIHNhbWUgKGluIHByb2dyZXNzKSB0b2tlbiBv
biB0aGUgbmV4dCBjYWxsICh1bmxlc3MKLSAgICAgICAgLy8gdGhleSBjYWxsIHJlc2V0KCkgZmly
c3QpLgotICAgICAgICBib29sIG5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmLCBIVE1MNVRva2Vu
Jik7Ci0KLSAgICAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1i
ZXI7IH0KLSAgICAgICAgaW50IGNvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8g
TWF0Y2hlcyBIVE1MVG9rZW5pemVyLmggYmVoYXZpb3IuCi0KLSAgICAgICAgdm9pZCBzZXRTdGF0
ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0YXRlID0gc3RhdGU7IH0KLQotICAgICAgICAvLyBIYWNrIHRv
IHNraXAgbGVhZGluZyBuZXdsaW5lIGluIDxwcmU+LzxsaXN0aW5nPiBmb3IgYXV0aG9yaW5nIGVh
c2UuCi0gICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHkK
LSAgICAgICAgdm9pZCBza2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nKCkgeyBtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3RpbmcgPSB0cnVlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAv
LyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVw
cm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KLSAgICAgICAgY2xhc3MgSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3IgOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAg
ICAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvcigpCi0gICAgICAgICAgICAgICAgOiBtX25leHRJ
bnB1dENoYXJhY3RlcignXDAnKQotICAgICAgICAgICAgICAgICwgbV9za2lwTmV4dE5ld0xpbmUo
ZmFsc2UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFVDaGFy
IG5leHRJbnB1dENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dElucHV0Q2hhcmFjdGVy
OyB9Ci0KLSAgICAgICAgICAgIC8vIFJldHVybnMgd2hldGhlciB3ZSBzdWNjZWVkZWQgaW4gcGVl
a2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAvLyBUaGUgb25seSB3YXkg
d2UgY2FuIGZhaWwgdG8gcGVlayBpcyBpZiB0aGVyZSBhcmUgbm8gbW9yZQotICAgICAgICAgICAg
Ly8gY2hhcmFjdGVycyBpbiB8c291cmNlfCAoYWZ0ZXIgY29sbGFwc2luZyBcclxuLCBldGMpLgot
ICAgICAgICAgICAgYm9vbCBwZWVrKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxpbmVO
dW1iZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0
ZXIgPSAqc291cmNlOwotICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9
PSAnXG4nICYmIG1fc2tpcE5leHROZXdMaW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc2tp
cE5leHROZXdMaW5lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNl
UGFzdE5ld2xpbmUobGluZU51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXHIn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gJ1xuJzsKLSAg
ICAgICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBpbmRpY2F0ZXMgdGhh
dCB0aGUgc3Vycm9nYXRlIHBhaXIgcmFuZ2UgYXMgd2VsbCBhcwotICAgICAgICAgICAgICAgICAg
ICAvLyBhIG51bWJlciBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBwYXJzZSBlcnJv
cnMgYW5kIHNob3VsZCBiZSByZXBsYWNlZAotICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGUg
cmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXZSBzdXNwZWN0IHRoaXMgaXMgYSBwcm9ibGVtIHdpdGgg
dGhlIHNwZWMgYXMgZG9pbmcKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBmaWx0ZXJpbmcg
YnJlYWtzIHN1cnJvZ2F0ZSBwYWlyIGhhbmRsaW5nIGFuZCBjYXVzZXMgdXMgbm90IHRvIG1hdGNo
IE1pbmVmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVy
ID09ICdcMCcpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9
IDB4RkZGRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSBh
cmUgbW9yZSBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IGFmdGVyIGFkdmFuY2luZy4KLSAgICAgICAg
ICAgIGJvb2wgYWR2YW5jZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgaW50JiBsaW5lTnVtYmVy
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKGxpbmVOdW1i
ZXIpOwotICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNl
LCBsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAg
ICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay8jbmV4dC1pbnB1dC1jaGFyYWN0ZXIKLSAgICAgICAgICAgIFVDaGFyIG1fbmV4dElucHV0Q2hh
cmFjdGVyOwotICAgICAgICAgICAgYm9vbCBtX3NraXBOZXh0TmV3TGluZTsKLSAgICAgICAgfTsK
LQotICAgICAgICBpbmxpbmUgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyKTsKLSAgICAgICAgaW5s
aW5lIHZvaWQgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdEN1cnJl
bnRUb2tlbigpOwotICAgICAgICBpbmxpbmUgdm9pZCBlbWl0Q29kZVBvaW50KHVuc2lnbmVkKTsK
LQotICAgICAgICB1bnNpZ25lZCBjb25zdW1lRW50aXR5KFNlZ21lbnRlZFN0cmluZyYsIGJvb2wm
IG5vdEVub3VnaENoYXJhY3RlcnMpOwotICAgICAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKTsKLQotICAgICAgICBpbmxpbmUgYm9vbCB0ZW1wb3Jh
cnlCdWZmZXJJcyhjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICAvLyBTb21ldGltZXMgd2Ugc3Bl
Y3VsYXRpdmVseSBjb25zdW1lIGlucHV0IGNoYXJhY3RlcnMgYW5kIHdlIGRvbid0Ci0gICAgICAg
IC8vIGtub3cgd2hldGhlciB0aGV5IHJlcHJlc2VudCBlbmQgdGFncyBvciBSQ0RBVEEsIGV0Yy4g
IFRoZXNlCi0gICAgICAgIC8vIGZ1bmN0aW9ucyBoZWxwIG1hbmFnZSB0aGVzZSBzdGF0ZS4KLSAg
ICAgICAgaW5saW5lIHZvaWQgYWRkVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBjYyk7Ci0gICAgICAg
IGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWcoKTsKLQotICAgICAgICBpbmxpbmUgYm9v
bCBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcm
KTsKLQotICAgICAgICBTdGF0ZSBtX3N0YXRlOwotCi0gICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+
IG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lOwotCi0gICAgICAgIC8vIG1fdG9rZW4gaXMgb3duZWQg
YnkgdGhlIGNhbGxlci4gIElmIG5leHRUb2tlbiBpcyBub3Qgb24gdGhlIHN0YWNrLAotICAgICAg
ICAvLyB0aGlzIG1lbWJlciBtaWdodCBiZSBwb2ludGluZyB0byB1bmFsbG9jYXRlZCBtZW1vcnku
Ci0gICAgICAgIEhUTUw1VG9rZW4qIG1fdG9rZW47Ci0gICAgICAgIGludCBtX2xpbmVOdW1iZXI7
Ci0KLSAgICAgICAgYm9vbCBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3Rpbmc7Ci0KLSAgICAg
ICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8j
dGVtcG9yYXJ5LWJ1ZmZlcgotICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBtX3RlbXBvcmFyeUJ1
ZmZlcjsKLQotICAgICAgICAvLyBXZSBvY2NhdGlvbmFsbHkgd2FudCB0byBlbWl0IGJvdGggYSBj
aGFyYWN0ZXIgdG9rZW4gYW5kIGFuIGVuZCB0YWcKLSAgICAgICAgLy8gdG9rZW4gKGUuZy4sIHdo
ZW4gbGV4aW5nIHNjcmlwdCkuICBXZSBidWZmZXIgdGhlIG5hbWUgb2YgdGhlIGVuZCB0YWcKLSAg
ICAgICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1lbWJlciBpdCBuZXh0IHRpbWUgd2UgcmUtZW50
ZXIgdGhlIGxleGVyLgotICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBtX2J1ZmZlcmVkRW5kVGFn
TmFtZTsKLQotICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrLyNhZGRpdGlvbmFsLWFsbG93ZWQtY2hhcmFjdGVyCi0gICAgICAgIFVDaGFy
IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXI7Ci0KLSAgICAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUt
aW5wdXQtc3RyZWFtCi0gICAgICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yIG1faW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I7Ci0gICAgfTsKK3Vuc2lnbmVkIGNvbnN1bWVIVE1MNUVudGl0eShTZWdt
ZW50ZWRTdHJpbmcmLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzLCBVQ2hhciBhZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciA9ICdcMCcpOwogCiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
NUxleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAJKHJl
dmlzaW9uIDYwOTM4KQorKysgV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSFRNTDVMZXhlci5oIgogCiAjaW5jbHVk
ZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiSFRNTDVFbnRpdHlQYXJzZXIuaCIKICNpbmNs
dWRlICJIVE1MNVRva2VuLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKQEAgLTM3LDIwICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAotCi0vLyBVc2UgX19H
TlVDX18gaW5zdGVhZCBvZiBQTEFURk9STShHQ0MpIHRvIHN0YXkgY29uc2lzdGVudCB3aXRoIHRo
ZSBncGVyZiBnZW5lcmF0ZWQgYyBmaWxlCi0jaWZkZWYgX19HTlVDX18KLS8vIFRoZSBtYWluIHRv
a2VuaXplciBpbmNsdWRlcyB0aGlzIHRvbyBzbyB3ZSBhcmUgZ2V0dGluZyB0d28gY29waWVzIG9m
IHRoZSBkYXRhLiBIb3dldmVyLCB0aGlzIHdheSB0aGUgY29kZSBnZXRzIGlubGluZWQuCi0jaW5j
bHVkZSAiSFRNTEVudGl0eU5hbWVzLmMiCi0jZWxzZQotLy8gTm90IGlubGluZWQgZm9yIG5vbi1H
Q0MgY29tcGlsZXJzCi1zdHJ1Y3QgRW50aXR5IHsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAg
IGludCBjb2RlOwotfTsKLWNvbnN0IHN0cnVjdCBFbnRpdHkqIGZpbmRFbnRpdHkocmVnaXN0ZXIg
Y29uc3QgY2hhciogc3RyLCByZWdpc3RlciB1bnNpZ25lZCBpbnQgbGVuKTsKLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OSwxMyArNDYs
NiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBuYW1lc3BhY2UgewogCi1zdGF0aWMg
Y29uc3QgVUNoYXIgd2luZG93c0xhdGluMUV4dGVuc2lvbkFycmF5WzMyXSA9IHsKLSAgICAweDIw
QUMsIDB4MDA4MSwgMHgyMDFBLCAweDAxOTIsIDB4MjAxRSwgMHgyMDI2LCAweDIwMjAsIDB4MjAy
MSwgLy8gODAtODcKLSAgICAweDAyQzYsIDB4MjAzMCwgMHgwMTYwLCAweDIwMzksIDB4MDE1Miwg
MHgwMDhELCAweDAxN0QsIDB4MDA4RiwgLy8gODgtOEYKLSAgICAweDAwOTAsIDB4MjAxOCwgMHgy
MDE5LCAweDIwMUMsIDB4MjAxRCwgMHgyMDIyLCAweDIwMTMsIDB4MjAxNCwgLy8gOTAtOTcKLSAg
ICAweDAyREMsIDB4MjEyMiwgMHgwMTYxLCAweDIwM0EsIDB4MDE1MywgMHgwMDlELCAweDAxN0Us
IDB4MDE3OCwgLy8gOTgtOUYKLX07Ci0KIGlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBj
YykKIHsKICAgICBBU1NFUlQoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJyk7CkBAIC04OSw0NCArNjks
NiBAQCBpbmxpbmUgYm9vbCB2ZWN0b3JFcXVhbHNTdHJpbmcoY29uc3QgVmVjCiAgICAgcmV0dXJu
ICFtZW1jbXAoc3RyaW5nRGF0YSwgdmVjdG9yRGF0YSwgdmVjdG9yLnNpemUoKSAqIHNpemVvZihV
Q2hhcikpOwogfQogCi1pbmxpbmUgVUNoYXIgYWRqdXN0RW50aXR5KHVuc2lnbmVkIHZhbHVlKQot
ewotICAgIGlmICgodmFsdWUgJiB+MHgxRikgIT0gMHgwMDgwKQotICAgICAgICByZXR1cm4gdmFs
dWU7Ci0gICAgcmV0dXJuIHdpbmRvd3NMYXRpbjFFeHRlbnNpb25BcnJheVt2YWx1ZSAtIDB4ODBd
OwotfQotCi1pbmxpbmUgdW5zaWduZWQgbGVnYWxFbnRpdHlGb3IodW5zaWduZWQgdmFsdWUpCi17
Ci0gICAgLy8gRklYTUU6IEEgbnVtYmVyIG9mIHNwZWNpZmljIGVudGl0eSB2YWx1ZXMgZ2VuZXJh
dGUgcGFyc2UgZXJyb3JzLgotICAgIGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMHgxMEZGRkYg
fHwgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERGRkYpKQotICAgICAgICByZXR1cm4g
MHhGRkZEOwotICAgIGlmICh2YWx1ZSA8IDB4RkZGRikKLSAgICAgICAgcmV0dXJuIGFkanVzdEVu
dGl0eSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1pbmxpbmUgYm9vbCBpc0hleERp
Z2l0KFVDaGFyIGNjKQotewotICAgIHJldHVybiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykgfHwg
KGNjID49ICdhJyAmJiBjYyA8PSAnZicpIHx8IChjYyA+PSAnQScgJiYgY2MgPD0gJ0YnKTsKLX0K
LQotaW5saW5lIGJvb2wgaXNBbHBoYU51bWVyaWMoVUNoYXIgY2MpCi17Ci0gICAgcmV0dXJuIChj
YyA+PSAnMCcgJiYgY2MgPD0gJzknKSB8fCAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgfHwgKGNj
ID49ICdBJyAmJiBjYyA8PSAnWicpOwotfQotCi12b2lkIHVuY29uc3VtZUNoYXJhY3RlcnMoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFZlY3RvcjxVQ2hhciwgMTA+JiBjb25zdW1lZENo
YXJhY3RlcnMpCi17Ci0gICAgaWYgKGNvbnN1bWVkQ2hhcmFjdGVycy5zaXplKCkgPT0gMSkKLSAg
ICAgICAgc291cmNlLnB1c2goY29uc3VtZWRDaGFyYWN0ZXJzWzBdKTsKLSAgICBlbHNlIGlmIChj
b25zdW1lZENoYXJhY3RlcnMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgc291cmNlLnB1c2goY29u
c3VtZWRDaGFyYWN0ZXJzWzBdKTsKLSAgICAgICAgc291cmNlLnB1c2goY29uc3VtZWRDaGFyYWN0
ZXJzWzFdKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc291cmNlLnByZXBlbmQoU2VnbWVudGVkU3Ry
aW5nKFN0cmluZyhjb25zdW1lZENoYXJhY3RlcnMuZGF0YSgpLCBjb25zdW1lZENoYXJhY3RlcnMu
c2l6ZSgpKSkpOwotfQotCiBpbmxpbmUgYm9vbCBpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKEhUTUw1
TGV4ZXI6OlN0YXRlIHN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZSA9PSBIVE1MNUxleGVyOjpS
Q0RBVEFFbmRUYWdPcGVuU3RhdGUKQEAgLTE1OSwxNTUgKzEwMSwxMCBAQCB2b2lkIEhUTUw1TGV4
ZXI6OnJlc2V0KCkKICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wwJzsKIH0K
IAotdW5zaWduZWQgSFRNTDVMZXhlcjo6Y29uc3VtZUVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycykKLXsKLSAgICBBU1NFUlQobV9zdGF0ZSAh
PSBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUgfHwgbV9hZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciA9PSAnIicgfHwgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9
PSAnXCcnIHx8IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJz4nKTsKLSAgICBBU1NF
UlQoIW5vdEVub3VnaENoYXJhY3RlcnMpOwotCi0gICAgZW51bSBFbnRpdHlTdGF0ZSB7Ci0gICAg
ICAgIEluaXRpYWwsCi0gICAgICAgIE51bWJlclR5cGUsCi0gICAgICAgIE1heWJlSGV4TG93ZXJD
YXNlWCwKLSAgICAgICAgTWF5YmVIZXhVcHBlckNhc2VYLAotICAgICAgICBIZXgsCi0gICAgICAg
IERlY2ltYWwsCi0gICAgICAgIE5hbWVkCi0gICAgfTsKLSAgICBFbnRpdHlTdGF0ZSBlbnRpdHlT
dGF0ZSA9IEluaXRpYWw7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKLSAgICBWZWN0b3I8VUNo
YXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7Ci0gICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRpdHlO
YW1lOwotCi0gICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFVDaGFyIGNj
ID0gKnNvdXJjZTsKLSAgICAgICAgc3dpdGNoIChlbnRpdHlTdGF0ZSkgewotICAgICAgICBjYXNl
IEluaXRpYWw6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEn
IHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJzwnIHx8IGNjID09ICcmJykK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGlmIChtX3N0YXRlID09IENo
YXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSAmJiBjYyA9PSBtX2FkZGl0aW9u
YWxBbGxvd2VkQ2hhcmFjdGVyKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgaWYgKGNjID09ICcjJykgewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTnVtYmVy
VHlwZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICgoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgfHwgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
KSB7Ci0gICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBOYW1lZDsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgTnVtYmVyVHlwZTogewotICAgICAgICAgICAgaWYgKGNjID09ICd4
JykgewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTWF5YmVIZXhMb3dlckNhc2VYOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNj
ID09ICdYJykgewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTWF5YmVIZXhVcHBlckNh
c2VYOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHsKLSAgICAgICAgICAgICAgICBlbnRpdHlTdGF0
ZSA9IERlY2ltYWw7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzb3VyY2UucHVzaCgnIycpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBNYXliZUhleExvd2VyQ2FzZVg6IHsKLSAgICAgICAgICAgIGlm
IChpc0hleERpZ2l0KGNjKSkgewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gSGV4Owot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc291
cmNlLnB1c2goJyMnKTsKLSAgICAgICAgICAgIHNvdXJjZS5wdXNoKCd4Jyk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE1heWJlSGV4VXBwZXJDYXNlWDog
ewotICAgICAgICAgICAgaWYgKGlzSGV4RGlnaXQoY2MpKSB7Ci0gICAgICAgICAgICAgICAgZW50
aXR5U3RhdGUgPSBIZXg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzb3VyY2UucHVzaCgnIycpOwotICAgICAgICAgICAgc291cmNlLnB1c2go
J1gnKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSGV4
OiB7Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKLSAgICAgICAgICAg
ICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIGNjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICdmJykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQgKiAxNiArIDEwICsgY2MgLSAnYSc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScg
JiYgY2MgPD0gJ0YnKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAg
KyBjYyAtICdBJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7JykgewotICAgICAgICAg
ICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSAKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRGVjaW1hbDogewotICAgICAgICAgICAgaWYg
KGNjID49ICcwJyAmJiBjYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0
ICogMTAgKyBjYyAtICcwJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7JykgewotICAg
ICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOYW1lZDogewotICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZy4gV2UgbmVlZCB0byBmaW5kIHRoZSBsb25nZXN0
IG1hdGNoaW5nIGVudGl0eS4KLSAgICAgICAgICAgIC8vICAgICAgICBUaGUgZXhhbXBsZXMgZnJv
bSB0aGUgc3BlYyBhcmU6Ci0gICAgICAgICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aXQ7IEkg
dGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICAgICAgSSdtICZub3RpbjsgSSB0ZWxsIHlv
dQotICAgICAgICAgICAgLy8gICAgICAgIEluIHRoZSBmaXJzdCBjYXNlLCAiJm5vdCIgaXMgdGhl
IGVudGl0eS4gIEluIHRoZSBzZWNvbmQKLSAgICAgICAgICAgIC8vICAgICAgICBjYXNlLCAiJm5v
dGluOyIgaXMgdGhlIGVudGl0eS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBPdXIgbGlzdCBvZiBI
VE1MIGVudGl0aWVzIGlzIGluY29tcGxldGUuCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhlIG51
bWJlciA4IGJlbG93IGlzIGJvZ3VzLgotICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0
eSgpICYmIGVudGl0eU5hbWUuc2l6ZSgpIDw9IDgpIHsKLSAgICAgICAgICAgICAgICBjYyA9ICpz
b3VyY2U7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc7JykgewotICAgICAgICAgICAgICAg
ICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50aXR5TmFtZS5kYXRhKCks
IGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJzsnKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICghaXNBbHBoYU51bWVyaWMoY2MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0
eSogZW50aXR5ID0gZmluZEVudGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXpl
KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBIVE1MNSB0ZWxscyB1cyB0byBpZ25vcmUgdGhpcyBlbnRpdHksIGZvciBoaXN0
b3JpY2FsIHJlYXNvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgbG9va2hl
YWQgY2hhcmFjdGVyIGlzICc9Jy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3N0YXRl
ID09IENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSAmJiBjYyA9PSAnPScp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVu
dGl0eS0+Y29kZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW50aXR5TmFtZS5hcHBl
bmQoY2MpOwotICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOwot
ICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSBzb3VyY2UuaXNFbXB0eSgpOwot
ICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVy
cyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOwotICAgICAgICBzb3VyY2UuYWR2YW5jZUFu
ZEFTU0VSVChjYyk7Ci0gICAgfQotICAgIEFTU0VSVChzb3VyY2UuaXNFbXB0eSgpKTsKLSAgICBu
b3RFbm91Z2hDaGFyYWN0ZXJzID0gdHJ1ZTsKLSAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJj
ZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKLSAgICByZXR1cm4gMDsKLX0KLQogaW5saW5lIGJvb2wg
SFRNTDVMZXhlcjo6cHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIHsKICAg
ICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9
IGNvbnN1bWVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICB1bnNpZ25l
ZCB2YWx1ZSA9IGNvbnN1bWVIVE1MNUVudGl0eShzb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMp
OwogICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCF2YWx1ZSkKQEAgLTExMTYsNyArOTEzLDcgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaQogCiAgICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNl
SW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7CiAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVy
cyA9IGZhbHNlOwotICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVFbnRpdHkoc291cmNl
LCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1l
SFRNTDVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzLCBtX2FkZGl0aW9uYWxBbGxv
d2VkQ2hhcmFjdGVyKTsKICAgICAgICAgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAgICAg
ICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKICAg
ICAgICAgaWYgKCF2YWx1ZSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAkocmV2aXNpb24gNjA5MzgpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbmxpbmUgdm9pZCBlbWl0Q3VycmVudFRv
a2VuKCk7CiAgICAgICAgIGlubGluZSB2b2lkIGVtaXRDb2RlUG9pbnQodW5zaWduZWQpOwogCi0g
ICAgICAgIHVuc2lnbmVkIGNvbnN1bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiwgYm9vbCYgbm90
RW5vdWdoQ2hhcmFjdGVycyk7CiAgICAgICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHkoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpOwogCiAgICAgICAgIGlubGluZSBib29sIHRlbXBvcmFyeUJ1
ZmZlcklzKGNvbnN0IFN0cmluZyYpOwo=
</data>
<flag name="review"
          id="43389"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>