<?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>41052</bug_id>
          
          <creation_ts>2010-06-23 01:37:30 -0700</creation_ts>
          <short_desc>Rename the preload scanners</short_desc>
          <delta_ts>2010-06-23 01:57:02 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241747</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 01:37:30 -0700</bug_when>
    <thetext>Rename the preload scanners</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241748</commentid>
    <comment_count>1</comment_count>
      <attachid>59490</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 01:39:50 -0700</bug_when>
    <thetext>Created attachment 59490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241749</commentid>
    <comment_count>2</comment_count>
      <attachid>59490</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-23 01:41:39 -0700</bug_when>
    <thetext>Comment on attachment 59490
Patch

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241750</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-23 01:42:21 -0700</bug_when>
    <thetext>Attachment 59490 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/LegacyHTMLDocumentParser.cpp:50:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/html/HTMLDocumentParser.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 17 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>241752</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 01:44:13 -0700</bug_when>
    <thetext>Committed r61675: &lt;http://trac.webkit.org/changeset/61675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241762</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-23 01:57:02 -0700</bug_when>
    <thetext>Attachment 59490 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3287623</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59490</attachid>
            <date>2010-06-23 01:39:50 -0700</date>
            <delta_ts>2010-06-23 01:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41052-20100623013948.patch</filename>
            <type>text/plain</type>
            <size>117903</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTY3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTAtMDYtMjMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgdGhlIHByZWxvYWQgc2Nhbm5lcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxMDUyCisKKyAgICAgICAgUmVuYW1lcyBQcmVsb2FkU2Nhbm5lciB0
byBMZWdhY3lQcmVsb2FkU2Nhbm5lciBiZWNhdXNlIHRoaXMgY29kZSBpcyBub3cKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuICBBbHNvLCByZW5hbWUgSFRNTDVQcmVsb2FkU2Nhbm5lciB0bworICAg
ICAgICBIVE1MUHJlbG9hZFNjYW5uZXIuICBXZSdyZSBub3QgY2FsbGluZyBpdCBQcmVsb2FkU2Nh
bm5lciBiZWNhdXNlIHdlJ3ZlCisgICAgICAgIGZhY3RvcmVkIG91dCB0aGUgQ1NTUHJlbG9hZFNj
YW5uZXIgYW5kIHRoZSBIVE1MUHJlbG9hZFNjYW5uZXIgZnJvbSB0aGUKKyAgICAgICAgb3JpZ2lu
YWwgUHJlbG9hZFNjYW5uZXIuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOiBDb3BpZWQg
ZnJvbSBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OmFwcGVuZFRvRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJl
bG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJlbG9h
ZFNjYW5uZXI6OnNjYW5uaW5nQm9keSk6CisgICAgICAgICogaHRtbC9IVE1MUHJlbG9hZFNjYW5u
ZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaC4KKyAg
ICAgICAgKiBodG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnNjcmlwdEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpzY3JpcHRFeGVjdXRpb24pOgorICAg
ICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9M
ZWdhY3lQcmVsb2FkU2Nhbm5lci5jcHA6IENvcGllZCBmcm9tIFdlYkNvcmUvaHRtbC9QcmVsb2Fk
U2Nhbm5lci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6TGVn
YWN5UHJlbG9hZFNjYW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5u
ZXI6On5MZWdhY3lQcmVsb2FkU2Nhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVs
b2FkU2Nhbm5lcjo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5u
ZXI6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6cmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5uZXI6OnNjYW5uaW5nQm9keSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5uZXI6OmNsZWFyTGFzdENoYXJhY3RlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5uZXI6OnJlbWVtYmVyQ2hhcmFjdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZWxvYWRTY2FubmVyOjpsYXN0Q2hhcmFjdGVy
c01hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZWxvYWRTY2FubmVyOjpjb25zdW1l
RW50aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZWxvYWRTY2FubmVyOjp0b2tlbml6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6ZW1pdENoYXJh
Y3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemVD
U1MpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5uZXI6OmVtaXRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJlbG9hZFNjYW5uZXI6OmVtaXRDU1NSdWxlKToKKyAg
ICAgICAgKiBodG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmg6IENvcGllZCBmcm9tIFdlYkNvcmUv
aHRtbC9QcmVsb2FkU2Nhbm5lci5oLgorICAgICAgICAqIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvUHJlbG9hZFNjYW5uZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlSFRNTEVudGl0aWVzKToKKwogMjAxMC0wNi0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDog
V2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5tawkocmV2
aXNpb24gNjE2NzQpCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTI1
Miw3ICsyNTIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlo
dG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwIFwKIAlodG1sL0hUTUxUb2tlbml6ZXIuY3BwIFwKIAlo
dG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgXAotCWh0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5j
cHAgXAorCWh0bWwvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9IVE1MU2NyaXB0UnVu
bmVyLmNwcCBcCiAJaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIFwKIAlodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmNwcCBcCkBAIC0yNzIsNyArMjcyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9D
QUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBcCiAJaHRt
bC9JbWFnZURhdGEuY3BwIFwKIAlodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAgXAotCWh0bWwv
UHJlbG9hZFNjYW5uZXIuY3BwIFwKKwlodG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmNwcCBcCiAJ
aHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCiAJXApJbmRl
eDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiA2MTY3NCkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTkwOSw3ICs5MDksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9IVE1MRW50aXR5UGFyc2VyLmNwcAogICAgIGh0bWwvSFRNTFRva2VuaXplci5jcHAKICAgICBo
dG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKLSAgICBodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIu
Y3BwCisgICAgaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCiAgICAgaHRtbC9IVE1MU2NyaXB0
UnVubmVyLmNwcAogICAgIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAogICAgIGh0bWwvSFRNTEFs
bENvbGxlY3Rpb24uY3BwCkBAIC05OTksNyArOTk5LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIGh0bWwvSW1hZ2VEYXRhLmNwcAogICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAog
ICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwCi0gICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAK
KyAgICBodG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmNwcAogICAgIGh0bWwvU3RlcFJhbmdlLmNw
cAogICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFk
aWVudC5jcHAKQEAgLTE3MTEsNyArMTcxMSw3IEBAIEFERF9TT1VSQ0VfREVSSVZFRF9ERVBFTkRF
TkNJRVMoJHtXRUJDT1IKIEFERF9TT1VSQ0VfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JF
X0RJUn0vaHRtbC9IVE1MRG9jdW1lbnQuY3BwIERvY1R5cGVTdHJpbmdzLmNwcCkKIEFERF9TT1VS
Q0VfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwIENvbG9yRGF0YS5jcHApCiBBRERfU09VUkNFX0RFUklWRURfREVQRU5ERU5DSUVT
KCR7V0VCQ09SRV9ESVJ9L2Nzcy9DU1NQYXJzZXIuY3BwIHRva2VuaXplci5jcHApCi1BRERfU09V
UkNFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvUHJlbG9hZFNjYW5u
ZXIuY3BwIEhUTUxFbnRpdHlOYW1lcy5jcHApCitBRERfU09VUkNFX0RFUklWRURfREVQRU5ERU5D
SUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3BwIEhUTUxFbnRp
dHlOYW1lcy5jcHApCiBBRERfU09VUkNFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9E
SVJ9L2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAgSFRNTEVudGl0eU5hbWVzLmNwcCkKIEFERF9T
T1VSQ0VfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgVXNlckFnZW50U3R5bGVTaGVl
dHMuaCkKIApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2MTY3NCkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOTMsOCArMTA5Myw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oIFwKIAlXZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oIFwK
LQlXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgXAotCVdlYkNvcmUvaHRtbC9I
VE1MNVByZWxvYWRTY2FubmVyLmggXAorCVdlYkNvcmUvaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFByZWxvYWRTY2FubmVyLmggXAogCVdlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0UnVubmVyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXIu
aCBcCiAJV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRSdW5uZXJIb3N0LmggXApAQCAtMTI3Nyw4ICsx
Mjc3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxp
c3QuY3BwIFwKIAlXZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAJV2ViQ29yZS9odG1s
L01lZGlhRXJyb3IuaCBcCi0JV2ViQ29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCi0JV2Vi
Q29yZS9odG1sL1ByZWxvYWRTY2FubmVyLmggXAorCVdlYkNvcmUvaHRtbC9MZWdhY3lQcmVsb2Fk
U2Nhbm5lci5jcHAgXAorCVdlYkNvcmUvaHRtbC9MZWdhY3lQcmVsb2FkU2Nhbm5lci5oIFwKIAlX
ZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBcCiAJV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oIFwK
IAlXZWJDb3JlL2h0bWwvVGV4dE1ldHJpY3MuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjE2NzQpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTQ3Nyw4ICsxNDc3LDgg
QEAKICAgICAgICAgICAgICdodG1sL0hUTUxUb2tlbml6ZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5oJywKLSAgICAgICAgICAgICdodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwJywK
LSAgICAgICAgICAgICdodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaCcsCisgICAgICAgICAgICAn
aHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUxQcmVs
b2FkU2Nhbm5lci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxTY3JpcHRSdW5uZXIuY3BwJywK
ICAgICAgICAgICAgICdodG1sL0hUTUxTY3JpcHRSdW5uZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MVHJlZUJ1aWxkZXIuY3BwJywKQEAgLTE2NjcsOCArMTY2Nyw4IEBACiAgICAgICAgICAg
ICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9k
ZUxpc3QuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLAotICAgICAgICAgICAg
J2h0bWwvUHJlbG9hZFNjYW5uZXIuY3BwJywKLSAgICAgICAgICAgICdodG1sL1ByZWxvYWRTY2Fu
bmVyLmgnLAorICAgICAgICAgICAgJ2h0bWwvTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3BwJywKKyAg
ICAgICAgICAgICdodG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmgnLAogICAgICAgICAgICAgJ2h0
bWwvU3RlcFJhbmdlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9TdGVwUmFuZ2UuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9UZXh0TWV0cmljcy5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjE2NzQpCisrKyBX
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MTQsNyArNjE0LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBcCiAgICAgaHRtbC9IVE1M
VG9rZW5pemVyLmNwcCBcCiAgICAgaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKLSAgICBo
dG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIFwKKyAgICBodG1sL0hUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAgXAogICAgIGh0bWwvSFRNTFNjcmlwdFJ1bm5lci5jcHAgXAogICAgIGh0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcCBcCiAgICAgaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAgXApAQCAtNzA0
LDcgKzcwNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAgICAg
aHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmNw
cCBcCi0gICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAgXAorICAgIGh0bWwvTGVnYWN5UHJlbG9h
ZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXAogICAgIGh0bWwvVmFsaWRp
dHlTdGF0ZS5jcHAgXAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXApAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9JbWFnZURhdGEuaCBcCiAgICAg
aHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwK
LSAgICBodG1sL1ByZWxvYWRTY2FubmVyLmggXAorICAgIGh0bWwvTGVnYWN5UHJlbG9hZFNjYW5u
ZXIuaCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuaCBcCiAgICAgaHRtbC9UaW1lUmFuZ2VzLmggXAog
ICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gNjE2NzQpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQwMSwxMSArMzM0MDEsMTEgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxI
VE1MNVByZWxvYWRTY2FubmVyLmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1UHJlbG9hZFNjYW5uZXIuaCINCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXEhUTUxQcmVsb2FkU2Nhbm5lci5oIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQpAQCAtMzc3MzMsMTEgKzM3NzMzLDExIEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcUHJlbG9hZFNjYW5uZXIu
Y3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxQcmVsb2FkU2Nhbm5lci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGVnYWN5
UHJlbG9hZFNjYW5uZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MTY3
NCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTY1LDggKzI1NjUsOCBAQAogCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQg
LyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3
REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAv
KiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhT
U0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87IH07Ci0JCTk3RTc5
MzY1MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTc5MzYzMTFDNjAzMDkwMEU2
NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVyLmNwcCAqLzsgfTsKLQkJOTdFNzkzNjYxMUM2MDMw
OTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTc5MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1M
NVByZWxvYWRTY2FubmVyLmggKi87IH07CisJCTk3RTc5MzY1MTFDNjAzMDkwMEU2NDlCQyAvKiBI
VE1MUHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdFNzkzNjMxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAgKi87IH07CisJCTk3RTc5MzY2MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MUHJlbG9hZFNj
YW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
RTc5MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MUHJlbG9hZFNjYW5uZXIuaCAqLzsgfTsKIAkJ
OTdFOEIzNTYxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOEIzNTQxMUEyM0NFMjAwMTY5
NDA5IC8qIEhUTUxUb2tlbml6ZXIuY3BwICovOyB9OwogCQk5N0U4QjM1NzExQTIzQ0UyMDAxNjk0
MDkgLyogSFRNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuaCAq
LzsgfTsKIAkJOTdFOEIzQzMxMUEyODkwODAwMTY5NDA5IC8qIEhUTUxUb2tlbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOEIzQzIxMUEyODkwODAw
MTY5NDA5IC8qIEhUTUxUb2tlbi5oICovOyB9OwpAQCAtNTA0MCw4ICs1MDQwLDggQEAKIAkJRTQ3
NzhCODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Nzc4QjdFMTE1QTU4MUEwMEI1RDM3MiAv
KiBKU0N1c3RvbUV2ZW50LmggKi87IH07CiAJCUU0N0I0QkU4MEU3MTI0MTYwMDAzODg1NCAvKiBD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ3QjRCRTYwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFu
ZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTQ3QjRCRTkwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0I0QkU3MEU3MTI0
MTYwMDAzODg1NCAvKiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgKi87IH07Ci0JCUU0OTYyNkMy
MEQ4MEQ5NDgwMEUzNDA1QyAvKiBQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ0QUJFMDBENzU0MkYwMDBGOTY4NjkgLyog
UHJlbG9hZFNjYW5uZXIuY3BwICovOyB9OwotCQlFNDk2MjZDMzBEODBEOTQ5MDBFMzQwNUMgLyog
UHJlbG9hZFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RDRBQkUxMEQ3NTQyRjEwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5oICovOyB9
OworCQlFNDk2MjZDMjBEODBEOTQ4MDBFMzQwNUMgLyogTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENEFCRTAw
RDc1NDJGMDAwRjk2ODY5IC8qIExlZ2FjeVByZWxvYWRTY2FubmVyLmNwcCAqLzsgfTsKKwkJRTQ5
NjI2QzMwRDgwRDk0OTAwRTM0MDVDIC8qIExlZ2FjeVByZWxvYWRTY2FubmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ0QUJFMTBENzU0MkYxMDBG
OTY4NjkgLyogTGVnYWN5UHJlbG9hZFNjYW5uZXIuaCAqLzsgfTsKIAkJRTRBRkNGQTUwREFGMjlB
MzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0QUZDRkE0MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmgg
Ki87IH07CiAJCUU0QUZEMDBCMERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFGRDAwNTBEQUYzMzU0
MDBGNUY1NUMgLyogU01JTFRpbWUuY3BwICovOyB9OwogCQlFNEFGRDAwQzBEQUYzMzU0MDBGNUY1
NUMgLyogU01JTFRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QUZEMDA2MERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MTczLDggKzgxNzMsOCBA
QAogCQk5N0RDRTIwMDEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNTQXVkaXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg1MEZERjRENkUwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhT
U0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdFNzkzNjMxMUM2MDMw
OTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTk3RTc5MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRT
Y2FubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1UHJlbG9hZFNj
YW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdFNzkzNjMxMUM2MDMwOTAw
RTY0OUJDIC8qIEhUTUxQcmVsb2FkU2Nhbm5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIVE1MUHJlbG9hZFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5N0U3OTM2NDExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTFByZWxvYWRTY2FubmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQcmVsb2FkU2Nhbm5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkg
LyogSFRNTFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFOEIz
NTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTFRva2VuaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0U4QjNDMjExQTI4OTA4MDAxNjk0MDkgLyogSFRNTFRva2VuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA2MzMsOCArMTA2MzMsOCBAQAogCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkg
LyogQ1NTU2VsZWN0b3JMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U1NlbGVjdG9yTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEMyNzk1NjBD
Rjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTWVkaWEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTRENEFCRTAwRDc1NDJGMDAwRjk2ODY5IC8qIFByZWxvYWRTY2FubmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZWxvYWRTY2FubmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTRENEFCRTEwRDc1NDJGMTAwRjk2ODY5
IC8qIFByZWxvYWRTY2FubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
ZWxvYWRTY2FubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RDRBQkUwMEQ3
NTQyRjAwMEY5Njg2OSAvKiBMZWdhY3lQcmVsb2FkU2Nhbm5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lQcmVsb2FkU2Nhbm5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RDRBQkUxMEQ3NTQyRjEwMEY5Njg2OSAvKiBMZWdhY3lQ
cmVsb2FkU2Nhbm5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lQ
cmVsb2FkU2Nhbm5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ2ODc3NjBF
RDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0RDY4Nzc4MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVC
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VhYmxlQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RUVGRkM2MEQzNDU1MEMwMDQ2OUE1
OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzNDg5LDggKzEzNDg5LDggQEAKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkg
LyogSFRNTEVudGl0eVBhcnNlci5oICovLAogCQkJCTk3RThCMzU0MTFBMjNDRTIwMDE2OTQwOSAv
KiBIVE1MVG9rZW5pemVyLmNwcCAqLywKIAkJCQk5N0U4QjM1NTExQTIzQ0UyMDAxNjk0MDkgLyog
SFRNTFRva2VuaXplci5oICovLAotCQkJCTk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1M
NVByZWxvYWRTY2FubmVyLmNwcCAqLywKLQkJCQk5N0U3OTM2NDExQzYwMzA5MDBFNjQ5QkMgLyog
SFRNTDVQcmVsb2FkU2Nhbm5lci5oICovLAorCQkJCTk3RTc5MzYzMTFDNjAzMDkwMEU2NDlCQyAv
KiBIVE1MUHJlbG9hZFNjYW5uZXIuY3BwICovLAorCQkJCTk3RTc5MzY0MTFDNjAzMDkwMEU2NDlC
QyAvKiBIVE1MUHJlbG9hZFNjYW5uZXIuaCAqLywKIAkJCQlBODNCM0FFRTExQURFRkY1MDA0NTg4
MDkgLyogSFRNTFNjcmlwdFJ1bm5lci5jcHAgKi8sCiAJCQkJQTgzQjNBRUYxMUFERUZGNTAwNDU4
ODA5IC8qIEhUTUxTY3JpcHRSdW5uZXIuaCAqLywKIAkJCQlBODdGMTYzNDExQUU4NDEzMDBDQkIy
RTUgLyogSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCAqLywKQEAgLTEzNzYwLDggKzEzNzYwLDggQEAK
IAkJCQlGNTIzRDI1MTAyREU0Mzk2MDE4NjM1Q0EgLyogTGVnYWN5SFRNTFRyZWVDb25zdHJ1Y3Rv
ci5oICovLAogCQkJCUU0NDYxMzlCMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmggKi8s
CiAJCQkJRTQ0NjEzOUMwQ0Q2MzMxMDAwRkFEQTc1IC8qIE1lZGlhRXJyb3IuaWRsICovLAotCQkJ
CUU0RDRBQkUwMEQ3NTQyRjAwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5jcHAgKi8sCi0JCQkJ
RTRENEFCRTEwRDc1NDJGMTAwRjk2ODY5IC8qIFByZWxvYWRTY2FubmVyLmggKi8sCisJCQkJRTRE
NEFCRTAwRDc1NDJGMDAwRjk2ODY5IC8qIExlZ2FjeVByZWxvYWRTY2FubmVyLmNwcCAqLywKKwkJ
CQlFNEQ0QUJFMTBENzU0MkYxMDBGOTY4NjkgLyogTGVnYWN5UHJlbG9hZFNjYW5uZXIuaCAqLywK
IAkJCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLywKIAkJCQlB
NUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi8sCiAJCQkJQkNFRjQ1RTgw
RTY4Nzc2NzAwMUMxMjg3IC8qIFRleHRNZXRyaWNzLmggKi8sCkBAIC0xODA1NCw3ICsxODA1NCw3
IEBACiAJCQkJQTg3MTAzOEIxMUEyOTQ3MDAwREJENTBFIC8qIEhUTUxEb2N1bWVudFBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RTg5NjExMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUxFbnRp
dHlQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3RThCMzU3MTFBMjNDRTIwMDE2OTQwOSAv
KiBIVE1MVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5N0U3OTM2NjExQzYwMzA5MDBF
NjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdFNzkz
NjYxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUxQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgzQjNBRjExMUFERUZGNTAwNDU4ODA5IC8qIEhUTUxTY3JpcHRSdW5uZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4N0YxNjM1MTFBRTg0MTMwMENCQjJFNSAvKiBIVE1MU2NyaXB0UnVu
bmVySG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdFOEIzQzMxMUEyODkwODAwMTY5NDA5IC8q
IEhUTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODgzMCw3ICsxODgzMCw3IEBACiAJCQkJ
RkU4MEQ3Q0YwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc5MTlDMjQwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFODBEN0QxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0OTYyNkMzMEQ4MEQ5NDkwMEUzNDA1
QyAvKiBQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ5NjI2QzMwRDgwRDk0
OTAwRTM0MDVDIC8qIExlZ2FjeVByZWxvYWRTY2FubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
NzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEVBN0VCQzBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFQzBDRDY4MUI1MDBGQURBNzUgLyogUHJvZ3Jlc3NF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMDM5Niw3ICsyMDM5Niw3IEBACiAJCQkJQTg3MTAz
OEExMUEyOTQ3MDAwREJENTBFIC8qIEhUTUxEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzZFODk2MDExQzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0U4QjM1NjExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTFRva2Vu
aXplci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5N0U3OTM2NTExQzYwMzA5MDBFNjQ5QkMgLyog
SFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5N0U3OTM2NTExQzYw
MzA5MDBFNjQ5QkMgLyogSFRNTFByZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4M0IzQUYwMTFBREVGRjUwMDQ1ODgwOSAvKiBIVE1MU2NyaXB0UnVubmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4NzlDNjI1MTFBOUQxRjcwMDU5MjM3QSAvKiBIVE1MVHJlZUJ1aWxkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5N0UyM0IxMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxB
bGxDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjEyMjUsNyArMjEyMjUsNyBAQAog
CQkJCTA2NjhFMTkwMEFERDk2NDAwMDQxMjhFMCAvKiBQb3B1cE1lbnVNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5M0YxOUFGODA4MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc5MTlDMjMwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTQ5NjI2QzIwRDgwRDk0ODAwRTM0MDVDIC8qIFBy
ZWxvYWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0OTYyNkMyMEQ4MEQ5NDgwMEUz
NDA1QyAvKiBMZWdhY3lQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNzc2
RDQzRDExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4RUE3RUJEMEExOTQ1RDAwMEE4RUY1RiAvKiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0NjEzRUIwQ0Q2ODFCNDAwRkFEQTc1IC8qIFByb2dyZXNz
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2Fk
U2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5u
ZXIuY3BwCShyZXZpc2lvbiA2MTY3NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2Fu
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSFRNTDVQcmVsb2FkU2Nhbm5lci5oIgotCi0jaW5jbHVkZSAiQ1NT
SGVscGVyLmgiCi0jaW5jbHVkZSAiRG9jTG9hZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBQcmVsb2FkVGFz
ayB7Ci1wdWJsaWM6Ci0gICAgUHJlbG9hZFRhc2soY29uc3QgSFRNTFRva2VuJiB0b2tlbikKLSAg
ICAgICAgOiBtX3RhZ05hbWUodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUo
KSkKLSAgICAgICAgLCBtX2xpbmtJc1N0eWxlU2hlZXQoZmFsc2UpCi0gICAgewotICAgICAgICBw
cm9jZXNzQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwotICAgIH0KLQotICAgIHZvaWQg
cHJvY2Vzc0F0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1
dGVzKQotICAgIHsKLSAgICAgICAgaWYgKG1fdGFnTmFtZSAhPSBzY3JpcHRUYWcgJiYgbV90YWdO
YW1lICE9IGltZ1RhZyAmJiBtX3RhZ05hbWUgIT0gbGlua1RhZykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBmb3IgKEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGF0dHJpYnV0ZXMuYmVnaW4oKTsKLSAgICAgICAgICAgICBpdGVyICE9IGF0dHJp
YnV0ZXMuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0
ZU5hbWUoaXRlci0+bV9uYW1lLmRhdGEoKSwgaXRlci0+bV9uYW1lLnNpemUoKSk7Ci0gICAgICAg
ICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUoaXRlci0+bV92YWx1ZS5kYXRhKCksIGl0ZXItPm1f
dmFsdWUuc2l6ZSgpKTsKLQotICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gY2hhcnNl
dEF0dHIpCi0gICAgICAgICAgICAgICAgbV9jaGFyc2V0ID0gYXR0cmlidXRlVmFsdWU7Ci0KLSAg
ICAgICAgICAgIGlmIChtX3RhZ05hbWUgPT0gc2NyaXB0VGFnIHx8IG1fdGFnTmFtZSA9PSBpbWdU
YWcpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzcmNBdHRyKQotICAg
ICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChtX3RhZ05hbWUgPT0gbGlua1RhZykgewotICAgICAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09IGhyZWZBdHRyKQotICAgICAgICAgICAgICAgICAgICBzZXRVcmxU
b0xvYWQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZU5hbWUgPT0gcmVsQXR0cikKLSAgICAgICAgICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0
ID0gcmVsQXR0cmlidXRlSXNTdHlsZVNoZWV0KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgcmVsQXR0cmlidXRlSXNTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQobV90
YWdOYW1lID09IGxpbmtUYWcpOwotICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0
ZSByZWw7Ci0gICAgICAgIEhUTUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0
cmlidXRlVmFsdWUsIHJlbCk7Ci0gICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYg
IXJlbC5tX2lzQWx0ZXJuYXRlICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0
Y2g7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcmxUb0xvYWQoY29uc3QgU3RyaW5nJiBhdHRyaWJ1
dGVWYWx1ZSkKLSAgICB7Ci0gICAgICAgIC8vIFdlIG9ubHkgcmVzcGVjdCB0aGUgZmlyc3Qgc3Jj
L2hyZWYsIHBlciBIVE1MNToKLSAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjYXR0cmli
dXRlLW5hbWUtc3RhdGUKLSAgICAgICAgaWYgKCFtX3VybFRvTG9hZC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fdXJsVG9Mb2FkID0gZGVwcmVjYXRlZFBhcnNlVVJM
KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHByZWxvYWQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBib29sIHNjYW5uaW5nQm9keSkKLSAgICB7Ci0gICAgICAgIGlmIChtX3VybFRvTG9h
ZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgRG9jTG9hZGVyKiBk
b2NMb2FkZXIgPSBkb2N1bWVudC0+ZG9jTG9hZGVyKCk7Ci0gICAgICAgIGlmIChtX3RhZ05hbWUg
PT0gc2NyaXB0VGFnKQotICAgICAgICAgICAgZG9jTG9hZGVyLT5wcmVsb2FkKENhY2hlZFJlc291
cmNlOjpTY3JpcHQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5uaW5nQm9keSk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBpbWdUYWcpIAotICAgICAgICAgICAgZG9jTG9hZGVy
LT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCBtX3VybFRvTG9hZCwgU3Ry
aW5nKCksIHNjYW5uaW5nQm9keSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBsaW5r
VGFnICYmIG1fbGlua0lzU3R5bGVTaGVldCkgCi0gICAgICAgICAgICBkb2NMb2FkZXItPnByZWxv
YWQoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQs
IHNjYW5uaW5nQm9keSk7Ci0gICAgfQotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1l
KCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9Ci0KLXByaXZhdGU6Ci0gICAgQXRvbWljU3Ry
aW5nIG1fdGFnTmFtZTsKLSAgICBTdHJpbmcgbV91cmxUb0xvYWQ7Ci0gICAgU3RyaW5nIG1fY2hh
cnNldDsKLSAgICBib29sIG1fbGlua0lzU3R5bGVTaGVldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
Ci0KLUhUTUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRv
Y3VtZW50KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fY3NzU2Nhbm5lcihk
b2N1bWVudCkKLSAgICAsIG1fYm9keVNlZW4oZmFsc2UpCi0gICAgLCBtX2luU3R5bGUoZmFsc2Up
Ci17Ci19Ci0KLXZvaWQgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpCi17Ci0gICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7Ci19
Ci0KLXZvaWQgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2NhbigpCi17Ci0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCBzYXZlIGFuZCByZS11c2UgdGhlc2UgdG9rZW5zIGluIEhUTUxEb2N1bWVudFBhcnNl
ciBpZgotICAgIC8vIHRoZSBwZW5kaW5nIHNjcmlwdCBkb2Vzbid0IGVuZCB1cCBjYWxsaW5nIGRv
Y3VtZW50LndyaXRlLgotICAgIHdoaWxlIChtX3Rva2VuaXplci5uZXh0VG9rZW4obV9zb3VyY2Us
IG1fdG9rZW4pKSB7Ci0gICAgICAgIHByb2Nlc3NUb2tlbigpOwotICAgICAgICBtX3Rva2VuLmNs
ZWFyKCk7Ci0gICAgfQotfQotCi12b2lkIEhUTUw1UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tl
bigpCi17Ci0gICAgaWYgKG1faW5TdHlsZSkgewotICAgICAgICBpZiAobV90b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCi0gICAgICAgICAgICBtX2Nzc1NjYW5uZXIuc2Nhbiht
X3Rva2VuLCBzY2FubmluZ0JvZHkoKSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fdG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6RW5kVGFnKSB7Ci0gICAgICAgICAgICBtX2luU3R5bGUgPSBmYWxzZTsK
LSAgICAgICAgICAgIG1fY3NzU2Nhbm5lci5yZXNldCgpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFByZWxvYWRUYXNrIHRhc2sobV90b2tlbik7Ci0gICAgbV90b2tlbml6ZXIu
c2V0U3RhdGUoSFRNTFRyZWVCdWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUobV90b2tlbml6ZXIu
c3RhdGUoKSwgdGFzay50YWdOYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCkpKTsKLSAgICBpZiAo
dGFzay50YWdOYW1lKCkgPT0gc2NyaXB0VGFnKSB7Ci0gICAgICAgIC8vIFRoZSB0cmVlIGJ1aWxk
ZXIgaGFuZGxlcyBzY3JpcHRUYWcgc2VwYXJhdGVseSBmcm9tIHRoZSBvdGhlciB0b2tlbml6ZXIK
LSAgICAgICAgLy8gc3RhdGUgYWRqdXN0bWVudHMsIHNvIHdlIG5lZWQgdG8gaGFuZGxlIGl0IHNl
cGFyYXRlbHkgdG9vLgotICAgICAgICBBU1NFUlQobV90b2tlbml6ZXIuc3RhdGUoKSA9PSBIVE1M
VG9rZW5pemVyOjpEYXRhU3RhdGUpOwotICAgICAgICBtX3Rva2VuaXplci5zZXRTdGF0ZShIVE1M
VG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUpOwotICAgIH0KLQotICAgIGlmICh0YXNrLnRhZ05h
bWUoKSA9PSBib2R5VGFnKQotICAgICAgICBtX2JvZHlTZWVuID0gdHJ1ZTsKLQotICAgIGlmICh0
YXNrLnRhZ05hbWUoKSA9PSBzdHlsZVRhZykKLSAgICAgICAgbV9pblN0eWxlID0gdHJ1ZTsKLQot
ICAgIHRhc2sucHJlbG9hZChtX2RvY3VtZW50LCBzY2FubmluZ0JvZHkoKSk7Ci19Ci0KLWJvb2wg
SFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fYm9keVNlZW47Ci19Ci0KLX0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUw1UHJlbG9hZFNjYW5uZXIuaAkocmV2aXNpb24gNjE2NzMpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TDVQcmVsb2FkU2Nhbm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEhUTUw1UHJl
bG9hZFNjYW5uZXJfaAotI2RlZmluZSBIVE1MNVByZWxvYWRTY2FubmVyX2gKLQotI2luY2x1ZGUg
IkNTU1ByZWxvYWRTY2FubmVyLmgiCi0jaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgotI2luY2x1
ZGUgIkhUTUxUb2tlbi5oIgotI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgotI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgSFRNTFRva2VuOwotY2xhc3MgU2VnbWVudGVkU3RyaW5nOwotCi1jbGFzcyBI
VE1MNVByZWxvYWRTY2FubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBI
VE1MNVByZWxvYWRTY2FubmVyKERvY3VtZW50Kik7Ci0KLSAgICB2b2lkIGFwcGVuZFRvRW5kKGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYpOwotICAgIHZvaWQgc2NhbigpOwotCi1wcml2YXRlOgotICAg
IHZvaWQgcHJvY2Vzc1Rva2VuKCk7Ci0gICAgYm9vbCBzY2FubmluZ0JvZHkoKSBjb25zdDsKLQot
ICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwotICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsK
LSAgICBIVE1MVG9rZW5pemVyIG1fdG9rZW5pemVyOwotICAgIEhUTUxUb2tlbiBtX3Rva2VuOwot
ICAgIENTU1ByZWxvYWRTY2FubmVyIG1fY3NzU2Nhbm5lcjsKLSAgICBib29sIG1fYm9keVNlZW47
Ci0gICAgYm9vbCBtX2luU3R5bGU7Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAJKHJldmlzaW9uIDYxNjc0KQorKysgV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJTY2hlZHVsZXIuaCIKICNpbmNs
dWRlICJIVE1MVG9rZW5pemVyLmgiCi0jaW5jbHVkZSAiSFRNTDVQcmVsb2FkU2Nhbm5lci5oIgor
I2luY2x1ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRSdW5u
ZXIuaCIKICNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1l
bnQuaCIKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRv
a2VuaXplcihTCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBBU1NF
UlQobV90b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRTY2Fu
bmVyLnNldChuZXcgSFRNTDVQcmVsb2FkU2Nhbm5lcihtX2RvY3VtZW50KSk7CisgICAgICAgICAg
ICBtX3ByZWxvYWRTY2FubmVyLnNldChuZXcgSFRNTFByZWxvYWRTY2FubmVyKG1fZG9jdW1lbnQp
KTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQuY3Vy
cmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCk7Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCShyZXZpc2lvbiA2MTY3NCkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUs
NyBAQCBjbGFzcyBIVE1MUGFyc2VyU2NoZWR1bGVyOwogY2xhc3MgSFRNTFRva2VuaXplcjsKIGNs
YXNzIEhUTUxTY3JpcHRSdW5uZXI7CiBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI7Ci1jbGFzcyBIVE1M
NVByZWxvYWRTY2FubmVyOworY2xhc3MgSFRNTFByZWxvYWRTY2FubmVyOwogY2xhc3MgTGVnYWN5
SFRNTFRyZWVDb25zdHJ1Y3RvcjsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3Jp
cHRTb3VyY2VDb2RlOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhU
TUxUb2tlbml6ZXI+IG1fdG9rZW5pemVyOwogICAgIE93blB0cjxIVE1MU2NyaXB0UnVubmVyPiBt
X3NjcmlwdFJ1bm5lcjsKICAgICBPd25QdHI8SFRNTFRyZWVCdWlsZGVyPiBtX3RyZWVDb25zdHJ1
Y3RvcjsKLSAgICBPd25QdHI8SFRNTDVQcmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsK
KyAgICBPd25QdHI8SFRNTFByZWxvYWRTY2FubmVyPiBtX3ByZWxvYWRTY2FubmVyOwogICAgIE93
blB0cjxIVE1MUGFyc2VyU2NoZWR1bGVyPiBtX3BhcnNlclNjaGVkdWxlcjsKIAogICAgIGJvb2wg
bV9lbmRXYXNEZWxheWVkOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAJKHJl
dmlzaW9uIDYxNjc0KQkoZnJvbSBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHA6
NjE2NzQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SFRNTDVQcmVsb2FkU2Nhbm5lci5oIgorCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVk
ZSAiRG9jTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVHJl
ZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOworCituYW1lc3BhY2UgeworCitjbGFzcyBQcmVsb2FkVGFzayB7CitwdWJsaWM6CisgICAg
UHJlbG9hZFRhc2soY29uc3QgSFRNTFRva2VuJiB0b2tlbikKKyAgICAgICAgOiBtX3RhZ05hbWUo
dG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSkKKyAgICAgICAgLCBtX2xp
bmtJc1N0eWxlU2hlZXQoZmFsc2UpCisgICAgeworICAgICAgICBwcm9jZXNzQXR0cmlidXRlcyh0
b2tlbi5hdHRyaWJ1dGVzKCkpOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZXMo
Y29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fdGFnTmFtZSAhPSBzY3JpcHRUYWcgJiYgbV90YWdOYW1lICE9IGltZ1RhZyAmJiBt
X3RhZ05hbWUgIT0gbGlua1RhZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3Ig
KEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGF0dHJpYnV0
ZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICBpdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7ICsraXRl
cikgeworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0ZU5hbWUoaXRlci0+bV9uYW1l
LmRhdGEoKSwgaXRlci0+bV9uYW1lLnNpemUoKSk7CisgICAgICAgICAgICBTdHJpbmcgYXR0cmli
dXRlVmFsdWUoaXRlci0+bV92YWx1ZS5kYXRhKCksIGl0ZXItPm1fdmFsdWUuc2l6ZSgpKTsKKwor
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gY2hhcnNldEF0dHIpCisgICAgICAgICAg
ICAgICAgbV9jaGFyc2V0ID0gYXR0cmlidXRlVmFsdWU7CisKKyAgICAgICAgICAgIGlmIChtX3Rh
Z05hbWUgPT0gc2NyaXB0VGFnIHx8IG1fdGFnTmFtZSA9PSBpbWdUYWcpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzcmNBdHRyKQorICAgICAgICAgICAgICAgICAgICBz
ZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtX3Rh
Z05hbWUgPT0gbGlua1RhZykgeworICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09
IGhyZWZBdHRyKQorICAgICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFs
dWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVsQXR0cikK
KyAgICAgICAgICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsQXR0cmlidXRlSXNT
dHlsZVNoZWV0KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGJvb2wgcmVsQXR0cmlidXRlSXNTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgYXR0
cmlidXRlVmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQobV90YWdOYW1lID09IGxpbmtUYWcp
OworICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7CisgICAgICAgIEhU
TUxMaW5rRWxlbWVudDo6dG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0cmlidXRlVmFsdWUsIHJlbCk7
CisgICAgICAgIHJldHVybiByZWwubV9pc1N0eWxlU2hlZXQgJiYgIXJlbC5tX2lzQWx0ZXJuYXRl
ICYmICFyZWwubV9pc0ljb24gJiYgIXJlbC5tX2lzRE5TUHJlZmV0Y2g7CisgICAgfQorCisgICAg
dm9pZCBzZXRVcmxUb0xvYWQoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIC8vIFdlIG9ubHkgcmVzcGVjdCB0aGUgZmlyc3Qgc3JjL2hyZWYsIHBlciBIVE1MNToK
KyAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjYXR0cmlidXRlLW5hbWUtc3RhdGUKKyAg
ICAgICAgaWYgKCFtX3VybFRvTG9hZC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fdXJsVG9Mb2FkID0gZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHJpYnV0ZVZhbHVlKTsK
KyAgICB9CisKKyAgICB2b2lkIHByZWxvYWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHNjYW5u
aW5nQm9keSkKKyAgICB7CisgICAgICAgIGlmIChtX3VybFRvTG9hZC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIgPSBkb2N1bWVu
dC0+ZG9jTG9hZGVyKCk7CisgICAgICAgIGlmIChtX3RhZ05hbWUgPT0gc2NyaXB0VGFnKQorICAg
ICAgICAgICAgZG9jTG9hZGVyLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpTY3JpcHQsIG1fdXJs
VG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5uaW5nQm9keSk7CisgICAgICAgIGVsc2UgaWYgKG1fdGFn
TmFtZSA9PSBpbWdUYWcpIAorICAgICAgICAgICAgZG9jTG9hZGVyLT5wcmVsb2FkKENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlLCBtX3VybFRvTG9hZCwgU3RyaW5nKCksIHNjYW5uaW5nQm9k
eSk7CisgICAgICAgIGVsc2UgaWYgKG1fdGFnTmFtZSA9PSBsaW5rVGFnICYmIG1fbGlua0lzU3R5
bGVTaGVldCkgCisgICAgICAgICAgICBkb2NMb2FkZXItPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6
OkNTU1N0eWxlU2hlZXQsIG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5uaW5nQm9keSk7Cisg
ICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV90YWdOYW1lOyB9CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1fdGFnTmFtZTsKKyAg
ICBTdHJpbmcgbV91cmxUb0xvYWQ7CisgICAgU3RyaW5nIG1fY2hhcnNldDsKKyAgICBib29sIG1f
bGlua0lzU3R5bGVTaGVldDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK0hUTUw1UHJlbG9hZFNj
YW5uZXI6OkhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogbV9k
b2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY3NzU2Nhbm5lcihkb2N1bWVudCkKKyAgICAsIG1f
Ym9keVNlZW4oZmFsc2UpCisgICAgLCBtX2luU3R5bGUoZmFsc2UpCit7Cit9CisKK3ZvaWQgSFRN
TDVQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UpCit7CisgICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7Cit9CisKK3ZvaWQgSFRNTDVQcmVs
b2FkU2Nhbm5lcjo6c2NhbigpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzYXZlIGFuZCBy
ZS11c2UgdGhlc2UgdG9rZW5zIGluIEhUTUxEb2N1bWVudFBhcnNlciBpZgorICAgIC8vIHRoZSBw
ZW5kaW5nIHNjcmlwdCBkb2Vzbid0IGVuZCB1cCBjYWxsaW5nIGRvY3VtZW50LndyaXRlLgorICAg
IHdoaWxlIChtX3Rva2VuaXplci5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9rZW4pKSB7CisgICAg
ICAgIHByb2Nlc3NUb2tlbigpOworICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgfQorfQor
Cit2b2lkIEhUTUw1UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCit7CisgICAgaWYgKG1f
aW5TdHlsZSkgeworICAgICAgICBpZiAobV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFy
YWN0ZXIpCisgICAgICAgICAgICBtX2Nzc1NjYW5uZXIuc2NhbihtX3Rva2VuLCBzY2FubmluZ0Jv
ZHkoKSk7CisgICAgICAgIGVsc2UgaWYgKG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
VGFnKSB7CisgICAgICAgICAgICBtX2luU3R5bGUgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fY3Nz
U2Nhbm5lci5yZXNldCgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fdG9rZW4udHlw
ZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAgICAgIHJldHVybjsKKworICAgIFByZWxv
YWRUYXNrIHRhc2sobV90b2tlbik7CisgICAgbV90b2tlbml6ZXIuc2V0U3RhdGUoSFRNTFRyZWVC
dWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUobV90b2tlbml6ZXIuc3RhdGUoKSwgdGFzay50YWdO
YW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCkpKTsKKyAgICBpZiAodGFzay50YWdOYW1lKCkgPT0g
c2NyaXB0VGFnKSB7CisgICAgICAgIC8vIFRoZSB0cmVlIGJ1aWxkZXIgaGFuZGxlcyBzY3JpcHRU
YWcgc2VwYXJhdGVseSBmcm9tIHRoZSBvdGhlciB0b2tlbml6ZXIKKyAgICAgICAgLy8gc3RhdGUg
YWRqdXN0bWVudHMsIHNvIHdlIG5lZWQgdG8gaGFuZGxlIGl0IHNlcGFyYXRlbHkgdG9vLgorICAg
ICAgICBBU1NFUlQobV90b2tlbml6ZXIuc3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpEYXRhU3Rh
dGUpOworICAgICAgICBtX3Rva2VuaXplci5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpTY3JpcHRE
YXRhU3RhdGUpOworICAgIH0KKworICAgIGlmICh0YXNrLnRhZ05hbWUoKSA9PSBib2R5VGFnKQor
ICAgICAgICBtX2JvZHlTZWVuID0gdHJ1ZTsKKworICAgIGlmICh0YXNrLnRhZ05hbWUoKSA9PSBz
dHlsZVRhZykKKyAgICAgICAgbV9pblN0eWxlID0gdHJ1ZTsKKworICAgIHRhc2sucHJlbG9hZCht
X2RvY3VtZW50LCBzY2FubmluZ0JvZHkoKSk7Cit9CisKK2Jvb2wgSFRNTDVQcmVsb2FkU2Nhbm5l
cjo6c2Nhbm5pbmdCb2R5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+Ym9keSgp
IHx8IG1fYm9keVNlZW47Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCShyZXZpc2lvbiA2MTY3MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkhUTUw1UHJlbG9hZFNjYW5uZXIuaCIKKyNpbmNsdWRlICJIVE1M
UHJlbG9hZFNjYW5uZXIuaCIKIAogI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNl
CiAKLUhUTUw1UHJlbG9hZFNjYW5uZXI6OkhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRv
Y3VtZW50KQorSFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fY3NzU2Nhbm5l
cihkb2N1bWVudCkKICAgICAsIG1fYm9keVNlZW4oZmFsc2UpCkBAIC0xMjUsMTIgKzEyNSwxMiBA
QCBIVE1MNVByZWxvYWRTY2FubmVyOjpIVE1MNVByZWxvYWRTY2FubmVyCiB7CiB9CiAKLXZvaWQg
SFRNTDVQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UpCit2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7CiB9CiAK
LXZvaWQgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2NhbigpCit2b2lkIEhUTUxQcmVsb2FkU2Nhbm5l
cjo6c2NhbigpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzYXZlIGFuZCByZS11c2UgdGhl
c2UgdG9rZW5zIGluIEhUTUxEb2N1bWVudFBhcnNlciBpZgogICAgIC8vIHRoZSBwZW5kaW5nIHNj
cmlwdCBkb2Vzbid0IGVuZCB1cCBjYWxsaW5nIGRvY3VtZW50LndyaXRlLgpAQCAtMTQwLDcgKzE0
MCw3IEBAIHZvaWQgSFRNTDVQcmVsb2FkU2Nhbm5lcjo6c2NhbigpCiAgICAgfQogfQogCi12b2lk
IEhUTUw1UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCit2b2lkIEhUTUxQcmVsb2FkU2Nh
bm5lcjo6cHJvY2Vzc1Rva2VuKCkKIHsKICAgICBpZiAobV9pblN0eWxlKSB7CiAgICAgICAgIGlm
IChtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKQEAgLTE3Miw3ICsxNzIs
NyBAQCB2b2lkIEhUTUw1UHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCiAgICAgdGFzay5w
cmVsb2FkKG1fZG9jdW1lbnQsIHNjYW5uaW5nQm9keSgpKTsKIH0KIAotYm9vbCBIVE1MNVByZWxv
YWRTY2FubmVyOjpzY2FubmluZ0JvZHkoKSBjb25zdAorYm9vbCBIVE1MUHJlbG9hZFNjYW5uZXI6
OnNjYW5uaW5nQm9keSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmJvZHkoKSB8
fCBtX2JvZHlTZWVuOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQcmVsb2FkU2Nhbm5lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIuaAkocmV2aXNp
b24gNjE2NzMpCShmcm9tIFdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmg6NjE2NzMp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFByZWxvYWRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgSFRNTDVQcmVsb2FkU2Nhbm5lcl9oCisjZGVmaW5lIEhUTUw1UHJlbG9hZFNj
YW5uZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJlbG9hZFNjYW5uZXIuaCIKKyNpbmNsdWRlICJIVE1M
VG9rZW5pemVyLmgiCisjaW5jbHVkZSAiSFRNTFRva2VuLmgiCisjaW5jbHVkZSAiU2VnbWVudGVk
U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBIVE1MVG9rZW47CitjbGFzcyBTZWdtZW50
ZWRTdHJpbmc7CisKK2NsYXNzIEhUTUw1UHJlbG9hZFNjYW5uZXIgOiBwdWJsaWMgTm9uY29weWFi
bGUgeworcHVibGljOgorICAgIEhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqKTsKKworICAg
IHZvaWQgYXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7CisgICAgdm9pZCBzY2Fu
KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNzVG9rZW4oKTsKKyAgICBib29sIHNjYW5u
aW5nQm9keSgpIGNvbnN0OworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgU2VnbWVu
dGVkU3RyaW5nIG1fc291cmNlOworICAgIEhUTUxUb2tlbml6ZXIgbV90b2tlbml6ZXI7CisgICAg
SFRNTFRva2VuIG1fdG9rZW47CisgICAgQ1NTUHJlbG9hZFNjYW5uZXIgbV9jc3NTY2FubmVyOwor
ICAgIGJvb2wgbV9ib2R5U2VlbjsKKyAgICBib29sIG1faW5TdHlsZTsKK307CisKK30KKworI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFByZWxvYWRTY2FubmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxQcmVsb2FkU2Nhbm5lci5oCShyZXZpc2lvbiA2MTY3MikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MUHJlbG9hZFNjYW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
OSArMzksOSBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxUb2tlbjsKIGNsYXNzIFNlZ21l
bnRlZFN0cmluZzsKIAotY2xhc3MgSFRNTDVQcmVsb2FkU2Nhbm5lciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CitjbGFzcyBIVE1MUHJlbG9hZFNjYW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewog
cHVibGljOgotICAgIEhUTUw1UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqKTsKKyAgICBIVE1MUHJl
bG9hZFNjYW5uZXIoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgYXBwZW5kVG9FbmQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJik7CiAgICAgdm9pZCBzY2FuKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvTGVn
YWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gNjE2NzIpCisrKyBXZWJDb3JlL2h0
bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQAogI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQcmVsb2FkU2Nhbm5l
ci5oIgorI2luY2x1ZGUgIkxlZ2FjeVByZWxvYWRTY2FubmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiWFNTQXVk
aXRvci5oIgpAQCAtNTMzLDcgKzUzMyw3IEBAIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6U3Rh
dGUgTGVnYWN5SFQKICNpZiBQUkVMT0FEX1NDQU5ORVJfRU5BQkxFRAogICAgIGlmICghbV9wZW5k
aW5nU2NyaXB0cy5pc0VtcHR5KCkgJiYgIW1fZXhlY3V0aW5nU2NyaXB0KSB7CiAgICAgICAgIGlm
ICghbV9wcmVsb2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIuc2V0KG5l
dyBQcmVsb2FkU2Nhbm5lcihtX2RvYykpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci5z
ZXQobmV3IExlZ2FjeVByZWxvYWRTY2FubmVyKG1fZG9jKSk7CiAgICAgICAgIGlmICghbV9wcmVs
b2FkU2Nhbm5lci0+aW5Qcm9ncmVzcygpKSB7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVy
LT5iZWdpbigpOwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+d3JpdGUobV9wZW5kaW5n
U3JjKTsKQEAgLTU4NCw3ICs1ODQsNyBAQCBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OlN0YXRl
IExlZ2FjeUhUCiAjaWYgUFJFTE9BRF9TQ0FOTkVSX0VOQUJMRUQKICAgICAgICAgICAgIC8vIFdl
IGFyZSBzdHVjayB3YWl0aW5nIGZvciBhbm90aGVyIHNjcmlwdC4gTGV0cyBjaGVjayB0aGUgc291
cmNlIHRoYXQKICAgICAgICAgICAgIC8vIHdhcyBqdXN0IGRvY3VtZW50LndyaXRlKCluIGZvciBh
bnl0aGluZyB0byBsb2FkLgotICAgICAgICAgICAgUHJlbG9hZFNjYW5uZXIgZG9jdW1lbnRXcml0
ZVByZWxvYWRTY2FubmVyKG1fZG9jKTsKKyAgICAgICAgICAgIExlZ2FjeVByZWxvYWRTY2FubmVy
IGRvY3VtZW50V3JpdGVQcmVsb2FkU2Nhbm5lcihtX2RvYyk7CiAgICAgICAgICAgICBkb2N1bWVu
dFdyaXRlUHJlbG9hZFNjYW5uZXIuYmVnaW4oKTsKICAgICAgICAgICAgIGRvY3VtZW50V3JpdGVQ
cmVsb2FkU2Nhbm5lci53cml0ZShwcmVwZW5kaW5nU3JjKTsKICAgICAgICAgICAgIGRvY3VtZW50
V3JpdGVQcmVsb2FkU2Nhbm5lci5lbmQoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9MZWdhY3lIVE1M
RG9jdW1lbnRQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvTGVnYWN5SFRNTERv
Y3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDYxNjcyKQorKysgV2ViQ29yZS9odG1sL0xlZ2FjeUhU
TUxEb2N1bWVudFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IEhUTUxWaWV3U291cmNlRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZVZpZXc7CiBjbGFzcyBMZWdhY3lI
VE1MVHJlZUNvbnN0cnVjdG9yOwogY2xhc3MgTm9kZTsKLWNsYXNzIFByZWxvYWRTY2FubmVyOwor
Y2xhc3MgTGVnYWN5UHJlbG9hZFNjYW5uZXI7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCiAv
KioKQEAgLTQzNyw3ICs0MzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9mcmFnbWVudDsKICAg
ICBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOwogCi0g
ICAgT3duUHRyPFByZWxvYWRTY2FubmVyPiBtX3ByZWxvYWRTY2FubmVyOworICAgIE93blB0cjxM
ZWdhY3lQcmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsKIH07CiAKIHZvaWQgcGFyc2VM
ZWdhY3lIVE1MRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50
KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2Vk
KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9MZWdhY3lQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gNjE2
NzIpCShmcm9tIFdlYkNvcmUvaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHA6NjE2NzIpCisrKyBXZWJD
b3JlL2h0bWwvTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJlbG9hZFNjYW5u
ZXIuaCIKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkNhY2hlZENTU1N0
eWxlU2hlZXQuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlLmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJD
YWNoZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJEb2NMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCisv
LyBVc2UgX19HTlVDX18gaW5zdGVhZCBvZiBQTEFURk9STShHQ0MpIHRvIHN0YXkgY29uc2lzdGVu
dCB3aXRoIHRoZSBncGVyZiBnZW5lcmF0ZWQgYyBmaWxlCisjaWZkZWYgX19HTlVDX18KKy8vIFRo
ZSBtYWluIHRva2VuaXplciBpbmNsdWRlcyB0aGlzIHRvbyBzbyB3ZSBhcmUgZ2V0dGluZyB0d28g
Y29waWVzIG9mIHRoZSBkYXRhLiBIb3dldmVyLCB0aGlzIHdheSB0aGUgY29kZSBnZXRzIGlubGlu
ZWQuCisjaW5jbHVkZSAiSFRNTEVudGl0eU5hbWVzLmNwcCIKKyNlbHNlCisvLyBOb3QgaW5saW5l
ZCBmb3Igbm9uLUdDQyBjb21waWxlcnMKK3N0cnVjdCBFbnRpdHkgeworICAgIGNvbnN0IGNoYXIq
IG5hbWU7CisgICAgaW50IGNvZGU7Cit9OworY29uc3Qgc3RydWN0IEVudGl0eSogZmluZEVudGl0
eShyZWdpc3RlciBjb25zdCBjaGFyKiBzdHIsIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBsZW4pOwor
I2VuZGlmCisKKyNkZWZpbmUgUFJFTE9BRF9ERUJVRyAwCisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CisgICAgCitQcmVsb2FkU2Nhbm5lcjo6UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRvYykKKyAg
ICA6IG1faW5Qcm9ncmVzcyhmYWxzZSkKKyAgICAsIG1fdGltZVVzZWQoMCkKKyAgICAsIG1fYm9k
eVNlZW4oZmFsc2UpCisgICAgLCBtX2RvY3VtZW50KGRvYykKK3sKKyNpZiBQUkVMT0FEX0RFQlVH
CisgICAgcHJpbnRmKCJDUkVBVElORyBQUkVMT0FEIFNDQU5ORVIgRk9SICVzXG4iLCBtX2RvY3Vt
ZW50LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworI2VuZGlmCit9CisgICAgCitQ
cmVsb2FkU2Nhbm5lcjo6flByZWxvYWRTY2FubmVyKCkKK3sKKyNpZiBQUkVMT0FEX0RFQlVHCisg
ICAgcHJpbnRmKCJERUxFVElORyBQUkVMT0FEIFNDQU5ORVIgRk9SICVzXG4iLCBtX2RvY3VtZW50
LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIHByaW50ZigiVE9UQUwgVElN
RSBVU0VEICUuNGZzXG4iLCBtX3RpbWVVc2VkKTsKKyNlbmRpZgorfQorICAgIAordm9pZCBQcmVs
b2FkU2Nhbm5lcjo6YmVnaW4oKSAKK3sgCisgICAgQVNTRVJUKCFtX2luUHJvZ3Jlc3MpOyAKKyAg
ICByZXNldCgpOyAKKyAgICBtX2luUHJvZ3Jlc3MgPSB0cnVlOyAKK30KKyAgICAKK3ZvaWQgUHJl
bG9hZFNjYW5uZXI6OmVuZCgpIAoreyAKKyAgICBBU1NFUlQobV9pblByb2dyZXNzKTsgCisgICAg
bV9pblByb2dyZXNzID0gZmFsc2U7IAorfQorCit2b2lkIFByZWxvYWRTY2FubmVyOjpyZXNldCgp
Cit7CisgICAgbV9zb3VyY2UuY2xlYXIoKTsKKyAgICAKKyAgICBtX3N0YXRlID0gRGF0YTsKKyAg
ICBtX2VzY2FwZSA9IGZhbHNlOworICAgIG1fY29udGVudE1vZGVsID0gUENEQVRBOworICAgIG1f
Y29tbWVudFBvcyA9IDA7CisKKyAgICBtX2Nsb3NlVGFnID0gZmFsc2U7CisgICAgbV90YWdOYW1l
LmNsZWFyKCk7CisgICAgbV9hdHRyaWJ1dGVOYW1lLmNsZWFyKCk7CisgICAgbV9hdHRyaWJ1dGVW
YWx1ZS5jbGVhcigpOworICAgIG1fbGFzdFN0YXJ0VGFnID0gQXRvbWljU3RyaW5nKCk7CisgICAg
CisgICAgbV91cmxUb0xvYWQgPSBTdHJpbmcoKTsKKyAgICBtX2NoYXJzZXQgPSBTdHJpbmcoKTsK
KyAgICBtX2xpbmtJc1N0eWxlU2hlZXQgPSBmYWxzZTsKKyAgICBtX2xhc3RDaGFyYWN0ZXJJbmRl
eCA9IDA7CisgICAgY2xlYXJMYXN0Q2hhcmFjdGVycygpOworICAgIAorICAgIG1fY3NzU3RhdGUg
PSBDU1NJbml0aWFsOworICAgIG1fY3NzUnVsZS5jbGVhcigpOworICAgIG1fY3NzUnVsZVZhbHVl
LmNsZWFyKCk7Cit9CisgICAgCitib29sIFByZWxvYWRTY2FubmVyOjpzY2FubmluZ0JvZHkoKSBj
b25zdAoreworICAgIHJldHVybiBtX2RvY3VtZW50LT5ib2R5KCkgfHwgbV9ib2R5U2VlbjsKK30K
KyAgICAKK3ZvaWQgUHJlbG9hZFNjYW5uZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYg
c291cmNlKQoreworI2lmIFBSRUxPQURfREVCVUcKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gY3Vy
cmVudFRpbWUoKTsKKyNlbmRpZgorICAgIHRva2VuaXplKHNvdXJjZSk7CisjaWYgUFJFTE9BRF9E
RUJVRworICAgIG1fdGltZVVzZWQgKz0gY3VycmVudFRpbWUoKSAtIHN0YXJ0VGltZTsKKyNlbmRp
ZgorfQorICAgIAorc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjKQorewor
ICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x0
JzsKK30KKyAgICAKK2lubGluZSB2b2lkIFByZWxvYWRTY2FubmVyOjpjbGVhckxhc3RDaGFyYWN0
ZXJzKCkKK3sKKyAgICBtZW1zZXQobV9sYXN0Q2hhcmFjdGVycywgMCwgbGFzdENoYXJhY3RlcnNC
dWZmZXJTaXplICogc2l6ZW9mKFVDaGFyKSk7Cit9CisgICAgCitpbmxpbmUgdm9pZCBQcmVsb2Fk
U2Nhbm5lcjo6cmVtZW1iZXJDaGFyYWN0ZXIoVUNoYXIgYykKK3sKKyAgICBtX2xhc3RDaGFyYWN0
ZXJJbmRleCA9IChtX2xhc3RDaGFyYWN0ZXJJbmRleCArIDEpICUgbGFzdENoYXJhY3RlcnNCdWZm
ZXJTaXplOworICAgIG1fbGFzdENoYXJhY3RlcnNbbV9sYXN0Q2hhcmFjdGVySW5kZXhdID0gYzsK
K30KKyAgICAKK2lubGluZSBib29sIFByZWxvYWRTY2FubmVyOjpsYXN0Q2hhcmFjdGVyc01hdGNo
KGNvbnN0IGNoYXIqIGNoYXJzLCB1bnNpZ25lZCBjb3VudCkgY29uc3QKK3sKKyAgICB1bnNpZ25l
ZCBwb3MgPSBtX2xhc3RDaGFyYWN0ZXJJbmRleDsKKyAgICB3aGlsZSAoY291bnQpIHsKKyAgICAg
ICAgaWYgKGNoYXJzW2NvdW50IC0gMV0gIT0gbV9sYXN0Q2hhcmFjdGVyc1twb3NdKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAtLWNvdW50OworICAgICAgICBpZiAoIXBvcykK
KyAgICAgICAgICAgIHBvcyA9IGxhc3RDaGFyYWN0ZXJzQnVmZmVyU2l6ZTsKKyAgICAgICAgLS1w
b3M7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorICAgIAorc3RhdGljIGlubGluZSB1bnNp
Z25lZCBsZWdhbEVudGl0eUZvcih1bnNpZ25lZCB2YWx1ZSkKK3sKKyAgICAvLyBGSVhNRSBUaGVy
ZSBpcyBhIHRhYmxlIGZvciBtb3JlIGV4Y2VwdGlvbnMgaW4gdGhlIEhUTUw1IHNwZWNpZmljYXRp
b24uCisgICAgaWYgKHZhbHVlID09IDAgfHwgdmFsdWUgPiAweDEwRkZGRiB8fCAodmFsdWUgPj0g
MHhEODAwICYmIHZhbHVlIDw9IDB4REZGRikpCisgICAgICAgIHJldHVybiAweEZGRkQ7CisgICAg
cmV0dXJuIHZhbHVlOworfQorICAgIAordW5zaWduZWQgUHJlbG9hZFNjYW5uZXI6OmNvbnN1bWVF
bnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMp
Cit7CisgICAgZW51bSBFbnRpdHlTdGF0ZSB7CisgICAgICAgIEluaXRpYWwsCisgICAgICAgIE51
bWJlclR5cGUsCisgICAgICAgIE1heWJlSGV4LAorICAgICAgICBIZXgsCisgICAgICAgIERlY2lt
YWwsCisgICAgICAgIE5hbWVkCisgICAgfTsKKyAgICBFbnRpdHlTdGF0ZSBlbnRpdHlTdGF0ZSA9
IEluaXRpYWw7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEw
PiBzZWVuQ2hhcnM7CisgICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRpdHlOYW1lOworICAgIAorICAg
IHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgeworICAgICAgICBVQ2hhciBjYyA9ICpzb3VyY2U7
CisgICAgICAgIHNlZW5DaGFycy5hcHBlbmQoY2MpOworICAgICAgICBzd2l0Y2ggKGVudGl0eVN0
YXRlKSB7CisgICAgICAgIGNhc2UgSW5pdGlhbDoKKyAgICAgICAgICAgIGlmIChpc1doaXRlc3Bh
Y2UoY2MpIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnJicpCisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIycpIAorICAgICAgICAgICAgICAgIGVu
dGl0eVN0YXRlID0gTnVtYmVyVHlwZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKChjYyA+PSAnYScg
JiYgY2MgPD0gJ3onKSB8fCAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykpIHsKKyAgICAgICAgICAg
ICAgICBlbnRpdHlOYW1lLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAgZW50aXR5U3RhdGUg
PSBOYW1lZDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTnVtYmVyVHlwZToKKyAgICAgICAgICAg
IGlmIChjYyA9PSAneCcgfHwgY2MgPT0gJ1gnKQorICAgICAgICAgICAgICAgIGVudGl0eVN0YXRl
ID0gTWF5YmVIZXg7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnMCcgJiYgY2MgPD0gJzkn
KSB7CisgICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBEZWNpbWFsOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGNjIC0gJzAnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzb3VyY2UucHVzaCgnIycpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWF5YmVIZXg6CisgICAg
ICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBjYyAtICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAn
ZicpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTAgKyBjYyAtICdhJzsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnRicpCisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gMTAgKyBjYyAtICdBJzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNv
dXJjZS5wdXNoKCcjJyk7CisgICAgICAgICAgICAgICAgc291cmNlLnB1c2goc2VlbkNoYXJzWzFd
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVudGl0eVN0YXRlID0gSGV4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSGV4
OgorICAgICAgICAgICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gcmVzdWx0ICogMTYgKyBjYyAtICcwJzsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGNjID49ICdhJyAmJiBjYyA8PSAnZicpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0
ICogMTYgKyAxMCArIGNjIC0gJ2EnOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdGJykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIDEwICsg
Y2MgLSAnQSc7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnOycpIHsKKyAgICAgICAgICAg
ICAgICBzb3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0
eUZvcihyZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgICAgIHJldHVy
biBsZWdhbEVudGl0eUZvcihyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRGVjaW1hbDoKKyAgICAgICAgICAgIGlmIChjYyA+PSAnMCcgJiYgY2MgPD0gJzknKQorICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgY2MgLSAnMCc7CisgICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZSgp
OworICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQpOworICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3Vs
dCk7CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBOYW1l
ZDoKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGF0dHJpYnV0ZSBvbmx5IHZlcnNpb24sIGdl
bmVyaWMgdmVyc2lvbiBtYXRjaGVzIHNvbWV3aGF0IGRpZmZlcmVudGx5CisgICAgICAgICAgICB3
aGlsZSAoZW50aXR5TmFtZS5zaXplKCkgPD0gOCkgeworICAgICAgICAgICAgICAgIGlmIChjYyA9
PSAnOycpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5k
RW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRpdHlOYW1lLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChlbnRpdHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5h
ZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5LT5jb2RlOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIShjYyA+PSAnYScgJiYgY2MgPD0gJ3on
KSAmJiAhKGNjID49ICdBJyAmJiBjYyA8PSAnWicpICYmICEoY2MgPj0gJzAnICYmIGNjIDw9ICc5
JykpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50
aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRpdHlOYW1lLnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChlbnRpdHkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5
LT5jb2RlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZW50aXR5TmFtZS5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgIHNv
dXJjZS5hZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0T2ZDaGFyYWN0ZXJzOworICAgICAgICAgICAgICAg
IGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgICAgICBzZWVuQ2hhcnMuYXBwZW5kKGNjKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZWVuQ2hhcnMuc2l6ZSgpID09IDIpCisgICAg
ICAgICAgICAgICAgc291cmNlLnB1c2goc2VlbkNoYXJzWzBdKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHNlZW5DaGFycy5zaXplKCkgPT0gMykgeworICAgICAgICAgICAgICAgIHNvdXJjZS5wdXNo
KHNlZW5DaGFyc1swXSk7CisgICAgICAgICAgICAgICAgc291cmNlLnB1c2goc2VlbkNoYXJzWzFd
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNvdXJjZS5wcmVwZW5kKFNl
Z21lbnRlZFN0cmluZyhTdHJpbmcoc2VlbkNoYXJzLmRhdGEoKSwgc2VlbkNoYXJzLnNpemUoKSAt
IDEpKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzb3VyY2Uu
YWR2YW5jZSgpOworICAgIH0KK291dE9mQ2hhcmFjdGVyczoKKyAgICBub3RFbm91Z2hDaGFyYWN0
ZXJzID0gdHJ1ZTsKKyAgICBzb3VyY2UucHJlcGVuZChTZWdtZW50ZWRTdHJpbmcoU3RyaW5nKHNl
ZW5DaGFycy5kYXRhKCksIHNlZW5DaGFycy5zaXplKCkpKSk7CisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgUHJlbG9hZFNjYW5uZXI6OnRva2VuaXplKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291
cmNlKQoreworICAgIEFTU0VSVChtX2luUHJvZ3Jlc3MpOworICAgIAorICAgIG1fc291cmNlLmFw
cGVuZChzb3VyY2UpOworCisgICAgLy8gVGhpcyBpcyBhIHNpbXBsaWZpZWQgSFRNTDUgVG9rZW5p
emVyCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jdG9rZW5pc2F0aW9uMAorICAgIHdoaWxlICghbV9zb3VyY2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIFVDaGFyIGNjID0gKm1fc291cmNlOworICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsK
KyAgICAgICAgY2FzZSBEYXRhOgorICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAg
ICAgICByZW1lbWJlckNoYXJhY3RlcihjYyk7CisgICAgICAgICAgICAgICAgaWYgKGNjID09ICcm
JykgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9jb250ZW50TW9kZWwgPT0gUENEQVRBIHx8
IG1fY29udGVudE1vZGVsID09IFJDREFUQSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEVudGl0eURhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy0nKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgobV9jb250ZW50TW9kZWwgPT0gUkNEQVRBIHx8IG1f
Y29udGVudE1vZGVsID09IENEQVRBKSAmJiAhbV9lc2NhcGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChsYXN0Q2hhcmFjdGVyc01hdGNoKCI8IS0tIiwgNCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9lc2NhcGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fY29udGVudE1vZGVsID09IFBDREFUQSB8fCAoKG1fY29udGVudE1vZGVsID09IFJD
REFUQSB8fCBtX2NvbnRlbnRNb2RlbCA9PSBDREFUQSkgJiYgIW1fZXNjYXBlKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFRhZ09wZW47CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgICBpZiAoKG1fY29udGVudE1v
ZGVsID09IFJDREFUQSB8fCBtX2NvbnRlbnRNb2RlbCA9PSBDREFUQSkgJiYgbV9lc2NhcGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdENoYXJhY3RlcnNNYXRjaCgiLS0+Iiwg
MykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXNjYXBlID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRW50aXR5RGF0YToKKyAgICAgICAg
ICAgIC8vIHNob3VsZCB0cnkgdG8gY29uc3VtZSB0aGUgZW50aXR5IGJ1dCB3ZSBvbmx5IGNhcmUg
YWJvdXQgZW50aXRpZXMgaW4gYXR0cmlidXRlcworICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUYWdPcGVuOgorICAgICAgICAgICAg
aWYgKG1fY29udGVudE1vZGVsID09IFJDREFUQSB8fCBtX2NvbnRlbnRNb2RlbCA9PSBDREFUQSkg
eworICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBDbG9zZVRhZ09wZW47CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1fY29udGVudE1vZGVs
ID09IFBDREFUQSkgeworICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnIScpCisgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBNYXJrdXBEZWNsYXJhdGlvbk9wZW47CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ2xv
c2VUYWdPcGVuOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAn
WicpIHsKKyAgICAgICAgICAgICAgICAgICAgbV90YWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fY2hhcnNldCA9IFN0cmluZygpOworICAgICAgICAgICAgICAgICAgICBtX3Rh
Z05hbWUuYXBwZW5kKGNjICsgMHgyMCk7CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VUYWcg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFRhZ05hbWU7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fdGFnTmFtZS5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICBtX2NoYXJz
ZXQgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgbV90YWdOYW1lLmFwcGVuZChjYyk7
CisgICAgICAgICAgICAgICAgICAgIG1fY2xvc2VUYWcgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IFRhZ05hbWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPicpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IEJvZ3VzQ29tbWVudDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ2xvc2VUYWdPcGVuOgorICAgICAgICAgICAgaWYgKG1fY29udGVudE1vZGVsID09
IFJDREFUQSB8fCBtX2NvbnRlbnRNb2RlbCA9PSBDREFUQSkgeworICAgICAgICAgICAgICAgIGlm
ICghbV9sYXN0U3RhcnRUYWcubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERhdGE7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAobV9zb3VyY2UubGVuZ3RoKCkgPCBtX2xhc3RTdGFydFRh
Zy5sZW5ndGgoKSArIDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBWZWN0b3I8VUNoYXI+IHRtcFN0cmluZzsKKyAgICAgICAgICAgICAgICBVQ2hhciB0bXBD
aGFyID0gMDsKKyAgICAgICAgICAgICAgICBib29sIG1hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbV9sYXN0U3RhcnRUYWcubGVuZ3RoKCkgKyAx
OyBuKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG1wQ2hhciA9IFVuaWNvZGU6OnRvTG93ZXIo
Km1fc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPCBtX2xhc3RTdGFydFRhZy5s
ZW5ndGgoKSAmJiB0bXBDaGFyICE9IG1fbGFzdFN0YXJ0VGFnW25dKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdG1wU3RyaW5nLmFw
cGVuZCh0bXBDaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5wcmVwZW5kKFNlZ21l
bnRlZFN0cmluZyhTdHJpbmcodG1wU3RyaW5nLmRhdGEoKSwgdG1wU3RyaW5nLnNpemUoKSkpKTsK
KyAgICAgICAgICAgICAgICBpZiAoIW1hdGNoIHx8ICghaXNXaGl0ZXNwYWNlKHRtcENoYXIpICYm
IHRtcENoYXIgIT0gJz4nICYmIHRtcENoYXIgIT0gJy8nKSkgeworICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBj
YyA8PSAnWicpIHsKKyAgICAgICAgICAgICAgICBtX3RhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBtX2NoYXJzZXQgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBtX3RhZ05hbWUu
YXBwZW5kKGNjICsgMHgyMCk7CisgICAgICAgICAgICAgICAgbV9jbG9zZVRhZyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFRhZ05hbWU7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgICAgICBtX3RhZ05hbWUuY2xl
YXIoKTsKKyAgICAgICAgICAgICAgICBtX2NoYXJzZXQgPSBTdHJpbmcoKTsKKyAgICAgICAgICAg
ICAgICBtX3RhZ05hbWUuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX2Nsb3NlVGFnID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNDb21tZW50
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGFnTmFtZToKKyAgICAgICAgICAg
IHdoaWxlICgxKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUYWcoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGNjID49ICdBJyAmJiBjYyA8PSAnWicpCisgICAgICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5h
cHBlbmQoY2MgKyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG1fdGFnTmFtZS5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFu
Y2UoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCZWZvcmVBdHRyaWJ1
dGVOYW1lOgorICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICAg
ICAgOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAg
ZW1pdFRhZygpOworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICAgICAgbV9h
dHRyaWJ1dGVOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5j
bGVhcigpOworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5hcHBlbmQoY2MgKyAweDIw
KTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlTmFtZTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5jbGVhcigpOworICAgICAgICAg
ICAgICAgIG1fYXR0cmlidXRlVmFsdWUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBtX2F0dHJp
YnV0ZU5hbWUuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRl
TmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0
dHJpYnV0ZU5hbWU6CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGlm
IChpc1doaXRlc3BhY2UoY2MpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRl
ckF0dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJz0nKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicp
IHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRhZygpOworICAgICAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfSAKKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNjID49ICdBJyAm
JiBjYyA8PSAnWicpCisgICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5hcHBlbmQo
Y2MgKyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1f
YXR0cmlidXRlTmFtZS5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFu
Y2UoKTsKKyAgICAgICAgICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBZnRlckF0dHJpYnV0
ZU5hbWU6CisgICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgICAg
ICA7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZVZhbHVlOyAKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09
ICc+JykgeworICAgICAgICAgICAgICAgIGVtaXRUYWcoKTsKKyAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRGF0YTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykgeworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5jbGVhcigpOworICAgICAgICAg
ICAgICAgIG1fYXR0cmlidXRlVmFsdWUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBtX2F0dHJp
YnV0ZU5hbWUuYXBwZW5kKGNjICsgMHgyMCk7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0
dHJpYnV0ZU5hbWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5jbGVhcigpOworICAgICAgICAgICAg
ICAgIG1fYXR0cmlidXRlVmFsdWUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0
ZU5hbWUuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlTmFt
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJlZm9y
ZUF0dHJpYnV0ZVZhbHVlOgorICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykpCisgICAg
ICAgICAgICAgICAgOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQorICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZDsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGNjID09ICcmJykgeworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1
dGVWYWx1ZVVucXVvdGVkOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnXCcnKQorICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1
dGVWYWx1ZVNpbmdsZVF1b3RlZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykgewor
ICAgICAgICAgICAgICAgIGVtaXRUYWcoKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0
YTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1
ZS5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZVVu
cXVvdGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQ6CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAg
ICAgICAgICAgICAgIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
c0F0dHJpYnV0ZSgpOworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmli
dXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZUJlZm9yZUVudGl0eUluQXR0cmlidXRlVmFsdWUgPSBtX3N0YXRlOworICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRW50aXR5SW5BdHRyaWJ1dGVWYWx1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBtX2F0dHJp
YnV0ZVZhbHVlLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgp
OworICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF0dHJpYnV0ZVZhbHVlU2lu
Z2xlUXVvdGVkOgorICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICBpZiAo
Y2MgPT0gJ1wnJykgeworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGNjID09ICcmJykgeworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlQmVmb3JlRW50aXR5
SW5BdHRyaWJ1dGVWYWx1ZSA9IG1fc3RhdGU7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUuYXBwZW5k
KGNjKTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7CisgICAgICAgICAgICAg
ICAgaWYgKG1fc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIGNjID0gKm1fc291cmNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXR0cmlidXRlVmFsdWVVbnF1b3RlZDoKKyAgICAgICAg
ICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykpIHsK
KyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZSgpOworICAgICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnJicp
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZUJlZm9yZUVudGl0eUluQXR0cmlidXRlVmFs
dWUgPSBtX3N0YXRlOworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRW50aXR5SW5BdHRy
aWJ1dGVWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc0F0dHJpYnV0ZSgpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGFnKCk7CisgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5h
cHBlbmQoY2MpOworICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgY2MgPSAqbV9zb3VyY2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOiAKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBm
YWxzZTsgCisgICAgICAgICAgICAgICAgdW5zaWduZWQgZW50aXR5ID0gY29uc3VtZUVudGl0eSht
X3NvdXJjZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgaWYgKG5vdEVu
b3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBpZiAoZW50aXR5ID4gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXR0cmli
dXRlVmFsdWUuYXBwZW5kKFUxNl9MRUFEKGVudGl0eSkpOworICAgICAgICAgICAgICAgICAgICBt
X2F0dHJpYnV0ZVZhbHVlLmFwcGVuZChVMTZfVFJBSUwoZW50aXR5KSk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChlbnRpdHkpCisgICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFs
dWUuYXBwZW5kKGVudGl0eSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBtX2F0dHJpYnV0ZVZhbHVlLmFwcGVuZCgnJicpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9zdGF0ZSA9IG1fc3RhdGVCZWZvcmVFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgQm9ndXNDb21tZW50OgorICAgICAgICAg
ICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwor
ICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1hcmt1cERlY2xhcmF0aW9uT3Bl
bjogeworICAgICAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgICAgIGlmICht
X3NvdXJjZS5sZW5ndGgoKSA8IDIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgY2MgPSAqbV9z
b3VyY2U7CisgICAgICAgICAgICAgICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IENvbW1lbnRTdGFydDsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzQ29tbWVudDsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSWYgd2UgY2Fy
ZWQgYWJvdXQgdGhlIERPQ1RZUEUgd2Ugd291bGQgdGVzdCB0byBlbnRlciB0aG9zZSBzdGF0ZXMg
aGVyZQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gQm9n
dXNDb21tZW50OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDb21tZW50U3RhcnQ6Cisg
ICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21t
ZW50U3RhcnREYXNoOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBEYXRhOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBDb21tZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29t
bWVudFN0YXJ0RGFzaDoKKyAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IENvbW1lbnRFbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDb21tZW50OgorICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50
RW5kRGFzaDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgY2MgPSAqbV9zb3VyY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDb21tZW50RW5kRGFzaDoKKyAgICAgICAgICAgIGlmIChjYyA9PSAn
LScpCisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRFbmQ7CisgICAgICAgICAgICBl
bHNlIAorICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ29tbWVudEVuZDoKKyAgICAgICAgICAgIGlmIChjYyA9PSAnPicp
CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7CisgICAgICAgICAgICBlbHNlIGlmIChj
YyA9PSAnLScpCisgICAgICAgICAgICAgICAgOworICAgICAgICAgICAgZWxzZSAKKyAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gQ29tbWVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIG1fc291cmNlLmFkdmFuY2UoKTsKKyAgICB9Cit9CisgICAgCit2b2lkIFByZWxv
YWRTY2FubmVyOjpwcm9jZXNzQXR0cmlidXRlKCkKK3sKKyAgICBBdG9taWNTdHJpbmcgdGFnID0g
QXRvbWljU3RyaW5nKG1fdGFnTmFtZS5kYXRhKCksIG1fdGFnTmFtZS5zaXplKCkpOworICAgIEF0
b21pY1N0cmluZyBhdHRyaWJ1dGUgPSBBdG9taWNTdHJpbmcobV9hdHRyaWJ1dGVOYW1lLmRhdGEo
KSwgbV9hdHRyaWJ1dGVOYW1lLnNpemUoKSk7CisgICAgCisgICAgU3RyaW5nIHZhbHVlKG1fYXR0
cmlidXRlVmFsdWUuZGF0YSgpLCBtX2F0dHJpYnV0ZVZhbHVlLnNpemUoKSk7CisgICAgaWYgKHRh
ZyA9PSBzY3JpcHRUYWcgfHwgdGFnID09IGltZ1RhZykgeworICAgICAgICBpZiAoYXR0cmlidXRl
ID09IHNyY0F0dHIgJiYgbV91cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV91cmxU
b0xvYWQgPSBkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpOworICAgICAgICBlbHNlIGlmIChhdHRy
aWJ1dGUgPT0gY2hhcnNldEF0dHIpCisgICAgICAgICAgICBtX2NoYXJzZXQgPSB2YWx1ZTsKKyAg
ICB9IGVsc2UgaWYgKHRhZyA9PSBsaW5rVGFnKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGUgPT0g
aHJlZkF0dHIgJiYgbV91cmxUb0xvYWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV91cmxUb0xv
YWQgPSBkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpOworICAgICAgICBlbHNlIGlmIChhdHRyaWJ1
dGUgPT0gcmVsQXR0cikgeworICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50OjpSZWxBdHRyaWJ1
dGUgcmVsOworICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50Ojp0b2tlbml6ZVJlbEF0dHJpYnV0
ZSh2YWx1ZSwgcmVsKTsKKyAgICAgICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9IHJlbC5tX2lz
U3R5bGVTaGVldCAmJiAhcmVsLm1faXNBbHRlcm5hdGUgJiYgIXJlbC5tX2lzSWNvbiAmJiAhcmVs
Lm1faXNETlNQcmVmZXRjaDsKKyAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUgPT0gY2hhcnNl
dEF0dHIpCisgICAgICAgICAgICBtX2NoYXJzZXQgPSB2YWx1ZTsKKyAgICB9Cit9CisgICAgCitp
bmxpbmUgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjKQoreworICAg
IGlmIChtX2NvbnRlbnRNb2RlbCA9PSBDREFUQSAmJiBtX2xhc3RTdGFydFRhZyA9PSBzdHlsZVRh
ZykgCisgICAgICAgIHRva2VuaXplQ1NTKGMpOworfQorICAgIAoraW5saW5lIHZvaWQgUHJlbG9h
ZFNjYW5uZXI6OnRva2VuaXplQ1NTKFVDaGFyIGMpCit7ICAgIAorICAgIC8vIFdlIGFyZSBqdXN0
IGludGVyZXN0ZWQgaW4gQGltcG9ydCBydWxlcywgbm8gbmVlZCBmb3IgcmVhbCB0b2tlbml6YXRp
b24gaGVyZQorICAgIC8vIFNlYXJjaGluZyBmb3Igb3RoZXIgdHlwZXMgb2YgcmVzb3VyY2VzIGlz
IHByb2JhYmx5IGxvdyBwYXlvZmYKKyAgICBzd2l0Y2ggKG1fY3NzU3RhdGUpIHsKKyAgICBjYXNl
IENTU0luaXRpYWw6CisgICAgICAgIGlmIChjID09ICdAJykKKyAgICAgICAgICAgIG1fY3NzU3Rh
dGUgPSBDU1NSdWxlU3RhcnQ7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJy8nKQorICAgICAgICAg
ICAgbV9jc3NTdGF0ZSA9IENTU01heWJlQ29tbWVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NNYXliZUNvbW1lbnQ6CisgICAgICAgIGlmIChjID09ICcqJykKKyAgICAgICAgICAgIG1f
Y3NzU3RhdGUgPSBDU1NDb21tZW50OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Nzc1N0
YXRlID0gQ1NTSW5pdGlhbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NDb21tZW50Ogor
ICAgICAgICBpZiAoYyA9PSAnKicpCisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTTWF5YmVD
b21tZW50RW5kOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU01heWJlQ29tbWVudEVuZDoK
KyAgICAgICAgaWYgKGMgPT0gJy8nKQorICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRp
YWw7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJyonKQorICAgICAgICAgICAgOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTQ29tbWVudDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NSdWxlU3RhcnQ6CisgICAgICAgIGlmICgoYyA+PSAnQScgJiYgYyA8PSAn
WicpIHx8IChjID49ICdhJyAmJiBjIDw9ICd6JykpIHsKKyAgICAgICAgICAgIG1fY3NzUnVsZS5j
bGVhcigpOworICAgICAgICAgICAgbV9jc3NSdWxlVmFsdWUuY2xlYXIoKTsKKyAgICAgICAgICAg
IG1fY3NzUnVsZS5hcHBlbmQoYyk7CisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTUnVsZTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NSdWxlOgorICAgICAgICBpZiAoaXNXaGl0ZXNwYWNl
KGMpKQorICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0FmdGVyUnVsZTsKKyAgICAgICAgZWxz
ZSBpZiAoYyA9PSAnOycpCisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9jc3NSdWxlLmFwcGVuZChjKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NBZnRlclJ1bGU6CisgICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykp
CisgICAgICAgICAgICA7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJzsnKQorICAgICAgICAgICAg
bV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9j
c3NTdGF0ZSA9IENTU1J1bGVWYWx1ZTsKKyAgICAgICAgICAgIG1fY3NzUnVsZVZhbHVlLmFwcGVu
ZChjKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1J1bGVWYWx1ZToK
KyAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjKSkKKyAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBD
U1NBZnRlclJ1bGVWYWx1ZTsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnOycpIHsKKyAgICAgICAg
ICAgIGVtaXRDU1NSdWxlKCk7CisgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsK
KyAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgbV9jc3NSdWxlVmFsdWUuYXBwZW5kKGMpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU0FmdGVyUnVsZVZhbHVlOgorICAgICAgICBpZiAo
aXNXaGl0ZXNwYWNlKGMpKQorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChjID09ICc7
JykgeworICAgICAgICAgICAgZW1pdENTU1J1bGUoKTsKKyAgICAgICAgICAgIG1fY3NzU3RhdGUg
PSBDU1NJbml0aWFsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUgbWVk
aWEgcnVsZXMKKyAgICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICB9Cit9CisgICAgCit2b2lkIFByZWxvYWRTY2FubmVyOjpl
bWl0VGFnKCkKK3sKKyAgICBpZiAobV9jbG9zZVRhZykgeworICAgICAgICBtX2NvbnRlbnRNb2Rl
bCA9IFBDREFUQTsKKyAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7CisgICAgICAgIGNs
ZWFyTGFzdENoYXJhY3RlcnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBB
dG9taWNTdHJpbmcgdGFnKG1fdGFnTmFtZS5kYXRhKCksIG1fdGFnTmFtZS5zaXplKCkpOworICAg
IG1fbGFzdFN0YXJ0VGFnID0gdGFnOworICAgIAorICAgIGlmICh0YWcgPT0gdGV4dGFyZWFUYWcg
fHwgdGFnID09IHRpdGxlVGFnKQorICAgICAgICBtX2NvbnRlbnRNb2RlbCA9IFJDREFUQTsKKyAg
ICBlbHNlIGlmICh0YWcgPT0gc3R5bGVUYWcgfHwgdGFnID09IHhtcFRhZyB8fCB0YWcgPT0gc2Ny
aXB0VGFnIHx8IHRhZyA9PSBpZnJhbWVUYWcgfHwgdGFnID09IG5vZW1iZWRUYWcgfHwgdGFnID09
IG5vZnJhbWVzVGFnKQorICAgICAgICBtX2NvbnRlbnRNb2RlbCA9IENEQVRBOworICAgIGVsc2Ug
aWYgKHRhZyA9PSBub3NjcmlwdFRhZykKKyAgICAgICAgLy8gd2Ugd291bGRuJ3QgYmUgaGVyZSBp
ZiBzY3JpcHRzIHdlcmUgZGlzYWJsZWQKKyAgICAgICAgbV9jb250ZW50TW9kZWwgPSBDREFUQTsK
KyAgICBlbHNlIGlmICh0YWcgPT0gcGxhaW50ZXh0VGFnKQorICAgICAgICBtX2NvbnRlbnRNb2Rl
bCA9IFBMQUlOVEVYVDsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGVudE1vZGVsID0gUENEQVRB
OworICAgIAorICAgIGlmICh0YWcgPT0gYm9keVRhZykKKyAgICAgICAgbV9ib2R5U2VlbiA9IHRy
dWU7CisgICAgCisgICAgaWYgKG1fdXJsVG9Mb2FkLmlzRW1wdHkoKSkgeworICAgICAgICBtX2xp
bmtJc1N0eWxlU2hlZXQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBpZiAodGFnID09IHNjcmlwdFRhZykKKyAgICAgICAgbV9kb2N1bWVudC0+ZG9jTG9hZGVyKCkt
PnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCwgbV91cmxUb0xvYWQsIG1fY2hhcnNldCwg
c2Nhbm5pbmdCb2R5KCkpOworICAgIGVsc2UgaWYgKHRhZyA9PSBpbWdUYWcpIAorICAgICAgICBt
X2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZSwgbV91cmxUb0xvYWQsIFN0cmluZygpLCBzY2FubmluZ0JvZHkoKSk7CisgICAgZWxzZSBp
ZiAodGFnID09IGxpbmtUYWcgJiYgbV9saW5rSXNTdHlsZVNoZWV0KSAKKyAgICAgICAgbV9kb2N1
bWVudC0+ZG9jTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQs
IG1fdXJsVG9Mb2FkLCBtX2NoYXJzZXQsIHNjYW5uaW5nQm9keSgpKTsKKworICAgIG1fdXJsVG9M
b2FkID0gU3RyaW5nKCk7CisgICAgbV9jaGFyc2V0ID0gU3RyaW5nKCk7CisgICAgbV9saW5rSXNT
dHlsZVNoZWV0ID0gZmFsc2U7Cit9CisgICAgCit2b2lkIFByZWxvYWRTY2FubmVyOjplbWl0Q1NT
UnVsZSgpCit7CisgICAgU3RyaW5nIHJ1bGUobV9jc3NSdWxlLmRhdGEoKSwgbV9jc3NSdWxlLnNp
emUoKSk7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJ1bGUsICJpbXBvcnQiKSAmJiAhbV9j
c3NSdWxlVmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZShtX2Nzc1J1bGVW
YWx1ZS5kYXRhKCksIG1fY3NzUnVsZVZhbHVlLnNpemUoKSk7CisgICAgICAgIFN0cmluZyB1cmwg
PSBkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpOworICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkp
CisgICAgICAgICAgICBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cHJlbG9hZChDYWNoZWRSZXNv
dXJjZTo6Q1NTU3R5bGVTaGVldCwgdXJsLCBTdHJpbmcoKSwgc2Nhbm5pbmdCb2R5KCkpOworICAg
IH0KKyAgICBtX2Nzc1J1bGUuY2xlYXIoKTsKKyAgICBtX2Nzc1J1bGVWYWx1ZS5jbGVhcigpOwor
fQorICAgICAgICAgICAgICAgIAorfQpJbmRleDogV2ViQ29yZS9odG1sL0xlZ2FjeVByZWxvYWRT
Y2FubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvTGVnYWN5UHJlbG9hZFNjYW5u
ZXIuY3BwCShyZXZpc2lvbiA2MTY3MikKKysrIFdlYkNvcmUvaHRtbC9MZWdhY3lQcmVsb2FkU2Nh
bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKKyNpbmNsdWRlICJMZWdh
Y3lQcmVsb2FkU2Nhbm5lci5oIgogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIAotUHJlbG9hZFNj
YW5uZXI6OlByZWxvYWRTY2FubmVyKERvY3VtZW50KiBkb2MpCitMZWdhY3lQcmVsb2FkU2Nhbm5l
cjo6TGVnYWN5UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRvYykKICAgICA6IG1faW5Qcm9ncmVz
cyhmYWxzZSkKICAgICAsIG1fdGltZVVzZWQoMCkKICAgICAsIG1fYm9keVNlZW4oZmFsc2UpCkBA
IC03Niw3ICs3Niw3IEBAIFByZWxvYWRTY2FubmVyOjpQcmVsb2FkU2Nhbm5lcihEb2N1bWVudCoK
ICNlbmRpZgogfQogICAgIAotUHJlbG9hZFNjYW5uZXI6On5QcmVsb2FkU2Nhbm5lcigpCitMZWdh
Y3lQcmVsb2FkU2Nhbm5lcjo6fkxlZ2FjeVByZWxvYWRTY2FubmVyKCkKIHsKICNpZiBQUkVMT0FE
X0RFQlVHCiAgICAgcHJpbnRmKCJERUxFVElORyBQUkVMT0FEIFNDQU5ORVIgRk9SICVzXG4iLCBt
X2RvY3VtZW50LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwpAQCAtODQsMjAgKzg0
LDIwIEBAIFByZWxvYWRTY2FubmVyOjp+UHJlbG9hZFNjYW5uZXIoKQogI2VuZGlmCiB9CiAgICAg
Ci12b2lkIFByZWxvYWRTY2FubmVyOjpiZWdpbigpIAordm9pZCBMZWdhY3lQcmVsb2FkU2Nhbm5l
cjo6YmVnaW4oKSAKIHsgCiAgICAgQVNTRVJUKCFtX2luUHJvZ3Jlc3MpOyAKICAgICByZXNldCgp
OyAKICAgICBtX2luUHJvZ3Jlc3MgPSB0cnVlOyAKIH0KICAgICAKLXZvaWQgUHJlbG9hZFNjYW5u
ZXI6OmVuZCgpIAordm9pZCBMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6ZW5kKCkgCiB7IAogICAgIEFT
U0VSVChtX2luUHJvZ3Jlc3MpOyAKICAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsgCiB9CiAKLXZv
aWQgUHJlbG9hZFNjYW5uZXI6OnJlc2V0KCkKK3ZvaWQgTGVnYWN5UHJlbG9hZFNjYW5uZXI6OnJl
c2V0KCkKIHsKICAgICBtX3NvdXJjZS5jbGVhcigpOwogICAgIApAQCAtMTIzLDEyICsxMjMsMTIg
QEAgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6cmVzZXQoKQogICAgIG1fY3NzUnVsZVZhbHVlLmNsZWFy
KCk7CiB9CiAgICAgCi1ib29sIFByZWxvYWRTY2FubmVyOjpzY2FubmluZ0JvZHkoKSBjb25zdAor
Ym9vbCBMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6c2Nhbm5pbmdCb2R5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fYm9keVNlZW47CiB9CiAgICAgCi12b2lkIFBy
ZWxvYWRTY2FubmVyOjp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK3ZvaWQg
TGVnYWN5UHJlbG9hZFNjYW5uZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNl
KQogewogI2lmIFBSRUxPQURfREVCVUcKICAgICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVudFRp
bWUoKTsKQEAgLTE0NCwxOCArMTQ0LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3Bh
Y2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xy
JyB8fCBjID09ICdcdCc7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6Y2xl
YXJMYXN0Q2hhcmFjdGVycygpCitpbmxpbmUgdm9pZCBMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6Y2xl
YXJMYXN0Q2hhcmFjdGVycygpCiB7CiAgICAgbWVtc2V0KG1fbGFzdENoYXJhY3RlcnMsIDAsIGxh
c3RDaGFyYWN0ZXJzQnVmZmVyU2l6ZSAqIHNpemVvZihVQ2hhcikpOwogfQogICAgIAotaW5saW5l
IHZvaWQgUHJlbG9hZFNjYW5uZXI6OnJlbWVtYmVyQ2hhcmFjdGVyKFVDaGFyIGMpCitpbmxpbmUg
dm9pZCBMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6cmVtZW1iZXJDaGFyYWN0ZXIoVUNoYXIgYykKIHsK
ICAgICBtX2xhc3RDaGFyYWN0ZXJJbmRleCA9IChtX2xhc3RDaGFyYWN0ZXJJbmRleCArIDEpICUg
bGFzdENoYXJhY3RlcnNCdWZmZXJTaXplOwogICAgIG1fbGFzdENoYXJhY3RlcnNbbV9sYXN0Q2hh
cmFjdGVySW5kZXhdID0gYzsKIH0KICAgICAKLWlubGluZSBib29sIFByZWxvYWRTY2FubmVyOjps
YXN0Q2hhcmFjdGVyc01hdGNoKGNvbnN0IGNoYXIqIGNoYXJzLCB1bnNpZ25lZCBjb3VudCkgY29u
c3QKK2lubGluZSBib29sIExlZ2FjeVByZWxvYWRTY2FubmVyOjpsYXN0Q2hhcmFjdGVyc01hdGNo
KGNvbnN0IGNoYXIqIGNoYXJzLCB1bnNpZ25lZCBjb3VudCkgY29uc3QKIHsKICAgICB1bnNpZ25l
ZCBwb3MgPSBtX2xhc3RDaGFyYWN0ZXJJbmRleDsKICAgICB3aGlsZSAoY291bnQpIHsKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlZ2FsRW50aXR5Rm9yKHVuCiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogICAgIAotdW5zaWduZWQgUHJlbG9hZFNjYW5uZXI6OmNvbnN1
bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3Rl
cnMpCit1bnNpZ25lZCBMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6Y29uc3VtZUVudGl0eShTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycykKIHsKICAgICBlbnVt
IEVudGl0eVN0YXRlIHsKICAgICAgICAgSW5pdGlhbCwKQEAgLTI5NSw3ICsyOTUsNyBAQCBvdXRP
ZkNoYXJhY3RlcnM6CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUHJlbG9hZFNjYW5uZXI6OnRv
a2VuaXplKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBMZWdhY3lQcmVsb2Fk
U2Nhbm5lcjo6dG9rZW5pemUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7CiAgICAg
QVNTRVJUKG1faW5Qcm9ncmVzcyk7CiAgICAgCkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBQcmVs
b2FkU2Nhbm5lcjo6dG9rZW5pemUoY29uc3QgU2VnbQogICAgIH0KIH0KICAgICAKLXZvaWQgUHJl
bG9hZFNjYW5uZXI6OnByb2Nlc3NBdHRyaWJ1dGUoKQordm9pZCBMZWdhY3lQcmVsb2FkU2Nhbm5l
cjo6cHJvY2Vzc0F0dHJpYnV0ZSgpCiB7CiAgICAgQXRvbWljU3RyaW5nIHRhZyA9IEF0b21pY1N0
cmluZyhtX3RhZ05hbWUuZGF0YSgpLCBtX3RhZ05hbWUuc2l6ZSgpKTsKICAgICBBdG9taWNTdHJp
bmcgYXR0cmlidXRlID0gQXRvbWljU3RyaW5nKG1fYXR0cmlidXRlTmFtZS5kYXRhKCksIG1fYXR0
cmlidXRlTmFtZS5zaXplKCkpOwpAQCAtNzExLDEzICs3MTEsMTMgQEAgdm9pZCBQcmVsb2FkU2Nh
bm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSgpCiAgICAgfQogfQogICAgIAotaW5saW5lIHZvaWQgUHJl
bG9hZFNjYW5uZXI6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYykKK2lubGluZSB2b2lkIExlZ2FjeVBy
ZWxvYWRTY2FubmVyOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMpCiB7CiAgICAgaWYgKG1fY29udGVu
dE1vZGVsID09IENEQVRBICYmIG1fbGFzdFN0YXJ0VGFnID09IHN0eWxlVGFnKSAKICAgICAgICAg
dG9rZW5pemVDU1MoYyk7CiB9CiAgICAgCi1pbmxpbmUgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6dG9r
ZW5pemVDU1MoVUNoYXIgYykKK2lubGluZSB2b2lkIExlZ2FjeVByZWxvYWRTY2FubmVyOjp0b2tl
bml6ZUNTUyhVQ2hhciBjKQogeyAgICAKICAgICAvLyBXZSBhcmUganVzdCBpbnRlcmVzdGVkIGlu
IEBpbXBvcnQgcnVsZXMsIG5vIG5lZWQgZm9yIHJlYWwgdG9rZW5pemF0aW9uIGhlcmUKICAgICAv
LyBTZWFyY2hpbmcgZm9yIG90aGVyIHR5cGVzIG9mIHJlc291cmNlcyBpcyBwcm9iYWJseSBsb3cg
cGF5b2ZmCkBAIC03OTYsNyArNzk2LDcgQEAgaW5saW5lIHZvaWQgUHJlbG9hZFNjYW5uZXI6OnRv
a2VuaXplQ1NTKAogICAgIH0KIH0KICAgICAKLXZvaWQgUHJlbG9hZFNjYW5uZXI6OmVtaXRUYWco
KQordm9pZCBMZWdhY3lQcmVsb2FkU2Nhbm5lcjo6ZW1pdFRhZygpCiB7CiAgICAgaWYgKG1fY2xv
c2VUYWcpIHsKICAgICAgICAgbV9jb250ZW50TW9kZWwgPSBQQ0RBVEE7CkBAIC04NDAsNyArODQw
LDcgQEAgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6ZW1pdFRhZygpCiAgICAgbV9saW5rSXNTdHlsZVNo
ZWV0ID0gZmFsc2U7CiB9CiAgICAgCi12b2lkIFByZWxvYWRTY2FubmVyOjplbWl0Q1NTUnVsZSgp
Cit2b2lkIExlZ2FjeVByZWxvYWRTY2FubmVyOjplbWl0Q1NTUnVsZSgpCiB7CiAgICAgU3RyaW5n
IHJ1bGUobV9jc3NSdWxlLmRhdGEoKSwgbV9jc3NSdWxlLnNpemUoKSk7CiAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJ1bGUsICJpbXBvcnQiKSAmJiAhbV9jc3NSdWxlVmFsdWUuaXNFbXB0eSgp
KSB7CkluZGV4OiBXZWJDb3JlL2h0bWwvTGVnYWN5UHJlbG9hZFNjYW5uZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvTGVnYWN5UHJlbG9hZFNjYW5uZXIuaAkocmV2aXNpb24gNjE2NzIp
CShmcm9tIFdlYkNvcmUvaHRtbC9QcmVsb2FkU2Nhbm5lci5oOjYxNjcyKQorKysgV2ViQ29yZS9o
dG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBQcmVsb2FkU2Nhbm5lcl9oCisjZGVmaW5lIFByZWxvYWRTY2FubmVyX2gKKworI2luY2x1ZGUg
IkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIENhY2hlZFJlc291cmNlOworICAgIGNsYXNzIENh
Y2hlZFJlc291cmNlQ2xpZW50OworICAgIGNsYXNzIERvY3VtZW50OworICAgIAorICAgIGNsYXNz
IFByZWxvYWRTY2FubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFByZWxvYWRTY2FubmVyKERvY3VtZW50Kik7CisgICAgICAgIH5QcmVsb2FkU2Nhbm5lcigp
OworICAgICAgICB2b2lkIGJlZ2luKCk7CisgICAgICAgIHZvaWQgd3JpdGUoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJik7CisgICAgICAgIHZvaWQgZW5kKCk7CisgICAgICAgIGJvb2wgaW5Qcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Qcm9ncmVzczsgfQorICAgICAgICAKKyAgICAgICAgYm9v
bCBzY2FubmluZ0JvZHkoKSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyB1bnNpZ25l
ZCBjb25zdW1lRW50aXR5KFNlZ21lbnRlZFN0cmluZyYsIGJvb2wmIG5vdEVub3VnaENoYXJhY3Rl
cnMpOworICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHRva2VuaXplKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYpOworICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIAorICAg
ICAgICB2b2lkIGVtaXRUYWcoKTsKKyAgICAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyKTsK
KyAgICAgICAgCisgICAgICAgIHZvaWQgdG9rZW5pemVDU1MoVUNoYXIpOworICAgICAgICB2b2lk
IGVtaXRDU1NSdWxlKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUo
KTsKKworICAgICAgICAKKyAgICAgICAgdm9pZCBjbGVhckxhc3RDaGFyYWN0ZXJzKCk7CisgICAg
ICAgIHZvaWQgcmVtZW1iZXJDaGFyYWN0ZXIoVUNoYXIpOworICAgICAgICBib29sIGxhc3RDaGFy
YWN0ZXJzTWF0Y2goY29uc3QgY2hhciosIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKKyAgICAgICAg
CisgICAgICAgIGJvb2wgbV9pblByb2dyZXNzOworICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9z
b3VyY2U7CisgICAgICAgIAorICAgICAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgICAgIERhdGEs
CisgICAgICAgICAgICBFbnRpdHlEYXRhLAorICAgICAgICAgICAgVGFnT3BlbiwKKyAgICAgICAg
ICAgIENsb3NlVGFnT3BlbiwKKyAgICAgICAgICAgIFRhZ05hbWUsCisgICAgICAgICAgICBCZWZv
cmVBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgQXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAg
IEFmdGVyQXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgIEJlZm9yZUF0dHJpYnV0ZVZhbHVlLAor
ICAgICAgICAgICAgQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQsCisgICAgICAgICAgICBBdHRy
aWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZCwKKyAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlVW5xdW90
ZWQsCisgICAgICAgICAgICBFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlLAorICAgICAgICAgICAgQm9n
dXNDb21tZW50LAorICAgICAgICAgICAgTWFya3VwRGVjbGFyYXRpb25PcGVuLAorICAgICAgICAg
ICAgQ29tbWVudFN0YXJ0LAorICAgICAgICAgICAgQ29tbWVudFN0YXJ0RGFzaCwKKyAgICAgICAg
ICAgIENvbW1lbnQsCisgICAgICAgICAgICBDb21tZW50RW5kRGFzaCwKKyAgICAgICAgICAgIENv
bW1lbnRFbmQKKyAgICAgICAgfTsKKyAgICAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICAgICAgYm9v
bCBtX2VzY2FwZTsKKyAgICAgICAgZW51bSBDb250ZW50TW9kZWwgeworICAgICAgICAgICAgUENE
QVRBLAorICAgICAgICAgICAgUkNEQVRBLAorICAgICAgICAgICAgQ0RBVEEsCisgICAgICAgICAg
ICBQTEFJTlRFWFQKKyAgICAgICAgfTsKKyAgICAgICAgQ29udGVudE1vZGVsIG1fY29udGVudE1v
ZGVsOworICAgICAgICB1bnNpZ25lZCBtX2NvbW1lbnRQb3M7CisgICAgICAgIFN0YXRlIG1fc3Rh
dGVCZWZvcmVFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOworICAgICAgICAKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGxhc3RDaGFyYWN0ZXJzQnVmZmVyU2l6ZSA9IDg7CisgICAgICAgIFVD
aGFyIG1fbGFzdENoYXJhY3RlcnNbbGFzdENoYXJhY3RlcnNCdWZmZXJTaXplXTsKKyAgICAgICAg
dW5zaWduZWQgbV9sYXN0Q2hhcmFjdGVySW5kZXg7CisgICAgICAgIAorICAgICAgICBib29sIG1f
Y2xvc2VUYWc7CisgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fdGFnTmFtZTsKKyAgICAgICAg
VmVjdG9yPFVDaGFyLCAzMj4gbV9hdHRyaWJ1dGVOYW1lOworICAgICAgICBWZWN0b3I8VUNoYXI+
IG1fYXR0cmlidXRlVmFsdWU7CisgICAgICAgIEF0b21pY1N0cmluZyBtX2xhc3RTdGFydFRhZzsK
KyAgICAgICAgCisgICAgICAgIFN0cmluZyBtX3VybFRvTG9hZDsKKyAgICAgICAgU3RyaW5nIG1f
Y2hhcnNldDsKKyAgICAgICAgYm9vbCBtX2xpbmtJc1N0eWxlU2hlZXQ7CisgICAgICAgIAorICAg
ICAgICBlbnVtIENTU1N0YXRlIHsKKyAgICAgICAgICAgIENTU0luaXRpYWwsCisgICAgICAgICAg
ICBDU1NNYXliZUNvbW1lbnQsCisgICAgICAgICAgICBDU1NDb21tZW50LAorICAgICAgICAgICAg
Q1NTTWF5YmVDb21tZW50RW5kLAorICAgICAgICAgICAgQ1NTUnVsZVN0YXJ0LAorICAgICAgICAg
ICAgQ1NTUnVsZSwKKyAgICAgICAgICAgIENTU0FmdGVyUnVsZSwKKyAgICAgICAgICAgIENTU1J1
bGVWYWx1ZSwKKyAgICAgICAgICAgIENTU0FmdGVyUnVsZVZhbHVlCisgICAgICAgIH07CisgICAg
ICAgIENTU1N0YXRlIG1fY3NzU3RhdGU7CisgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+IG1fY3Nz
UnVsZTsKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBtX2Nzc1J1bGVWYWx1ZTsKKyAgICAgICAgCisg
ICAgICAgIGRvdWJsZSBtX3RpbWVVc2VkOworICAgICAgICAKKyAgICAgICAgYm9vbCBtX2JvZHlT
ZWVuOworICAgICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyAgICB9OworCit9CisKKyNlbmRp
ZgpJbmRleDogV2ViQ29yZS9odG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmgJKHJldmlzaW9uIDYxNjcyKQor
KysgV2ViQ29yZS9odG1sL0xlZ2FjeVByZWxvYWRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FjaGVkUmVz
b3VyY2VDbGllbnQ7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgCi0gICAgY2xhc3MgUHJlbG9h
ZFNjYW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIGNsYXNzIExlZ2FjeVByZWxvYWRT
Y2FubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWxv
YWRTY2FubmVyKERvY3VtZW50Kik7Ci0gICAgICAgIH5QcmVsb2FkU2Nhbm5lcigpOworICAgICAg
ICBMZWdhY3lQcmVsb2FkU2Nhbm5lcihEb2N1bWVudCopOworICAgICAgICB+TGVnYWN5UHJlbG9h
ZFNjYW5uZXIoKTsKICAgICAgICAgdm9pZCBiZWdpbigpOwogICAgICAgICB2b2lkIHdyaXRlKGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYpOwogICAgICAgICB2b2lkIGVuZCgpOwpJbmRleDogV2ViQ29y
ZS9odG1sL1ByZWxvYWRTY2FubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvUHJl
bG9hZFNjYW5uZXIuY3BwCShyZXZpc2lvbiA2MTY3MikKKysrIFdlYkNvcmUvaHRtbC9QcmVsb2Fk
U2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNv
bS8KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJQcmVsb2FkU2Nhbm5lci5oIgotCi0jaW5jbHVkZSAiQXRv
bWljU3RyaW5nLmgiCi0jaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgotI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgotI2luY2x1
ZGUgIkNTU0hlbHBlci5oIgotI2luY2x1ZGUgIkRvY0xvYWRlci5oIgotI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNp
bmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+Ci0KLS8vIFVzZSBfX0dOVUNfXyBpbnN0ZWFk
IG9mIFBMQVRGT1JNKEdDQykgdG8gc3RheSBjb25zaXN0ZW50IHdpdGggdGhlIGdwZXJmIGdlbmVy
YXRlZCBjIGZpbGUKLSNpZmRlZiBfX0dOVUNfXwotLy8gVGhlIG1haW4gdG9rZW5pemVyIGluY2x1
ZGVzIHRoaXMgdG9vIHNvIHdlIGFyZSBnZXR0aW5nIHR3byBjb3BpZXMgb2YgdGhlIGRhdGEuIEhv
d2V2ZXIsIHRoaXMgd2F5IHRoZSBjb2RlIGdldHMgaW5saW5lZC4KLSNpbmNsdWRlICJIVE1MRW50
aXR5TmFtZXMuY3BwIgotI2Vsc2UKLS8vIE5vdCBpbmxpbmVkIGZvciBub24tR0NDIGNvbXBpbGVy
cwotc3RydWN0IEVudGl0eSB7Ci0gICAgY29uc3QgY2hhciogbmFtZTsKLSAgICBpbnQgY29kZTsK
LX07Ci1jb25zdCBzdHJ1Y3QgRW50aXR5KiBmaW5kRW50aXR5KHJlZ2lzdGVyIGNvbnN0IGNoYXIq
IHN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbik7Ci0jZW5kaWYKLQotI2RlZmluZSBQUkVM
T0FEX0RFQlVHIDAKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLSAgICAKLVByZWxvYWRTY2FubmVy
OjpQcmVsb2FkU2Nhbm5lcihEb2N1bWVudCogZG9jKQotICAgIDogbV9pblByb2dyZXNzKGZhbHNl
KQotICAgICwgbV90aW1lVXNlZCgwKQotICAgICwgbV9ib2R5U2VlbihmYWxzZSkKLSAgICAsIG1f
ZG9jdW1lbnQoZG9jKQotewotI2lmIFBSRUxPQURfREVCVUcKLSAgICBwcmludGYoIkNSRUFUSU5H
IFBSRUxPQUQgU0NBTk5FUiBGT1IgJXNcbiIsIG1fZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7Ci0jZW5kaWYKLX0KLSAgICAKLVByZWxvYWRTY2FubmVyOjp+UHJlbG9h
ZFNjYW5uZXIoKQotewotI2lmIFBSRUxPQURfREVCVUcKLSAgICBwcmludGYoIkRFTEVUSU5HIFBS
RUxPQUQgU0NBTk5FUiBGT1IgJXNcbiIsIG1fZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSk7Ci0gICAgcHJpbnRmKCJUT1RBTCBUSU1FIFVTRUQgJS40ZnNcbiIsIG1fdGlt
ZVVzZWQpOwotI2VuZGlmCi19Ci0gICAgCi12b2lkIFByZWxvYWRTY2FubmVyOjpiZWdpbigpIAot
eyAKLSAgICBBU1NFUlQoIW1faW5Qcm9ncmVzcyk7IAotICAgIHJlc2V0KCk7IAotICAgIG1faW5Q
cm9ncmVzcyA9IHRydWU7IAotfQotICAgIAotdm9pZCBQcmVsb2FkU2Nhbm5lcjo6ZW5kKCkgCi17
IAotICAgIEFTU0VSVChtX2luUHJvZ3Jlc3MpOyAKLSAgICBtX2luUHJvZ3Jlc3MgPSBmYWxzZTsg
Ci19Ci0KLXZvaWQgUHJlbG9hZFNjYW5uZXI6OnJlc2V0KCkKLXsKLSAgICBtX3NvdXJjZS5jbGVh
cigpOwotICAgIAotICAgIG1fc3RhdGUgPSBEYXRhOwotICAgIG1fZXNjYXBlID0gZmFsc2U7Ci0g
ICAgbV9jb250ZW50TW9kZWwgPSBQQ0RBVEE7Ci0gICAgbV9jb21tZW50UG9zID0gMDsKLQotICAg
IG1fY2xvc2VUYWcgPSBmYWxzZTsKLSAgICBtX3RhZ05hbWUuY2xlYXIoKTsKLSAgICBtX2F0dHJp
YnV0ZU5hbWUuY2xlYXIoKTsKLSAgICBtX2F0dHJpYnV0ZVZhbHVlLmNsZWFyKCk7Ci0gICAgbV9s
YXN0U3RhcnRUYWcgPSBBdG9taWNTdHJpbmcoKTsKLSAgICAKLSAgICBtX3VybFRvTG9hZCA9IFN0
cmluZygpOwotICAgIG1fY2hhcnNldCA9IFN0cmluZygpOwotICAgIG1fbGlua0lzU3R5bGVTaGVl
dCA9IGZhbHNlOwotICAgIG1fbGFzdENoYXJhY3RlckluZGV4ID0gMDsKLSAgICBjbGVhckxhc3RD
aGFyYWN0ZXJzKCk7Ci0gICAgCi0gICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7Ci0gICAgbV9j
c3NSdWxlLmNsZWFyKCk7Ci0gICAgbV9jc3NSdWxlVmFsdWUuY2xlYXIoKTsKLX0KLSAgICAKLWJv
b2wgUHJlbG9hZFNjYW5uZXI6OnNjYW5uaW5nQm9keSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZG9jdW1lbnQtPmJvZHkoKSB8fCBtX2JvZHlTZWVuOwotfQotICAgIAotdm9pZCBQcmVsb2FkU2Nh
bm5lcjo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCi17Ci0jaWYgUFJFTE9B
RF9ERUJVRwotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotI2VuZGlmCi0g
ICAgdG9rZW5pemUoc291cmNlKTsKLSNpZiBQUkVMT0FEX0RFQlVHCi0gICAgbV90aW1lVXNlZCAr
PSBjdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lOwotI2VuZGlmCi19Ci0gICAgCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPT0gJyAnIHx8
IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnOwotfQotICAgIAotaW5saW5lIHZv
aWQgUHJlbG9hZFNjYW5uZXI6OmNsZWFyTGFzdENoYXJhY3RlcnMoKQotewotICAgIG1lbXNldCht
X2xhc3RDaGFyYWN0ZXJzLCAwLCBsYXN0Q2hhcmFjdGVyc0J1ZmZlclNpemUgKiBzaXplb2YoVUNo
YXIpKTsKLX0KLSAgICAKLWlubGluZSB2b2lkIFByZWxvYWRTY2FubmVyOjpyZW1lbWJlckNoYXJh
Y3RlcihVQ2hhciBjKQotewotICAgIG1fbGFzdENoYXJhY3RlckluZGV4ID0gKG1fbGFzdENoYXJh
Y3RlckluZGV4ICsgMSkgJSBsYXN0Q2hhcmFjdGVyc0J1ZmZlclNpemU7Ci0gICAgbV9sYXN0Q2hh
cmFjdGVyc1ttX2xhc3RDaGFyYWN0ZXJJbmRleF0gPSBjOwotfQotICAgIAotaW5saW5lIGJvb2wg
UHJlbG9hZFNjYW5uZXI6Omxhc3RDaGFyYWN0ZXJzTWF0Y2goY29uc3QgY2hhciogY2hhcnMsIHVu
c2lnbmVkIGNvdW50KSBjb25zdAotewotICAgIHVuc2lnbmVkIHBvcyA9IG1fbGFzdENoYXJhY3Rl
ckluZGV4OwotICAgIHdoaWxlIChjb3VudCkgewotICAgICAgICBpZiAoY2hhcnNbY291bnQgLSAx
XSAhPSBtX2xhc3RDaGFyYWN0ZXJzW3Bvc10pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIC0tY291bnQ7Ci0gICAgICAgIGlmICghcG9zKQotICAgICAgICAgICAgcG9zID0gbGFz
dENoYXJhY3RlcnNCdWZmZXJTaXplOwotICAgICAgICAtLXBvczsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0gICAgCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxlZ2FsRW50aXR5Rm9yKHVu
c2lnbmVkIHZhbHVlKQotewotICAgIC8vIEZJWE1FIFRoZXJlIGlzIGEgdGFibGUgZm9yIG1vcmUg
ZXhjZXB0aW9ucyBpbiB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbi4KLSAgICBpZiAodmFsdWUgPT0g
MCB8fCB2YWx1ZSA+IDB4MTBGRkZGIHx8ICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhE
RkZGKSkKLSAgICAgICAgcmV0dXJuIDB4RkZGRDsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0gICAg
Ci11bnNpZ25lZCBQcmVsb2FkU2Nhbm5lcjo6Y29uc3VtZUVudGl0eShTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycykKLXsKLSAgICBlbnVtIEVudGl0eVN0
YXRlIHsKLSAgICAgICAgSW5pdGlhbCwKLSAgICAgICAgTnVtYmVyVHlwZSwKLSAgICAgICAgTWF5
YmVIZXgsCi0gICAgICAgIEhleCwKLSAgICAgICAgRGVjaW1hbCwKLSAgICAgICAgTmFtZWQKLSAg
ICB9OwotICAgIEVudGl0eVN0YXRlIGVudGl0eVN0YXRlID0gSW5pdGlhbDsKLSAgICB1bnNpZ25l
ZCByZXN1bHQgPSAwOwotICAgIFZlY3RvcjxVQ2hhciwgMTA+IHNlZW5DaGFyczsKLSAgICBWZWN0
b3I8Y2hhciwgMTA+IGVudGl0eU5hbWU7Ci0gICAgCi0gICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKLSAgICAgICAgc2VlbkNoYXJzLmFw
cGVuZChjYyk7Ci0gICAgICAgIHN3aXRjaCAoZW50aXR5U3RhdGUpIHsKLSAgICAgICAgY2FzZSBJ
bml0aWFsOgotICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykgfHwgY2MgPT0gJzwnIHx8
IGNjID09ICcmJykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICcjJykgCi0gICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBOdW1iZXJUeXBl
OwotICAgICAgICAgICAgZWxzZSBpZiAoKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHx8IChjYyA+
PSAnQScgJiYgY2MgPD0gJ1onKSkgewotICAgICAgICAgICAgICAgIGVudGl0eU5hbWUuYXBwZW5k
KGNjKTsKLSAgICAgICAgICAgICAgICBlbnRpdHlTdGF0ZSA9IE5hbWVkOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBOdW1iZXJUeXBlOgotICAgICAgICAgICAgaWYgKGNjID09ICd4JyB8fCBjYyA9
PSAnWCcpCi0gICAgICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBNYXliZUhleDsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpIHsKLSAgICAgICAgICAgICAgICBl
bnRpdHlTdGF0ZSA9IERlY2ltYWw7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2MgLSAnMCc7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNvdXJjZS5wdXNoKCcjJyk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBNYXliZUhleDoKLSAgICAgICAgICAgIGlmIChjYyA+PSAnMCcg
JiYgY2MgPD0gJzknKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNjIC0gJzAnOwotICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICdmJykKLSAgICAgICAgICAgICAgICBy
ZXN1bHQgPSAxMCArIGNjIC0gJ2EnOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdGJykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAxMCArIGNjIC0gJ0EnOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLnB1c2goJyMnKTsKLSAgICAg
ICAgICAgICAgICBzb3VyY2UucHVzaChzZWVuQ2hhcnNbMV0pOwotICAgICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZW50aXR5U3RhdGUgPSBIZXg7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIZXg6Ci0gICAgICAgICAgICBpZiAoY2Mg
Pj0gJzAnICYmIGNjIDw9ICc5JykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAx
NiArIGNjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICdm
JykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIDEwICsgY2MgLSAnYSc7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ0YnKQotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAgKyBjYyAtICdBJzsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGNjID09ICc7JykgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7Ci0gICAgICAg
ICAgICB9IGVsc2UgCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3Vs
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEZWNpbWFsOgotICAgICAgICAg
ICAgaWYgKGNjID49ICcwJyAmJiBjYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0ICogMTAgKyBjYyAtICcwJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc7Jykg
ewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgICAgIAotICAgICAgICBjYXNlIE5hbWVkOgotICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgYXR0cmlidXRlIG9ubHkgdmVyc2lvbiwgZ2VuZXJpYyB2ZXJzaW9uIG1hdGNoZXMg
c29tZXdoYXQgZGlmZmVyZW50bHkKLSAgICAgICAgICAgIHdoaWxlIChlbnRpdHlOYW1lLnNpemUo
KSA8PSA4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc7JykgewotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50aXR5TmFtZS5kYXRh
KCksIGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmICghKGNjID49ICdhJyAmJiBjYyA8PSAneicpICYmICEoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgJiYgIShjYyA+PSAnMCcgJiYgY2MgPD0gJzknKSkgewotICAgICAgICAgICAgICAg
ICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50aXR5TmFtZS5kYXRhKCks
IGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbnRpdHlO
YW1lLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgZ290
byBvdXRPZkNoYXJhY3RlcnM7Ci0gICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOwotICAgICAg
ICAgICAgICAgIHNlZW5DaGFycy5hcHBlbmQoY2MpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHNlZW5DaGFycy5zaXplKCkgPT0gMikKLSAgICAgICAgICAgICAgICBzb3VyY2UucHVz
aChzZWVuQ2hhcnNbMF0pOwotICAgICAgICAgICAgZWxzZSBpZiAoc2VlbkNoYXJzLnNpemUoKSA9
PSAzKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLnB1c2goc2VlbkNoYXJzWzBdKTsKLSAgICAg
ICAgICAgICAgICBzb3VyY2UucHVzaChzZWVuQ2hhcnNbMV0pOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgc291cmNlLnByZXBlbmQoU2VnbWVudGVkU3RyaW5nKFN0cmluZyhz
ZWVuQ2hhcnMuZGF0YSgpLCBzZWVuQ2hhcnMuc2l6ZSgpIC0gMSkpKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHNvdXJjZS5hZHZhbmNlKCk7Ci0gICAgfQotb3V0
T2ZDaGFyYWN0ZXJzOgotICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSB0cnVlOwotICAgIHNvdXJj
ZS5wcmVwZW5kKFNlZ21lbnRlZFN0cmluZyhTdHJpbmcoc2VlbkNoYXJzLmRhdGEoKSwgc2VlbkNo
YXJzLnNpemUoKSkpKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBQcmVsb2FkU2Nhbm5lcjo6
dG9rZW5pemUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCi17Ci0gICAgQVNTRVJUKG1f
aW5Qcm9ncmVzcyk7Ci0gICAgCi0gICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7Ci0KLSAgICAv
LyBUaGlzIGlzIGEgc2ltcGxpZmllZCBIVE1MNSBUb2tlbml6ZXIKLSAgICAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0b2tlbmlzYXRpb24wCi0g
ICAgd2hpbGUgKCFtX3NvdXJjZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVUNoYXIgY2MgPSAqbV9z
b3VyY2U7Ci0gICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgICAgICBjYXNlIERhdGE6Ci0g
ICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIHJlbWVtYmVyQ2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChtX2NvbnRlbnRNb2RlbCA9PSBQQ0RBVEEgfHwgbV9jb250ZW50TW9kZWwgPT0gUkNE
QVRBKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRW50aXR5RGF0YTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKChtX2NvbnRlbnRNb2RlbCA9PSBSQ0RBVEEgfHwgbV9jb250ZW50TW9kZWwgPT0gQ0RBVEEp
ICYmICFtX2VzY2FwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RDaGFyYWN0
ZXJzTWF0Y2goIjwhLS0iLCA0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VzY2Fw
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9jb250ZW50TW9kZWwg
PT0gUENEQVRBIHx8ICgobV9jb250ZW50TW9kZWwgPT0gUkNEQVRBIHx8IG1fY29udGVudE1vZGVs
ID09IENEQVRBKSAmJiAhbV9lc2NhcGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlID0gVGFnT3BlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAg
ICAgICAgICAgICAgICAgICAgIGlmICgobV9jb250ZW50TW9kZWwgPT0gUkNEQVRBIHx8IG1fY29u
dGVudE1vZGVsID09IENEQVRBKSAmJiBtX2VzY2FwZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChsYXN0Q2hhcmFjdGVyc01hdGNoKCItLT4iLCAzKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9lc2NhcGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAg
ICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX3Nv
dXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgY2MgPSAqbV9zb3VyY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBFbnRpdHlEYXRhOgotICAgICAgICAgICAgLy8gc2hvdWxkIHRyeSB0byBj
b25zdW1lIHRoZSBlbnRpdHkgYnV0IHdlIG9ubHkgY2FyZSBhYm91dCBlbnRpdGllcyBpbiBhdHRy
aWJ1dGVzCi0gICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFRhZ09wZW46Ci0gICAgICAgICAgICBpZiAobV9jb250ZW50TW9kZWwgPT0g
UkNEQVRBIHx8IG1fY29udGVudE1vZGVsID09IENEQVRBKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNjID09ICcvJykKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENsb3NlVGFnT3BlbjsK
LSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERh
dGE7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAobV9jb250ZW50TW9kZWwgPT0gUENEQVRBKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGNjID09ICchJykKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IE1h
cmt1cERlY2xhcmF0aW9uT3BlbjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycp
Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDbG9zZVRhZ09wZW47Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAg
ICAgICBtX3RhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9jaGFyc2V0ID0g
U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5hcHBlbmQoY2MgKyAweDIw
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9jbG9zZVRhZyA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gVGFnTmFtZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNj
ID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV90YWdOYW1lLmNs
ZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2hhcnNldCA9IFN0cmluZygpOwotICAgICAg
ICAgICAgICAgICAgICBtX3RhZ05hbWUuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9jbG9zZVRhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFt
ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc/JykgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNDb21tZW50OwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDbG9zZVRhZ09wZW46
Ci0gICAgICAgICAgICBpZiAobV9jb250ZW50TW9kZWwgPT0gUkNEQVRBIHx8IG1fY29udGVudE1v
ZGVsID09IENEQVRBKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2xhc3RTdGFydFRhZy5sZW5n
dGgoKSkgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
IChtX3NvdXJjZS5sZW5ndGgoKSA8IG1fbGFzdFN0YXJ0VGFnLmxlbmd0aCgpICsgMSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gdG1w
U3RyaW5nOwotICAgICAgICAgICAgICAgIFVDaGFyIHRtcENoYXIgPSAwOwotICAgICAgICAgICAg
ICAgIGJvb2wgbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbiA9
IDA7IG4gPCBtX2xhc3RTdGFydFRhZy5sZW5ndGgoKSArIDE7IG4rKykgewotICAgICAgICAgICAg
ICAgICAgICB0bXBDaGFyID0gVW5pY29kZTo6dG9Mb3dlcigqbV9zb3VyY2UpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAobiA8IG1fbGFzdFN0YXJ0VGFnLmxlbmd0aCgpICYmIHRtcENoYXIgIT0g
bV9sYXN0U3RhcnRUYWdbbl0pCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICB0bXBTdHJpbmcuYXBwZW5kKHRtcENoYXIpOwotICAgICAg
ICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIG1fc291cmNlLnByZXBlbmQoU2VnbWVudGVkU3RyaW5nKFN0cmluZyh0bXBT
dHJpbmcuZGF0YSgpLCB0bXBTdHJpbmcuc2l6ZSgpKSkpOwotICAgICAgICAgICAgICAgIGlmICgh
bWF0Y2ggfHwgKCFpc1doaXRlc3BhY2UodG1wQ2hhcikgJiYgdG1wQ2hhciAhPSAnPicgJiYgdG1w
Q2hhciAhPSAnLycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOwotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAg
ICAgICAgIG1fdGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fY2hhcnNldCA9IFN0
cmluZygpOwotICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5hcHBlbmQoY2MgKyAweDIwKTsKLSAg
ICAgICAgICAgICAgICBtX2Nsb3NlVGFnID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gVGFnTmFtZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6
JykgewotICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgICAg
IG1fY2hhcnNldCA9IFN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fdGFnTmFtZS5hcHBlbmQo
Y2MpOwotICAgICAgICAgICAgICAgIG1fY2xvc2VUYWcgPSB0cnVlOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBUYWdOYW1lOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnQ7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBUYWdOYW1lOgotICAgICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZW1pdFRhZygpOwotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0g
RGF0YTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykKLSAgICAgICAgICAgICAgICAgICAgbV90YWdOYW1lLmFwcGVuZChjYyArIDB4MjApOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV90YWdOYW1lLmFwcGVuZChj
Yyk7Ci0gICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAg
IGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEJlZm9yZUF0dHJpYnV0ZU5hbWU6Ci0gICAgICAgICAgICBp
ZiAoaXNXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICBlbHNl
IGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0VGFnKCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERhdGE7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAm
JiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZU5hbWUuY2xlYXIoKTsK
LSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVlLmNsZWFyKCk7Ci0gICAgICAgICAgICAg
ICAgbV9hdHRyaWJ1dGVOYW1lLmFwcGVuZChjYyArIDB4MjApOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycp
Ci0gICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
bV9hdHRyaWJ1dGVOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1
ZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5hcHBlbmQoY2MpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0cmlidXRlTmFtZToKLSAgICAgICAg
ICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjYykpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyQXR0cmlidXRlTmFtZTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0
dHJpYnV0ZVZhbHVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAg
ICBlbWl0VGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9IAotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0
dHJpYnV0ZU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykKLSAgICAgICAg
ICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmFwcGVuZChjYyArIDB4MjApOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVOYW1lLmFwcGVuZChj
Yyk7Ci0gICAgICAgICAgICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAg
IGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRlTmFtZToKLSAgICAgICAgICAgIGlm
IChpc1doaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc9JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRl
VmFsdWU7IAotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdFRhZygpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAg
bV9hdHRyaWJ1dGVOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1
ZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5hcHBlbmQoY2MgKyAw
eDIwKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlTmFtZTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZv
cmVBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9h
dHRyaWJ1dGVOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5j
bGVhcigpOwotICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZS5hcHBlbmQoY2MpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmVmb3JlQXR0cmlidXRlVmFsdWU6Ci0gICAg
ICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgICAgICA7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJp
YnV0ZVZhbHVlRG91YmxlUXVvdGVkOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ7Ci0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFRh
ZygpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVlLmFwcGVuZChjYyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1
b3RlZDoKLSAgICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09
ICciJykgewotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNj
ID09ICcmJykgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlQmVmb3JlRW50aXR5SW5BdHRy
aWJ1dGVWYWx1ZSA9IG1fc3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBFbnRp
dHlJbkF0dHJpYnV0ZVZhbHVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9IAotICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUuYXBwZW5kKGNjKTsK
LSAgICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIGNjID0gKm1fc291cmNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQ6Ci0gICAgICAgICAg
ICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyYnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGVCZWZvcmVFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlID0gbV9z
dGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVudGl0eUluQXR0cmlidXRlVmFs
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0gCi0gICAg
ICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAg
IG1fc291cmNlLmFkdmFuY2UoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9zb3VyY2UuaXNFbXB0
eSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgY2MgPSAq
bV9zb3VyY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkOgotICAgICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVB
dHRyaWJ1dGVOYW1lOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICcmJykgewotICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlQmVmb3JlRW50aXR5SW5BdHRyaWJ1dGVWYWx1ZSA9IG1fc3RhdGU7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBFbnRpdHlJbkF0dHJpYnV0ZVZhbHVlOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVtaXRUYWcoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZVZhbHVlLmFwcGVuZChjYyk7Ci0gICAgICAgICAg
ICAgICAgbV9zb3VyY2UuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBj
YyA9ICptX3NvdXJjZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEVudGl0eUluQXR0cmlidXRlVmFsdWU6IAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOyAKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBlbnRpdHkgPSBjb25zdW1lRW50aXR5KG1fc291cmNlLCBub3RFbm91Z2hDaGFy
YWN0ZXJzKTsKLSAgICAgICAgICAgICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGlmIChlbnRpdHkgPiAweEZG
RkYpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5hcHBlbmQoVTE2X0xF
QUQoZW50aXR5KSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUuYXBwZW5k
KFUxNl9UUkFJTChlbnRpdHkpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudGl0eSkK
LSAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVWYWx1ZS5hcHBlbmQoZW50aXR5KTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlVmFsdWUu
YXBwZW5kKCcmJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3N0YXRlID0gbV9zdGF0
ZUJlZm9yZUVudGl0eUluQXR0cmlidXRlVmFsdWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgY2FzZSBCb2d1c0NvbW1lbnQ6Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAg
ICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IERhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBtX3NvdXJjZS5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
c291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIGNjID0gKm1fc291cmNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTWFya3VwRGVjbGFyYXRpb25PcGVuOiB7Ci0gICAgICAgICAgICBpZiAo
Y2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc291cmNlLmxlbmd0aCgpIDwgMikK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIG1fc291cmNlLmFk
dmFuY2UoKTsKLSAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJjZTsKLSAgICAgICAgICAgICAg
ICBpZiAoY2MgPT0gJy0nKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0
YXJ0OwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gQm9ndXNDb21tZW50OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiB3ZSBjYXJlZCBhYm91dCB0aGUgRE9DVFlQRSB3
ZSB3b3VsZCB0ZXN0IHRvIGVudGVyIHRob3NlIHN0YXRlcyBoZXJlCi0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnQ7Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIENvbW1lbnRTdGFydDoKLSAgICAgICAgICAgIGlmIChjYyA9PSAn
LScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGFydERhc2g7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGE7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnQ7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21tZW50U3RhcnREYXNoOgotICAgICAg
ICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVu
ZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRGF0YTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
Q29tbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbW1lbnQ6Ci0gICAg
ICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRFbmREYXNoOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9zb3Vy
Y2UuYWR2YW5jZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYyA9ICptX3NvdXJj
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbW1l
bnRFbmREYXNoOgotICAgICAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQ29tbWVudEVuZDsKLSAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IENvbW1lbnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21t
ZW50RW5kOgotICAgICAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRGF0YTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICctJykKLSAgICAgICAgICAg
ICAgICA7Ci0gICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21t
ZW50OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgbV9zb3VyY2UuYWR2
YW5jZSgpOwotICAgIH0KLX0KLSAgICAKLXZvaWQgUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NBdHRy
aWJ1dGUoKQotewotICAgIEF0b21pY1N0cmluZyB0YWcgPSBBdG9taWNTdHJpbmcobV90YWdOYW1l
LmRhdGEoKSwgbV90YWdOYW1lLnNpemUoKSk7Ci0gICAgQXRvbWljU3RyaW5nIGF0dHJpYnV0ZSA9
IEF0b21pY1N0cmluZyhtX2F0dHJpYnV0ZU5hbWUuZGF0YSgpLCBtX2F0dHJpYnV0ZU5hbWUuc2l6
ZSgpKTsKLSAgICAKLSAgICBTdHJpbmcgdmFsdWUobV9hdHRyaWJ1dGVWYWx1ZS5kYXRhKCksIG1f
YXR0cmlidXRlVmFsdWUuc2l6ZSgpKTsKLSAgICBpZiAodGFnID09IHNjcmlwdFRhZyB8fCB0YWcg
PT0gaW1nVGFnKSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUgPT0gc3JjQXR0ciAmJiBtX3VybFRv
TG9hZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VybFRvTG9hZCA9IGRlcHJlY2F0ZWRQYXJz
ZVVSTCh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PSBjaGFyc2V0QXR0cikK
LSAgICAgICAgICAgIG1fY2hhcnNldCA9IHZhbHVlOwotICAgIH0gZWxzZSBpZiAodGFnID09IGxp
bmtUYWcpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PSBocmVmQXR0ciAmJiBtX3VybFRvTG9h
ZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VybFRvTG9hZCA9IGRlcHJlY2F0ZWRQYXJzZVVS
TCh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PSByZWxBdHRyKSB7Ci0gICAg
ICAgICAgICBIVE1MTGlua0VsZW1lbnQ6OlJlbEF0dHJpYnV0ZSByZWw7Ci0gICAgICAgICAgICBI
VE1MTGlua0VsZW1lbnQ6OnRva2VuaXplUmVsQXR0cmlidXRlKHZhbHVlLCByZWwpOwotICAgICAg
ICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsLm1faXNTdHlsZVNoZWV0ICYmICFyZWwubV9p
c0FsdGVybmF0ZSAmJiAhcmVsLm1faXNJY29uICYmICFyZWwubV9pc0ROU1ByZWZldGNoOwotICAg
ICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZSA9PSBjaGFyc2V0QXR0cikKLSAgICAgICAgICAgIG1f
Y2hhcnNldCA9IHZhbHVlOwotICAgIH0KLX0KLSAgICAKLWlubGluZSB2b2lkIFByZWxvYWRTY2Fu
bmVyOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMpCi17Ci0gICAgaWYgKG1fY29udGVudE1vZGVsID09
IENEQVRBICYmIG1fbGFzdFN0YXJ0VGFnID09IHN0eWxlVGFnKSAKLSAgICAgICAgdG9rZW5pemVD
U1MoYyk7Ci19Ci0gICAgCi1pbmxpbmUgdm9pZCBQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemVDU1Mo
VUNoYXIgYykKLXsgICAgCi0gICAgLy8gV2UgYXJlIGp1c3QgaW50ZXJlc3RlZCBpbiBAaW1wb3J0
IHJ1bGVzLCBubyBuZWVkIGZvciByZWFsIHRva2VuaXphdGlvbiBoZXJlCi0gICAgLy8gU2VhcmNo
aW5nIGZvciBvdGhlciB0eXBlcyBvZiByZXNvdXJjZXMgaXMgcHJvYmFibHkgbG93IHBheW9mZgot
ICAgIHN3aXRjaCAobV9jc3NTdGF0ZSkgewotICAgIGNhc2UgQ1NTSW5pdGlhbDoKLSAgICAgICAg
aWYgKGMgPT0gJ0AnKQotICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU1J1bGVTdGFydDsKLSAg
ICAgICAgZWxzZSBpZiAoYyA9PSAnLycpCi0gICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTTWF5
YmVDb21tZW50OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU01heWJlQ29tbWVudDoKLSAg
ICAgICAgaWYgKGMgPT0gJyonKQotICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0NvbW1lbnQ7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU0NvbW1lbnQ6Ci0gICAgICAgIGlmIChjID09ICcqJykK
LSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NNYXliZUNvbW1lbnRFbmQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTTWF5YmVDb21tZW50RW5kOgotICAgICAgICBpZiAoYyA9PSAnLycp
Ci0gICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsKLSAgICAgICAgZWxzZSBpZiAo
YyA9PSAnKicpCi0gICAgICAgICAgICA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fY3Nz
U3RhdGUgPSBDU1NDb21tZW50OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1J1bGVTdGFy
dDoKLSAgICAgICAgaWYgKChjID49ICdBJyAmJiBjIDw9ICdaJykgfHwgKGMgPj0gJ2EnICYmIGMg
PD0gJ3onKSkgewotICAgICAgICAgICAgbV9jc3NSdWxlLmNsZWFyKCk7Ci0gICAgICAgICAgICBt
X2Nzc1J1bGVWYWx1ZS5jbGVhcigpOwotICAgICAgICAgICAgbV9jc3NSdWxlLmFwcGVuZChjKTsK
LSAgICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NSdWxlOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1J1bGU6Ci0gICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykpCi0gICAgICAgICAgICBtX2Nz
c1N0YXRlID0gQ1NTQWZ0ZXJSdWxlOwotICAgICAgICBlbHNlIGlmIChjID09ICc7JykKLSAgICAg
ICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2Nzc1J1bGUuYXBwZW5kKGMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU0FmdGVy
UnVsZToKLSAgICAgICAgaWYgKGlzV2hpdGVzcGFjZShjKSkKLSAgICAgICAgICAgIDsKLSAgICAg
ICAgZWxzZSBpZiAoYyA9PSAnOycpCi0gICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTSW5pdGlh
bDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2Nzc1N0YXRlID0gQ1NTUnVsZVZhbHVl
OwotICAgICAgICAgICAgbV9jc3NSdWxlVmFsdWUuYXBwZW5kKGMpOwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUnVsZVZhbHVlOgotICAgICAgICBpZiAoaXNXaGl0ZXNw
YWNlKGMpKQotICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0FmdGVyUnVsZVZhbHVlOwotICAg
ICAgICBlbHNlIGlmIChjID09ICc7JykgewotICAgICAgICAgICAgZW1pdENTU1J1bGUoKTsKLSAg
ICAgICAgICAgIG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAgICAgICB9IGVsc2UgCi0gICAg
ICAgICAgICBtX2Nzc1J1bGVWYWx1ZS5hcHBlbmQoYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTQWZ0ZXJSdWxlVmFsdWU6Ci0gICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykpCi0gICAg
ICAgICAgICA7Ci0gICAgICAgIGVsc2UgaWYgKGMgPT0gJzsnKSB7Ci0gICAgICAgICAgICBlbWl0
Q1NTUnVsZSgpOwotICAgICAgICAgICAgbV9jc3NTdGF0ZSA9IENTU0luaXRpYWw7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSBtZWRpYSBydWxlcwotICAgICAgICAgICAg
IG1fY3NzU3RhdGUgPSBDU1NJbml0aWFsOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLX0KLSAgICAKLXZvaWQgUHJlbG9hZFNjYW5uZXI6OmVtaXRUYWcoKQotewotICAgIGlmICht
X2Nsb3NlVGFnKSB7Ci0gICAgICAgIG1fY29udGVudE1vZGVsID0gUENEQVRBOwotICAgICAgICBt
X2Nzc1N0YXRlID0gQ1NTSW5pdGlhbDsKLSAgICAgICAgY2xlYXJMYXN0Q2hhcmFjdGVycygpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIEF0b21pY1N0cmluZyB0YWcobV90YWdO
YW1lLmRhdGEoKSwgbV90YWdOYW1lLnNpemUoKSk7Ci0gICAgbV9sYXN0U3RhcnRUYWcgPSB0YWc7
Ci0gICAgCi0gICAgaWYgKHRhZyA9PSB0ZXh0YXJlYVRhZyB8fCB0YWcgPT0gdGl0bGVUYWcpCi0g
ICAgICAgIG1fY29udGVudE1vZGVsID0gUkNEQVRBOwotICAgIGVsc2UgaWYgKHRhZyA9PSBzdHls
ZVRhZyB8fCB0YWcgPT0geG1wVGFnIHx8IHRhZyA9PSBzY3JpcHRUYWcgfHwgdGFnID09IGlmcmFt
ZVRhZyB8fCB0YWcgPT0gbm9lbWJlZFRhZyB8fCB0YWcgPT0gbm9mcmFtZXNUYWcpCi0gICAgICAg
IG1fY29udGVudE1vZGVsID0gQ0RBVEE7Ci0gICAgZWxzZSBpZiAodGFnID09IG5vc2NyaXB0VGFn
KQotICAgICAgICAvLyB3ZSB3b3VsZG4ndCBiZSBoZXJlIGlmIHNjcmlwdHMgd2VyZSBkaXNhYmxl
ZAotICAgICAgICBtX2NvbnRlbnRNb2RlbCA9IENEQVRBOwotICAgIGVsc2UgaWYgKHRhZyA9PSBw
bGFpbnRleHRUYWcpCi0gICAgICAgIG1fY29udGVudE1vZGVsID0gUExBSU5URVhUOwotICAgIGVs
c2UKLSAgICAgICAgbV9jb250ZW50TW9kZWwgPSBQQ0RBVEE7Ci0gICAgCi0gICAgaWYgKHRhZyA9
PSBib2R5VGFnKQotICAgICAgICBtX2JvZHlTZWVuID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAobV91
cmxUb0xvYWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fbGlua0lzU3R5bGVTaGVldCA9IGZhbHNl
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmICh0YWcgPT0gc2NyaXB0VGFn
KQotICAgICAgICBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cHJlbG9hZChDYWNoZWRSZXNvdXJj
ZTo6U2NyaXB0LCBtX3VybFRvTG9hZCwgbV9jaGFyc2V0LCBzY2FubmluZ0JvZHkoKSk7Ci0gICAg
ZWxzZSBpZiAodGFnID09IGltZ1RhZykgCi0gICAgICAgIG1fZG9jdW1lbnQtPmRvY0xvYWRlcigp
LT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCBtX3VybFRvTG9hZCwgU3Ry
aW5nKCksIHNjYW5uaW5nQm9keSgpKTsKLSAgICBlbHNlIGlmICh0YWcgPT0gbGlua1RhZyAmJiBt
X2xpbmtJc1N0eWxlU2hlZXQpIAotICAgICAgICBtX2RvY3VtZW50LT5kb2NMb2FkZXIoKS0+cHJl
bG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgbV91cmxUb0xvYWQsIG1fY2hhcnNl
dCwgc2Nhbm5pbmdCb2R5KCkpOwotCi0gICAgbV91cmxUb0xvYWQgPSBTdHJpbmcoKTsKLSAgICBt
X2NoYXJzZXQgPSBTdHJpbmcoKTsKLSAgICBtX2xpbmtJc1N0eWxlU2hlZXQgPSBmYWxzZTsKLX0K
LSAgICAKLXZvaWQgUHJlbG9hZFNjYW5uZXI6OmVtaXRDU1NSdWxlKCkKLXsKLSAgICBTdHJpbmcg
cnVsZShtX2Nzc1J1bGUuZGF0YSgpLCBtX2Nzc1J1bGUuc2l6ZSgpKTsKLSAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UocnVsZSwgImltcG9ydCIpICYmICFtX2Nzc1J1bGVWYWx1ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgU3RyaW5nIHZhbHVlKG1fY3NzUnVsZVZhbHVlLmRhdGEoKSwgbV9jc3NSdWxl
VmFsdWUuc2l6ZSgpKTsKLSAgICAgICAgU3RyaW5nIHVybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTCh2
YWx1ZSk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQtPmRvY0xvYWRlcigpLT5wcmVsb2FkKENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0LCB1
cmwsIFN0cmluZygpLCBzY2FubmluZ0JvZHkoKSk7Ci0gICAgfQotICAgIG1fY3NzUnVsZS5jbGVh
cigpOwotICAgIG1fY3NzUnVsZVZhbHVlLmNsZWFyKCk7Ci19Ci0gICAgICAgICAgICAgICAgCi19
CkluZGV4OiBXZWJDb3JlL2h0bWwvUHJlbG9hZFNjYW5uZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvUHJlbG9hZFNjYW5uZXIuaAkocmV2aXNpb24gNjE2NzIpCisrKyBXZWJDb3JlL2h0
bWwvUHJlbG9hZFNjYW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFByZWxv
YWRTY2FubmVyX2gKLSNkZWZpbmUgUHJlbG9hZFNjYW5uZXJfaAotCi0jaW5jbHVkZSAiQXRvbWlj
U3RyaW5nLmgiCi0jaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgCi0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci0gICAgY2xhc3MgQ2FjaGVkUmVz
b3VyY2VDbGllbnQ7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgCi0gICAgY2xhc3MgUHJlbG9h
ZFNjYW5uZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgUHJl
bG9hZFNjYW5uZXIoRG9jdW1lbnQqKTsKLSAgICAgICAgflByZWxvYWRTY2FubmVyKCk7Ci0gICAg
ICAgIHZvaWQgYmVnaW4oKTsKLSAgICAgICAgdm9pZCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJp
bmcmKTsKLSAgICAgICAgdm9pZCBlbmQoKTsKLSAgICAgICAgYm9vbCBpblByb2dyZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9pblByb2dyZXNzOyB9Ci0gICAgICAgIAotICAgICAgICBib29sIHNjYW5u
aW5nQm9keSgpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN1
bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycyk7Ci0g
ICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgdG9rZW5pemUoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJik7Ci0gICAgICAgIHZvaWQgcmVzZXQoKTsKLSAgICAgICAgCi0gICAgICAgIHZv
aWQgZW1pdFRhZygpOwotICAgICAgICB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIpOwotICAgICAg
ICAKLSAgICAgICAgdm9pZCB0b2tlbml6ZUNTUyhVQ2hhcik7Ci0gICAgICAgIHZvaWQgZW1pdENT
U1J1bGUoKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZSgpOwotCi0g
ICAgICAgIAotICAgICAgICB2b2lkIGNsZWFyTGFzdENoYXJhY3RlcnMoKTsKLSAgICAgICAgdm9p
ZCByZW1lbWJlckNoYXJhY3RlcihVQ2hhcik7Ci0gICAgICAgIGJvb2wgbGFzdENoYXJhY3RlcnNN
YXRjaChjb25zdCBjaGFyKiwgdW5zaWduZWQgY291bnQpIGNvbnN0OwotICAgICAgICAKLSAgICAg
ICAgYm9vbCBtX2luUHJvZ3Jlc3M7Ci0gICAgICAgIFNlZ21lbnRlZFN0cmluZyBtX3NvdXJjZTsK
LSAgICAgICAgCi0gICAgICAgIGVudW0gU3RhdGUgewotICAgICAgICAgICAgRGF0YSwKLSAgICAg
ICAgICAgIEVudGl0eURhdGEsCi0gICAgICAgICAgICBUYWdPcGVuLAotICAgICAgICAgICAgQ2xv
c2VUYWdPcGVuLAotICAgICAgICAgICAgVGFnTmFtZSwKLSAgICAgICAgICAgIEJlZm9yZUF0dHJp
YnV0ZU5hbWUsCi0gICAgICAgICAgICBBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgQWZ0ZXJB
dHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgQmVmb3JlQXR0cmlidXRlVmFsdWUsCi0gICAgICAg
ICAgICBBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZCwKLSAgICAgICAgICAgIEF0dHJpYnV0ZVZh
bHVlU2luZ2xlUXVvdGVkLAotICAgICAgICAgICAgQXR0cmlidXRlVmFsdWVVbnF1b3RlZCwKLSAg
ICAgICAgICAgIEVudGl0eUluQXR0cmlidXRlVmFsdWUsCi0gICAgICAgICAgICBCb2d1c0NvbW1l
bnQsCi0gICAgICAgICAgICBNYXJrdXBEZWNsYXJhdGlvbk9wZW4sCi0gICAgICAgICAgICBDb21t
ZW50U3RhcnQsCi0gICAgICAgICAgICBDb21tZW50U3RhcnREYXNoLAotICAgICAgICAgICAgQ29t
bWVudCwKLSAgICAgICAgICAgIENvbW1lbnRFbmREYXNoLAotICAgICAgICAgICAgQ29tbWVudEVu
ZAotICAgICAgICB9OwotICAgICAgICBTdGF0ZSBtX3N0YXRlOwotICAgICAgICBib29sIG1fZXNj
YXBlOwotICAgICAgICBlbnVtIENvbnRlbnRNb2RlbCB7Ci0gICAgICAgICAgICBQQ0RBVEEsCi0g
ICAgICAgICAgICBSQ0RBVEEsCi0gICAgICAgICAgICBDREFUQSwKLSAgICAgICAgICAgIFBMQUlO
VEVYVAotICAgICAgICB9OwotICAgICAgICBDb250ZW50TW9kZWwgbV9jb250ZW50TW9kZWw7Ci0g
ICAgICAgIHVuc2lnbmVkIG1fY29tbWVudFBvczsKLSAgICAgICAgU3RhdGUgbV9zdGF0ZUJlZm9y
ZUVudGl0eUluQXR0cmlidXRlVmFsdWU7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbGFzdENoYXJhY3RlcnNCdWZmZXJTaXplID0gODsKLSAgICAgICAgVUNoYXIgbV9s
YXN0Q2hhcmFjdGVyc1tsYXN0Q2hhcmFjdGVyc0J1ZmZlclNpemVdOwotICAgICAgICB1bnNpZ25l
ZCBtX2xhc3RDaGFyYWN0ZXJJbmRleDsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgbV9jbG9zZVRh
ZzsKLSAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gbV90YWdOYW1lOwotICAgICAgICBWZWN0b3I8
VUNoYXIsIDMyPiBtX2F0dHJpYnV0ZU5hbWU7Ci0gICAgICAgIFZlY3RvcjxVQ2hhcj4gbV9hdHRy
aWJ1dGVWYWx1ZTsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1fbGFzdFN0YXJ0VGFnOwotICAgICAg
ICAKLSAgICAgICAgU3RyaW5nIG1fdXJsVG9Mb2FkOwotICAgICAgICBTdHJpbmcgbV9jaGFyc2V0
OwotICAgICAgICBib29sIG1fbGlua0lzU3R5bGVTaGVldDsKLSAgICAgICAgCi0gICAgICAgIGVu
dW0gQ1NTU3RhdGUgewotICAgICAgICAgICAgQ1NTSW5pdGlhbCwKLSAgICAgICAgICAgIENTU01h
eWJlQ29tbWVudCwKLSAgICAgICAgICAgIENTU0NvbW1lbnQsCi0gICAgICAgICAgICBDU1NNYXli
ZUNvbW1lbnRFbmQsCi0gICAgICAgICAgICBDU1NSdWxlU3RhcnQsCi0gICAgICAgICAgICBDU1NS
dWxlLAotICAgICAgICAgICAgQ1NTQWZ0ZXJSdWxlLAotICAgICAgICAgICAgQ1NTUnVsZVZhbHVl
LAotICAgICAgICAgICAgQ1NTQWZ0ZXJSdWxlVmFsdWUKLSAgICAgICAgfTsKLSAgICAgICAgQ1NT
U3RhdGUgbV9jc3NTdGF0ZTsKLSAgICAgICAgVmVjdG9yPFVDaGFyLCAxNj4gbV9jc3NSdWxlOwot
ICAgICAgICBWZWN0b3I8VUNoYXI+IG1fY3NzUnVsZVZhbHVlOwotICAgICAgICAKLSAgICAgICAg
ZG91YmxlIG1fdGltZVVzZWQ7Ci0gICAgICAgIAotICAgICAgICBib29sIG1fYm9keVNlZW47Ci0g
ICAgICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwotICAgIH07Ci0KLX0KLQotI2VuZGlmCkluZGV4
OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiA2MTY3MikKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUg
IlByZWxvYWRTY2FubmVyLmgiCisjaW5jbHVkZSAiTGVnYWN5UHJlbG9hZFNjYW5uZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyBY
U1NBdWRpdG9yOjpkZWNvZGVIVE1MRW50aXRpZXMoY28KICAgICAgICAgaWYgKGxlYXZlVW5kZWNv
ZGFibGVFbnRpdGllc1VudG91Y2hlZCkKICAgICAgICAgICAgIHNvdXJjZVNoYWRvdyA9IHNvdXJj
ZTsKICAgICAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7Ci0gICAgICAgIHVu
c2lnbmVkIGVudGl0eSA9IFByZWxvYWRTY2FubmVyOjpjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90
RW5vdWdoQ2hhcmFjdGVycyk7CisgICAgICAgIHVuc2lnbmVkIGVudGl0eSA9IExlZ2FjeVByZWxv
YWRTY2FubmVyOjpjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7CiAg
ICAgICAgIC8vIFdlIGlnbm9yZSBub3RFbm91Z2hDaGFyYWN0ZXJzIGJlY2F1c2Ugd2UgbWlnaHQg
YXMgd2VsbCB1c2UgdGhpcyBsb29wCiAgICAgICAgIC8vIHRvIGNvcHkgdGhlIHJlbWFpbmluZyBj
aGFyYWN0ZXJzIGludG8gfHJlc3VsdHwuCiAK
</data>
<flag name="review"
          id="46378"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>