<?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>62268</bug_id>
          
          <creation_ts>2011-06-07 23:26:26 -0700</creation_ts>
          <short_desc>Moved MarkedSpace.* to NewSpace.* in preparation for more renaming</short_desc>
          <delta_ts>2011-06-08 11:58:10 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>darin</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>417113</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-07 23:26:26 -0700</bug_when>
    <thetext>Moved MarkedSpace.* to NewSpace.* in preparation for more renaming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417114</commentid>
    <comment_count>1</comment_count>
      <attachid>96386</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-07 23:26:48 -0700</bug_when>
    <thetext>Created attachment 96386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417115</commentid>
    <comment_count>2</comment_count>
      <attachid>96387</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-07 23:28:27 -0700</bug_when>
    <thetext>Created attachment 96387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417225</commentid>
    <comment_count>3</comment_count>
      <attachid>96387</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-08 07:16:41 -0700</bug_when>
    <thetext>Comment on attachment 96387
Patch

I don’t understand what the “new” in NewSpace refers to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417300</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-08 09:43:44 -0700</bug_when>
    <thetext>&quot;New&quot; is where new objects go. Hopefully, it will make more sense once there&apos;s also an OldSpace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417383</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-08 11:58:10 -0700</bug_when>
    <thetext>Committed r88368: &lt;http://trac.webkit.org/changeset/88368&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96386</attachid>
            <date>2011-06-07 23:26:48 -0700</date>
            <delta_ts>2011-06-07 23:28:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62268-20110607232647.patch</filename>
            <type>text/plain</type>
            <size>34685</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODgzMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTEtMDYtMDcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBNYXJrZWRTcGFj
ZS4qIHRvIE5ld1NwYWNlLiogaW4gcHJlcGFyYXRpb24gZm9yIG1vcmUgcmVuYW1pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMjY4CisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtl
ZEJsb2NrLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvTmV3U3Bh
Y2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5jcHAuCisgICAgICAgICogaGVhcC9OZXdTcGFjZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oLgorCiAyMDExLTA2LTA3ICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1
bnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4ODMy
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAv
SGFuZGxlU3RhY2suY3BwCiAgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCiAgICAgaGVh
cC9NYXJrZWRCbG9jay5jcHAKLSAgICBoZWFwL01hcmtlZFNwYWNlLmNwcAorICAgIGhlYXAvTmV3
U3BhY2UuY3BwCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKICAgICBoZWFwL01hcmtT
dGFjay5jcHAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExNyw4ICsxMTcsOCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0
b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIFwKLQlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNl
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWsuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA4ODMyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjIsOCArMzIyLDggQEAKICAgICAgICAgICAgICdoZWFwL0hlYXBSb290VmlzaXRv
ci5oJywKICAgICAgICAgICAgICdoZWFwL01hcmtlZEJsb2NrLmNwcCcsCiAgICAgICAgICAgICAn
aGVhcC9NYXJrZWRCbG9jay5oJywKLSAgICAgICAgICAgICdoZWFwL01hcmtlZFNwYWNlLmNwcCcs
Ci0gICAgICAgICAgICAnaGVhcC9NYXJrZWRTcGFjZS5oJywKKyAgICAgICAgICAgICdoZWFwL05l
d1NwYWNlLmNwcCcsCisgICAgICAgICAgICAnaGVhcC9OZXdTcGFjZS5oJywKICAgICAgICAgICAg
ICdkZWJ1Z2dlci9EZWJ1Z2dlci5jcHAnLAogICAgICAgICAgICAgJ2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJl
dmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
bwkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAgXAogICAgIGhlYXAvTWFya1N0YWNrLmNwcCBcCiAgICAg
aGVhcC9NYXJrZWRCbG9jay5jcHAgXAotICAgIGhlYXAvTWFya2VkU3BhY2UuY3BwIFwKKyAgICBo
ZWFwL05ld1NwYWNlLmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBc
CiAgICAgZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4OTgsMTEgKzE4OTgsMTEgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxNYXJr
ZWRTcGFjZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2
ZVBhdGg9Ii4uXC4uXGhlYXBcTmV3U3BhY2UuY3BwIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXE1hcmtlZFNwYWNlLmgiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcTmV3
U3BhY2UuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4ODMyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBACiAJCTE0MkQzOTM5MTAz
RTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRDM5MzgxMDNFNDU2MDAwN0RDQjUyIC8qIE51bWVy
aWNTdHJpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkQ2RjA2MTM1MzlBMjgw
MEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi87IH07CiAJCTE0MkQ2RjA5MTM1MzlBMjgwMEIw
MkU4NiAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTQyRDZGMEMx
MzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkQ2RjBBMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJr
ZWRTcGFjZS5jcHAgKi87IH07Ci0JCTE0MkQ2RjBEMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJrZWRT
cGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQy
RDZGMEIxMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2
IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLzsgfTsK
IAkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2
IC8qIE1hcmtTdGFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkUzMTJCMTM0RkYwQTYwMEFG
QURCNSAvKiBIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTg1LDYgKzE4Myw4IEBACiAJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCAqLzsgfTsK
IAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NF
IC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZGNDAw
MDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMTREMkYzREExMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDJGM0Q4MTM5
RjRCRTIwMDQ5MTAzMSAvKiBOZXdTcGFjZS5jcHAgKi87IH07CisJCTE0RDJGM0RCMTM5RjRCRTIw
MDQ5MTAzMSAvKiBOZXdTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmggKi87IH07
CiAJCTE0RTlEMTdCMTA3RUM0NjkwMDREREEyMSAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc1NkZD
NjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovOyB9Owog
CQkxNEY4QkEzRTEwN0VDODg2MDA5ODkyREMgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUyMTdCOTA4RTdFRUNDMDAyM0U1
RjYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07CiAJCTE0RjhCQTQzMTA3RUM4OEMwMDk4OTJEQyAv
KiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1NDFCRDcwMDhFODBBMTcwMDJDQkVFNyAvKiBUQ1N5c3RlbUFsbG9jLmNwcCAq
LzsgfTsKQEAgLTc0Myw4ICs3NDMsNiBAQAogCQkxNDJEMzkzODEwM0U0NTYwMDA3RENCNTIgLyog
TnVtZXJpY1N0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTnVtZXJp
Y1N0cmluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyRDZGMDYxMzUzOUEy
ODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hcmtlZEJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTE0MkQ2RjBBMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJrZWRTcGFjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrZWRTcGFjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0MkQ2RjBCMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJrZWRT
cGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRTcGFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyog
TWFya1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtT
dGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MkQ2RjBGMTM1MzlBNDEw
MEIwMkU4NiAvKiBNYXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWFya1N0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MkUzMTJCMTM0RkYw
QTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTMsNiArODExLDggQEAK
IAkJMTRCRDVBMkIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVSZWYuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNEJENUEyRDBBM0U5MUY2MDBCQUY1OUMgLyogdGVzdGFwaS5jICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gdGVzdGFwaS5jOyBwYXRoID0gQVBJL3Rl
c3RzL3Rlc3RhcGkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENE
QjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWFrR0NNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREMkYzRDgx
MzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ld1NwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ld1NwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0RDc5MjY0MERBQTAzRkIwMDFBOUYwNSAvKiBSZWdpc3RlckZpbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJGaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gdGVzdGFwaS5qczsgcGF0aCA9IEFQSS90
ZXN0cy90ZXN0YXBpLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNERBODE4RTBE
OTlGRDIwMDBCMEE0RkIgLyogSlNBY3RpdmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQ5OSwxMCArMTQ5OSwxMCBAQAogCQkJCTE0QjcyMzQwMTJEN0QwREEwMDNCRDVFRCAvKiBNYWNo
aW5lU3RhY2tNYXJrZXIuaCAqLywKIAkJCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyogTWFy
a2VkQmxvY2suY3BwICovLAogCQkJCTE0MkQ2RjA3MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRC
bG9jay5oICovLAotCQkJCTE0MkQ2RjBBMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJrZWRTcGFjZS5j
cHAgKi8sCi0JCQkJMTQyRDZGMEIxMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmggKi8s
CiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8sCiAJCQkJ
MTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAorCQkJCTE0RDJGM0Q4
MTM5RjRCRTIwMDQ5MTAzMSAvKiBOZXdTcGFjZS5jcHAgKi8sCisJCQkJMTREMkYzRDkxMzlGNEJF
MjAwNDkxMDMxIC8qIE5ld1NwYWNlLmggKi8sCiAJCQkJMTQyRTMxMzIxMzRGRjBBNjAwQUZBREI1
IC8qIFN0cm9uZy5oICovLAogCQkJCTE0MkUzMTMzMTM0RkYwQTYwMEFGQURCNSAvKiBXZWFrLmgg
Ki8sCiAJCQkpOwpAQCAtMjUzNiw3ICsyNTM2LDYgQEAKIAkJCQkxNEZCOTg2RTEzNTIyNTQxMDA4
NUE1REIgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY1QTMwRjExMzUwMDdFMTAwQ0RC
NDlFIC8qIEpTVmFsdWVJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYw
OTEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTE0
MkQ2RjBEMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJrZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFENzY0NTIxMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZBRTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1NTEsNiArMjU1MCw3IEBACiAJCQkJMTRGOTc0NDcxMzhDODUz
RTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZCQjA5
QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
MkZGRDY0MTM5OTg1QTgwMEU1MzY1QSAvKiBLZXl3b3JkTG9va3VwLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxNEQyRjNEQjEzOUY0QkUyMDA0OTEwMzEgLyogTmV3U3BhY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjk5MywxMSArMjk5MywxMSBAQAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAv
KiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEZCOTg2RDEzNTIy
NTQxMDA4NUE1REIgLyogSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJENkYwODEzNTM5
QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQyRDZG
MEMxMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MkQ2RjExMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZBRTY0QTgxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTc5MzRCQjdDMTM2MTk3OTQwMENCOTlBMSAvKiBQYXJhbGxlbEpv
YnNHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAy
RiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0RDJGM0RBMTM5RjRCRTIw
MDQ5MTAzMSAvKiBOZXdTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDg4MzI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAi
SGFuZGxlSGVhcC5oIgogI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCiAjaW5jbHVkZSAiTWFya1N0
YWNrLmgiCi0jaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJOZXdTcGFjZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gODgzMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNCArMjEwLDQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIE1h
cmtlZFNwYWNlX2gKKyNlbmRpZiAvLyBNYXJrZWRCbG9ja19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiA4ODMyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNTQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
IENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJNYXJrZWRTcGFjZS5oIgotCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNs
dWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJKU0xvY2suaCIKLSNpbmNsdWRlICJKU09iamVjdC5o
IgotI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFN0
cnVjdHVyZTsKLQotTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCi0gICAgOiBt
X3dhdGVyTWFyaygwKQotICAgICwgbV9oaWdoV2F0ZXJNYXJrKDApCi0gICAgLCBtX2hlYXAoaGVh
cCkKLXsKLSAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8
IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQotICAgICAgICBzaXplQ2xh
c3NGb3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2VsbFNpemU7Ci0KLSAgICBmb3IgKHNpemVfdCBj
ZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgaW1wcmVjaXNlQ3V0b2ZmOyBjZWxs
U2l6ZSArPSBpbXByZWNpc2VTdGVwKQotICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLmNl
bGxTaXplID0gY2VsbFNpemU7Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OmRlc3Ryb3koKQotewot
ICAgIC8qIEtlZXAgb3VyIHByZWNpb3VzIHpvbWJpZXMhICovCi0jaWYgIUVOQUJMRShKU0NfWk9N
QklFUykKLSAgICBjbGVhck1hcmtzKCk7Ci0gICAgc2hyaW5rKCk7Ci0gICAgQVNTRVJUKCFzaXpl
KCkpOwotI2VuZGlmCi19Ci0KLU1hcmtlZEJsb2NrKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVCbG9j
ayhTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBNYXJr
ZWRCbG9jazo6Y3JlYXRlKG1faGVhcCwgc2l6ZUNsYXNzLmNlbGxTaXplKTsKLSAgICBzaXplQ2xh
c3MuYmxvY2tMaXN0LmFwcGVuZChibG9jayk7Ci0gICAgc2l6ZUNsYXNzLm5leHRCbG9jayA9IGJs
b2NrOwotICAgIG1fYmxvY2tzLmFkZChibG9jayk7Ci0KLSAgICByZXR1cm4gYmxvY2s7Ci19Ci0K
LXZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9ja3MoRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9j
az4mIGJsb2NrcykKLXsKLSAgICBNYXJrZWRCbG9jayogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJs
b2NrKiBibG9jayA9IGJsb2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAg
ICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7Ci0KLSAgICAgICAgYmxvY2tzLnJlbW92ZShibG9jayk7
Ci0gICAgICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7Ci0gICAgICAgIE1hcmtlZEJsb2NrOjpk
ZXN0cm95KGJsb2NrKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCi17
Ci0gICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGllcyB0byBhdm9pZCBt
b2RpZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgotICAgIERvdWJseUxpbmtlZExp
c3Q8TWFya2VkQmxvY2s+IGVtcHRpZXM7Ci0KLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxv
Y2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBNYXJrZWRCbG9jayogYmxvY2sgPSAqaXQ7Ci0g
ICAgICAgIGlmIChibG9jay0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBTaXplQ2xhc3MmIHNp
emVDbGFzcyA9IHNpemVDbGFzc0ZvcihibG9jay0+Y2VsbFNpemUoKSk7Ci0gICAgICAgICAgICBz
aXplQ2xhc3MuYmxvY2tMaXN0LnJlbW92ZShibG9jayk7Ci0gICAgICAgICAgICBzaXplQ2xhc3Mu
bmV4dEJsb2NrID0gc2l6ZUNsYXNzLmJsb2NrTGlzdC5oZWFkKCk7Ci0gICAgICAgICAgICBlbXB0
aWVzLmFwcGVuZChibG9jayk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgZnJlZUJsb2Nr
cyhlbXB0aWVzKTsKLSAgICBBU1NFUlQoZW1wdGllcy5pc0VtcHR5KCkpOwotfQotCi12b2lkIE1h
cmtlZFNwYWNlOjpjbGVhck1hcmtzKCkKLXsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxv
Y2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPmNsZWFyTWFya3MoKTsKLX0KLQotdm9p
ZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQotewotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9j
a3MuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+c3dlZXAoKTsKLX0KLQotc2l6ZV90IE1h
cmtlZFNwYWNlOjpvYmplY3RDb3VudCgpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IDA7
Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKLSAgICBmb3IgKEJsb2Nr
SXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
IHJlc3VsdCArPSAoKml0KS0+bWFya0NvdW50KCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
c2l6ZV90IE1hcmtlZFNwYWNlOjpzaXplKCkgY29uc3QKLXsKLSAgICBzaXplX3QgcmVzdWx0ID0g
MDsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgIGZvciAoQmxv
Y2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgcmVzdWx0ICs9ICgqaXQpLT5zaXplKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc2l6
ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0eSgpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IHJlc3VsdCA9
IDA7Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKLSAgICBmb3IgKEJs
b2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgIHJlc3VsdCArPSAoKml0KS0+Y2FwYWNpdHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci12b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcigpCi17Ci0gICAgbV93YXRlck1hcmsg
PSAwOwotCi0gICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2VsbFNpemUg
PCBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkKLSAgICAgICAgc2l6ZUNs
YXNzRm9yKGNlbGxTaXplKS5yZXNldEFsbG9jYXRvcigpOwotCi0gICAgZm9yIChzaXplX3QgY2Vs
bFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IGltcHJlY2lzZUN1dG9mZjsgY2VsbFNp
emUgKz0gaW1wcmVjaXNlU3RlcCkKLSAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS5yZXNl
dEFsbG9jYXRvcigpOwotCi0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsK
LSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgICgqaXQpLT5yZXNldEFsbG9jYXRvcigpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
cmV2aXNpb24gODgzMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICoKLSAqLwot
Ci0jaWZuZGVmIE1hcmtlZFNwYWNlX2gKLSNkZWZpbmUgTWFya2VkU3BhY2VfaAotCi0jaW5jbHVk
ZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCi0jaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKLSNpbmNs
dWRlICJQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCIKLSNpbmNsdWRlIDx3dGYvQml0bWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KLSNpbmNsdWRlIDx3dGYvRml4ZWRBcnJh
eS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0jZGVmaW5lIEFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoY2xhc3MpIENPTVBJTEVfQVNTRVJUKHNpemVvZihjbGFzcykgPCBNYXJrZWRTcGFj
ZTo6bWF4Q2VsbFNpemUsIGNsYXNzX2ZpdHNfaW5fY2VsbCkKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LSAgICBjbGFzcyBIZWFwOwotICAgIGNsYXNzIEpTQ2VsbDsKLSAgICBjbGFzcyBMaXZlT2JqZWN0
SXRlcmF0b3I7Ci0gICAgY2xhc3MgTWFya1N0YWNrOwotICAgIGNsYXNzIFdlYWtHQ0hhbmRsZTsK
LSAgICB0eXBlZGVmIE1hcmtTdGFjayBTbG90VmlzaXRvcjsKLQotICAgIGNsYXNzIE1hcmtlZFNw
YWNlIHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3BhY2UpOwotICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDZWxsU2l6ZSA9IDEwMjQ7Ci0K
LSAgICAgICAgc3RydWN0IFNpemVDbGFzcyB7Ci0gICAgICAgICAgICBTaXplQ2xhc3MoKTsKLSAg
ICAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKLQotICAgICAgICAgICAgTWFya2VkQmxv
Y2sqIG5leHRCbG9jazsKLSAgICAgICAgICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+
IGJsb2NrTGlzdDsKLSAgICAgICAgICAgIHNpemVfdCBjZWxsU2l6ZTsKLSAgICAgICAgfTsKLQot
ICAgICAgICBNYXJrZWRTcGFjZShIZWFwKik7Ci0gICAgICAgIHZvaWQgZGVzdHJveSgpOwotCi0g
ICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7Ci0gICAgICAgIHZvaWQgc2V0SGlnaFdhdGVy
TWFyayhzaXplX3QpOwotCi0gICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7
Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlKFNpemVDbGFzcyYpOwotCi0gICAgICAgIHZvaWQgY2xl
YXJNYXJrcygpOwotICAgICAgICB2b2lkIG1hcmtSb290cygpOwotICAgICAgICB2b2lkIHJlc2V0
QWxsb2NhdG9yKCk7Ci0gICAgICAgIHZvaWQgc3dlZXAoKTsKLSAgICAgICAgdm9pZCBzaHJpbmso
KTsKLQotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgICAgICBzaXplX3QgY2FwYWNp
dHkoKSBjb25zdDsKLSAgICAgICAgc2l6ZV90IG9iamVjdENvdW50KCkgY29uc3Q7Ci0KLSAgICAg
ICAgYm9vbCBjb250YWlucyhjb25zdCB2b2lkKik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1bmN0b3ImKTsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIC8vIFsgOCwgMTYuLi4gMTI4ICkKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVj
aXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBwcmVjaXNlQ3V0b2ZmID0gMTI4OwotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBy
ZWNpc2VDb3VudCA9IHByZWNpc2VDdXRvZmYgLyBwcmVjaXNlU3RlcCAtIDE7Ci0KLSAgICAgICAg
Ly8gWyAxMjgsIDI1Ni4uLiAxMDI0ICkKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbXBy
ZWNpc2VTdGVwID0gcHJlY2lzZUN1dG9mZjsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBp
bXByZWNpc2VDdXRvZmYgPSBtYXhDZWxsU2l6ZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBpbXByZWNpc2VDb3VudCA9IGltcHJlY2lzZUN1dG9mZiAvIGltcHJlY2lzZVN0ZXAgLSAxOwot
Ci0gICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOwotCi0gICAgICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKFNpemVDbGFzcyYp
OwotICAgICAgICB2b2lkIGZyZWVCbG9ja3MoRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4m
KTsKLQotICAgICAgICB2b2lkIGNsZWFyTWFya3MoTWFya2VkQmxvY2sqKTsKLQotICAgICAgICBT
aXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNsYXNzZXNbcHJlY2lzZUNvdW50XTsKLSAgICAgICAgU2l6
ZUNsYXNzIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaW1wcmVjaXNlQ291bnRdOwotICAgICAgICBI
YXNoU2V0PE1hcmtlZEJsb2NrKj4gbV9ibG9ja3M7Ci0gICAgICAgIHNpemVfdCBtX3dhdGVyTWFy
azsKLSAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFyazsKLSAgICAgICAgSGVhcCogbV9oZWFw
OwotICAgIH07Ci0KLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRTcGFjZTo6Y29udGFpbnMoY29uc3Qg
dm9pZCogeCkKLSAgICB7Ci0gICAgICAgIGlmICghTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQo
eCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgTWFya2VkQmxvY2sqIGJs
b2NrID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHgpOwotICAgICAgICBpZiAoIWJsb2NrIHx8ICFt
X2Jsb2Nrcy5jb250YWlucyhibG9jaykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoKEZ1bmN0b3Im
IGZ1bmN0b3IpCi0gICAgewotICAgICAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVu
ZCgpOwotICAgICAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAoKml0KS0+Zm9yRWFjaChmdW5jdG9yKTsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpoaWdoV2F0ZXJNYXJrKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2hpZ2hXYXRlck1hcms7Ci0gICAgfQotCi0gICAgaW5saW5l
IHZvaWQgTWFya2VkU3BhY2U6OnNldEhpZ2hXYXRlck1hcmsoc2l6ZV90IGhpZ2hXYXRlck1hcmsp
Ci0gICAgewotICAgICAgICBtX2hpZ2hXYXRlck1hcmsgPSBoaWdoV2F0ZXJNYXJrOwotICAgIH0K
LQotICAgIGlubGluZSBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBNYXJrZWRTcGFjZTo6c2l6ZUNs
YXNzRm9yKHNpemVfdCBieXRlcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChieXRlcyAmJiBieXRl
cyA8IG1heENlbGxTaXplKTsKLSAgICAgICAgaWYgKGJ5dGVzIDwgcHJlY2lzZUN1dG9mZikKLSAg
ICAgICAgICAgIHJldHVybiBtX3ByZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIHByZWNp
c2VTdGVwXTsKLSAgICAgICAgcmV0dXJuIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbKGJ5dGVzIC0g
MSkgLyBpbXByZWNpc2VTdGVwXTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCogTWFya2VkU3Bh
Y2U6OmFsbG9jYXRlKFNpemVDbGFzcyYgc2l6ZUNsYXNzKQotICAgIHsKLSAgICAgICAgZm9yIChN
YXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNsYXNzLm5leHRCbG9jayA7IGJsb2NrOyBibG9jayA9
IGJsb2NrLT5uZXh0KCkpIHsKLSAgICAgICAgICAgIGlmICh2b2lkKiByZXN1bHQgPSBibG9jay0+
YWxsb2NhdGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgICAg
ICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChtX3dhdGVyTWFyayA8IG1faGlnaFdhdGVyTWFyaykKLSAgICAgICAgICAgIHJldHVybiBh
bGxvY2F0ZUJsb2NrKHNpemVDbGFzcyktPmFsbG9jYXRlKCk7Ci0KLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgaW5saW5lIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OlNpemVDbGFzcygp
Ci0gICAgICAgIDogbmV4dEJsb2NrKDApCi0gICAgICAgICwgY2VsbFNpemUoMCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6cmVzZXRBbGxv
Y2F0b3IoKQotICAgIHsKLSAgICAgICAgbmV4dEJsb2NrID0gYmxvY2tMaXN0LmhlYWQoKTsKLSAg
ICB9Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gTWFya2VkU3BhY2VfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcAkocmV2aXNpb24gODgzMjgp
CShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcDo4ODMyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIFN0cnVjdHVyZTsKKworTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCisg
ICAgOiBtX3dhdGVyTWFyaygwKQorICAgICwgbV9oaWdoV2F0ZXJNYXJrKDApCisgICAgLCBtX2hl
YXAoaGVhcCkKK3sKKyAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxs
U2l6ZSA8IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQorICAgICAgICBz
aXplQ2xhc3NGb3IoY2VsbFNpemUpLmNlbGxTaXplID0gY2VsbFNpemU7CisKKyAgICBmb3IgKHNp
emVfdCBjZWxsU2l6ZSA9IGltcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgaW1wcmVjaXNlQ3V0b2Zm
OyBjZWxsU2l6ZSArPSBpbXByZWNpc2VTdGVwKQorICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNp
emUpLmNlbGxTaXplID0gY2VsbFNpemU7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmRlc3Ryb3ko
KQoreworICAgIC8qIEtlZXAgb3VyIHByZWNpb3VzIHpvbWJpZXMhICovCisjaWYgIUVOQUJMRShK
U0NfWk9NQklFUykKKyAgICBjbGVhck1hcmtzKCk7CisgICAgc2hyaW5rKCk7CisgICAgQVNTRVJU
KCFzaXplKCkpOworI2VuZGlmCit9CisKK01hcmtlZEJsb2NrKiBNYXJrZWRTcGFjZTo6YWxsb2Nh
dGVCbG9jayhTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyAgICBNYXJrZWRCbG9jayogYmxvY2sg
PSBNYXJrZWRCbG9jazo6Y3JlYXRlKG1faGVhcCwgc2l6ZUNsYXNzLmNlbGxTaXplKTsKKyAgICBz
aXplQ2xhc3MuYmxvY2tMaXN0LmFwcGVuZChibG9jayk7CisgICAgc2l6ZUNsYXNzLm5leHRCbG9j
ayA9IGJsb2NrOworICAgIG1fYmxvY2tzLmFkZChibG9jayk7CisKKyAgICByZXR1cm4gYmxvY2s7
Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9ja3MoRG91Ymx5TGlua2VkTGlzdDxNYXJr
ZWRCbG9jaz4mIGJsb2NrcykKK3sKKyAgICBNYXJrZWRCbG9jayogbmV4dDsKKyAgICBmb3IgKE1h
cmtlZEJsb2NrKiBibG9jayA9IGJsb2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9jayA9IG5leHQpIHsK
KyAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7CisKKyAgICAgICAgYmxvY2tzLnJlbW92ZShi
bG9jayk7CisgICAgICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7CisgICAgICAgIE1hcmtlZEJs
b2NrOjpkZXN0cm95KGJsb2NrKTsKKyAgICB9Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OnNocmlu
aygpCit7CisgICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGllcyB0byBh
dm9pZCBtb2RpZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgorICAgIERvdWJseUxp
bmtlZExpc3Q8TWFya2VkQmxvY2s+IGVtcHRpZXM7CisKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9
IG1fYmxvY2tzLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBNYXJrZWRCbG9jayogYmxvY2sgPSAq
aXQ7CisgICAgICAgIGlmIChibG9jay0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBTaXplQ2xh
c3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihibG9jay0+Y2VsbFNpemUoKSk7CisgICAgICAg
ICAgICBzaXplQ2xhc3MuYmxvY2tMaXN0LnJlbW92ZShibG9jayk7CisgICAgICAgICAgICBzaXpl
Q2xhc3MubmV4dEJsb2NrID0gc2l6ZUNsYXNzLmJsb2NrTGlzdC5oZWFkKCk7CisgICAgICAgICAg
ICBlbXB0aWVzLmFwcGVuZChibG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnJl
ZUJsb2NrcyhlbXB0aWVzKTsKKyAgICBBU1NFUlQoZW1wdGllcy5pc0VtcHR5KCkpOworfQorCit2
b2lkIE1hcmtlZFNwYWNlOjpjbGVhck1hcmtzKCkKK3sKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9
IG1fYmxvY2tzLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPmNsZWFyTWFya3MoKTsKK30K
Kwordm9pZCBNYXJrZWRTcGFjZTo6c3dlZXAoKQoreworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0g
bV9ibG9ja3MuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+c3dlZXAoKTsKK30KKworc2l6
ZV90IE1hcmtlZFNwYWNlOjpvYmplY3RDb3VudCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHJlc3Vs
dCA9IDA7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKKyAgICBmb3Ig
KEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgIHJlc3VsdCArPSAoKml0KS0+bWFya0NvdW50KCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc2l6ZV90IE1hcmtlZFNwYWNlOjpzaXplKCkgY29uc3QKK3sKKyAgICBzaXplX3QgcmVz
dWx0ID0gMDsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOworICAgIGZv
ciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgcmVzdWx0ICs9ICgqaXQpLT5zaXplKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc2l6ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0eSgpIGNvbnN0Cit7CisgICAgc2l6ZV90IHJl
c3VsdCA9IDA7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKKyAgICBm
b3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIHJlc3VsdCArPSAoKml0KS0+Y2FwYWNpdHkoKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcigpCit7CisgICAgbV93YXRl
ck1hcmsgPSAwOworCisgICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBwcmVjaXNlU3RlcDsgY2Vs
bFNpemUgPCBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkKKyAgICAgICAg
c2l6ZUNsYXNzRm9yKGNlbGxTaXplKS5yZXNldEFsbG9jYXRvcigpOworCisgICAgZm9yIChzaXpl
X3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IGltcHJlY2lzZUN1dG9mZjsg
Y2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkKKyAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXpl
KS5yZXNldEFsbG9jYXRvcigpOworCisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5l
bmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5yZXNldEFsbG9jYXRvcigpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5j
cHAJKHJldmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiTmV3U3BhY2Uu
aCIKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmgJKHJldmlzaW9uIDg4MzI4KQko
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oOjg4MzI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE3NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBNYXJrZWRTcGFjZV9o
CisjZGVmaW5lIE1hcmtlZFNwYWNlX2gKKworI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5o
IgorI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiUGFnZUFsbG9jYXRpb25BbGln
bmVkLmgiCisjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5r
ZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworI2RlZmluZSBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKGNsYXNzKSBDT01QSUxF
X0FTU0VSVChzaXplb2YoY2xhc3MpIDwgTWFya2VkU3BhY2U6Om1heENlbGxTaXplLCBjbGFzc19m
aXRzX2luX2NlbGwpCisKK25hbWVzcGFjZSBKU0MgeworCisgICAgY2xhc3MgSGVhcDsKKyAgICBj
bGFzcyBKU0NlbGw7CisgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIE1h
cmtTdGFjazsKKyAgICBjbGFzcyBXZWFrR0NIYW5kbGU7CisgICAgdHlwZWRlZiBNYXJrU3RhY2sg
U2xvdFZpc2l0b3I7CisKKyAgICBjbGFzcyBNYXJrZWRTcGFjZSB7CisgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE1hcmtlZFNwYWNlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbWF4Q2VsbFNpemUgPSAxMDI0OworCisgICAgICAgIHN0cnVjdCBTaXplQ2xh
c3MgeworICAgICAgICAgICAgU2l6ZUNsYXNzKCk7CisgICAgICAgICAgICB2b2lkIHJlc2V0QWxs
b2NhdG9yKCk7CisKKyAgICAgICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0QmxvY2s7CisgICAgICAg
ICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBibG9ja0xpc3Q7CisgICAgICAgICAg
ICBzaXplX3QgY2VsbFNpemU7CisgICAgICAgIH07CisKKyAgICAgICAgTWFya2VkU3BhY2UoSGVh
cCopOworICAgICAgICB2b2lkIGRlc3Ryb3koKTsKKworICAgICAgICBzaXplX3QgaGlnaFdhdGVy
TWFyaygpOworICAgICAgICB2b2lkIHNldEhpZ2hXYXRlck1hcmsoc2l6ZV90KTsKKworICAgICAg
ICBTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOworICAgICAgICB2b2lkKiBhbGxvY2F0
ZShTaXplQ2xhc3MmKTsKKworICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsKKyAgICAgICAgdm9p
ZCBtYXJrUm9vdHMoKTsKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRvcigpOworICAgICAgICB2
b2lkIHN3ZWVwKCk7CisgICAgICAgIHZvaWQgc2hyaW5rKCk7CisKKyAgICAgICAgc2l6ZV90IHNp
emUoKSBjb25zdDsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3Q7CisgICAgICAgIHNp
emVfdCBvYmplY3RDb3VudCgpIGNvbnN0OworCisgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3Qg
dm9pZCopOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFj
aChGdW5jdG9yJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICAvLyBbIDgsIDE2Li4uIDEyOCAp
CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6
YXRvbVNpemU7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDEy
ODsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ291bnQgPSBwcmVjaXNlQ3V0
b2ZmIC8gcHJlY2lzZVN0ZXAgLSAxOworCisgICAgICAgIC8vIFsgMTI4LCAyNTYuLi4gMTAyNCAp
CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlU3RlcCA9IHByZWNpc2VDdXRv
ZmY7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ3V0b2ZmID0gbWF4Q2Vs
bFNpemU7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW1wcmVjaXNlQ291bnQgPSBpbXBy
ZWNpc2VDdXRvZmYgLyBpbXByZWNpc2VTdGVwIC0gMTsKKworICAgICAgICB0eXBlZGVmIEhhc2hT
ZXQ8TWFya2VkQmxvY2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRvcjsKKworICAgICAgICBNYXJr
ZWRCbG9jayogYWxsb2NhdGVCbG9jayhTaXplQ2xhc3MmKTsKKyAgICAgICAgdm9pZCBmcmVlQmxv
Y2tzKERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+Jik7CisKKyAgICAgICAgdm9pZCBjbGVh
ck1hcmtzKE1hcmtlZEJsb2NrKik7CisKKyAgICAgICAgU2l6ZUNsYXNzIG1fcHJlY2lzZVNpemVD
bGFzc2VzW3ByZWNpc2VDb3VudF07CisgICAgICAgIFNpemVDbGFzcyBtX2ltcHJlY2lzZVNpemVD
bGFzc2VzW2ltcHJlY2lzZUNvdW50XTsKKyAgICAgICAgSGFzaFNldDxNYXJrZWRCbG9jayo+IG1f
YmxvY2tzOworICAgICAgICBzaXplX3QgbV93YXRlck1hcms7CisgICAgICAgIHNpemVfdCBtX2hp
Z2hXYXRlck1hcms7CisgICAgICAgIEhlYXAqIG1faGVhcDsKKyAgICB9OworCisgICAgaW5saW5l
IGJvb2wgTWFya2VkU3BhY2U6OmNvbnRhaW5zKGNvbnN0IHZvaWQqIHgpCisgICAgeworICAgICAg
ICBpZiAoIU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9j
a0Zvcih4KTsKKyAgICAgICAgaWYgKCFibG9jayB8fCAhbV9ibG9ja3MuY29udGFpbnMoYmxvY2sp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAg
ICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKKyAgICAgICAgZm9yIChCbG9j
a0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICAgICAgKCppdCktPmZvckVhY2goZnVuY3Rvcik7CisgICAgfQorCisgICAgaW5saW5lIHNpemVf
dCBNYXJrZWRTcGFjZTo6aGlnaFdhdGVyTWFyaygpCisgICAgeworICAgICAgICByZXR1cm4gbV9o
aWdoV2F0ZXJNYXJrOworICAgIH0KKworICAgIGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpzZXRI
aWdoV2F0ZXJNYXJrKHNpemVfdCBoaWdoV2F0ZXJNYXJrKQorICAgIHsKKyAgICAgICAgbV9oaWdo
V2F0ZXJNYXJrID0gaGlnaFdhdGVyTWFyazsKKyAgICB9CisKKyAgICBpbmxpbmUgTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcyYgTWFya2VkU3BhY2U6OnNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMpCisg
ICAgeworICAgICAgICBBU1NFUlQoYnl0ZXMgJiYgYnl0ZXMgPCBtYXhDZWxsU2l6ZSk7CisgICAg
ICAgIGlmIChieXRlcyA8IHByZWNpc2VDdXRvZmYpCisgICAgICAgICAgICByZXR1cm4gbV9wcmVj
aXNlU2l6ZUNsYXNzZXNbKGJ5dGVzIC0gMSkgLyBwcmVjaXNlU3RlcF07CisgICAgICAgIHJldHVy
biBtX2ltcHJlY2lzZVNpemVDbGFzc2VzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07Cisg
ICAgfQorCisgICAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTaXplQ2xhc3Mm
IHNpemVDbGFzcykKKyAgICB7CisgICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9IHNp
emVDbGFzcy5uZXh0QmxvY2sgOyBibG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7CisgICAg
ICAgICAgICBpZiAodm9pZCogcmVzdWx0ID0gYmxvY2stPmFsbG9jYXRlKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICAgICAgbV93YXRlck1hcmsgKz0gYmxvY2st
PmNhcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV93YXRlck1hcmsgPCBtX2hp
Z2hXYXRlck1hcmspCisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVCbG9jayhzaXplQ2xhc3Mp
LT5hbGxvY2F0ZSgpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlubGluZSBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpTaXplQ2xhc3MoKQorICAgICAgICA6IG5leHRCbG9jaygw
KQorICAgICAgICAsIGNlbGxTaXplKDApCisgICAgeworICAgIH0KKworICAgIGlubGluZSB2b2lk
IE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OnJlc2V0QWxsb2NhdG9yKCkKKyAgICB7CisgICAgICAg
IG5leHRCbG9jayA9IGJsb2NrTGlzdC5oZWFkKCk7CisgICAgfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIE1hcmtlZFNwYWNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL05ld1NwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTmV3U3BhY2UuaAkocmV2aXNpb24gODgzMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9OZXdTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw4ICsxOSw4IEBACiAgKgogICov
CiAKLSNpZm5kZWYgTWFya2VkU3BhY2VfaAotI2RlZmluZSBNYXJrZWRTcGFjZV9oCisjaWZuZGVm
IE5ld1NwYWNlX2gKKyNkZWZpbmUgTmV3U3BhY2VfaAogCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNr
TWFya2VyLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKQEAgLTE3MSw0ICsxNzEsNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZiAvLyBNYXJrZWRT
cGFjZV9oCisjZW5kaWYgLy8gTmV3U3BhY2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96387</attachid>
            <date>2011-06-07 23:28:27 -0700</date>
            <delta_ts>2011-06-08 07:16:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62268-20110607232826.patch</filename>
            <type>text/plain</type>
            <size>34726</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODgzMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTEtMDYtMDcgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBNYXJrZWRTcGFj
ZS4qIHRvIE5ld1NwYWNlLiogaW4gcHJlcGFyYXRpb24gZm9yIG1vcmUgcmVuYW1pbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMjY4CisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJv
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtl
ZEJsb2NrLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvTmV3U3Bh
Y2UuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5jcHAuCisgICAgICAgICogaGVhcC9OZXdTcGFjZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oLgorCiAyMDExLTA2LTA3ICBHZW9mZnJleSBH
YXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1
bnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4ODMy
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAv
SGFuZGxlU3RhY2suY3BwCiAgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCiAgICAgaGVh
cC9NYXJrZWRCbG9jay5jcHAKLSAgICBoZWFwL01hcmtlZFNwYWNlLmNwcAorICAgIGhlYXAvTmV3
U3BhY2UuY3BwCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKICAgICBoZWFwL01hcmtT
dGFjay5jcHAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTExNyw4ICsxMTcsOCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0
b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIFwKLQlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNl
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWsuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA4ODMyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjIsOCArMzIyLDggQEAKICAgICAgICAgICAgICdoZWFwL0hlYXBSb290VmlzaXRv
ci5oJywKICAgICAgICAgICAgICdoZWFwL01hcmtlZEJsb2NrLmNwcCcsCiAgICAgICAgICAgICAn
aGVhcC9NYXJrZWRCbG9jay5oJywKLSAgICAgICAgICAgICdoZWFwL01hcmtlZFNwYWNlLmNwcCcs
Ci0gICAgICAgICAgICAnaGVhcC9NYXJrZWRTcGFjZS5oJywKKyAgICAgICAgICAgICdoZWFwL05l
d1NwYWNlLmNwcCcsCisgICAgICAgICAgICAnaGVhcC9OZXdTcGFjZS5oJywKICAgICAgICAgICAg
ICdkZWJ1Z2dlci9EZWJ1Z2dlci5jcHAnLAogICAgICAgICAgICAgJ2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmNwcCcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJl
dmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
bwkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAgXAogICAgIGhlYXAvTWFya1N0YWNrLmNwcCBcCiAgICAg
aGVhcC9NYXJrZWRCbG9jay5jcHAgXAotICAgIGhlYXAvTWFya2VkU3BhY2UuY3BwIFwKKyAgICBo
ZWFwL05ld1NwYWNlLmNwcCBcCiAgICAgZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBc
CiAgICAgZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDg4MzIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4OTgsMTEgKzE4OTgsMTEgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxNYXJr
ZWRTcGFjZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2
ZVBhdGg9Ii4uXC4uXGhlYXBcTmV3U3BhY2UuY3BwIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXE1hcmtlZFNwYWNlLmgiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcTmV3
U3BhY2UuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4ODMyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBACiAJCTE0MkQzOTM5MTAz
RTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRDM5MzgxMDNFNDU2MDAwN0RDQjUyIC8qIE51bWVy
aWNTdHJpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQyRDZGMDgxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkQ2RjA2MTM1MzlBMjgw
MEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi87IH07CiAJCTE0MkQ2RjA5MTM1MzlBMjgwMEIw
MkU4NiAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTQyRDZGMEMx
MzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkQ2RjBBMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJr
ZWRTcGFjZS5jcHAgKi87IH07Ci0JCTE0MkQ2RjBEMTM1MzlBMkYwMEIwMkU4NiAvKiBNYXJrZWRT
cGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQy
RDZGMEIxMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyRDZGMTExMzUzOUE0MTAwQjAyRTg2
IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDJENkYwRTEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLzsgfTsK
IAkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2
IC8qIE1hcmtTdGFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MkUzMTM0MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkUzMTJCMTM0RkYwQTYwMEFG
QURCNSAvKiBIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTg1LDYgKzE4Myw4IEBACiAJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCAqLzsgfTsK
IAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NF
IC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZGNDAw
MDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMTREMkYzREExMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDJGM0Q4MTM5
RjRCRTIwMDQ5MTAzMSAvKiBOZXdTcGFjZS5jcHAgKi87IH07CisJCTE0RDJGM0RCMTM5RjRCRTIw
MDQ5MTAzMSAvKiBOZXdTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRFOUQxN0IxMDdF
QzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0Qx
MiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTE0RjhCQTNFMTA3RUM4
ODYwMDk4OTJEQyAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I5MDhFN0VFQ0MwMDIzRTVGNiAvKiBGYXN0TWFsbG9j
LmNwcCAqLzsgfTsKIAkJMTRGOEJBNDMxMDdFQzg4QzAwOTg5MkRDIC8qIFRDU3lzdGVtQWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0MUJE
NzAwOEU4MEExNzAwMkNCRUU3IC8qIFRDU3lzdGVtQWxsb2MuY3BwICovOyB9OwpAQCAtNzQzLDgg
Kzc0Myw2IEBACiAJCTE0MkQzOTM4MTAzRTQ1NjAwMDdEQ0I1MiAvKiBOdW1lcmljU3RyaW5ncy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOdW1lcmljU3RyaW5ncy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDJENkYwNjEzNTM5QTI4MDBCMDJFODYgLyogTWFy
a2VkQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2Vk
QmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDJENkYwNzEzNTM5QTI4
MDBCMDJFODYgLyogTWFya2VkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFya2VkQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQyRDZGMEEx
MzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hcmtlZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMTQyRDZGMEIxMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MkQ2RjBFMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya1N0YWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtT
dGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrU3RhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyRTMxMkIxMzRGRjBBNjAwQUZBREI1IC8qIEhh
bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMyw2ICs4MTEsOCBAQAogCQkxNEJENUEyQjBBM0U5
MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNWYWx1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmM7IG5hbWUgPSB0ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyog
V2Vha0dDTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtHQ01hcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEQyRjNEODEzOUY0QkUyMDA0OTEwMzEg
LyogTmV3U3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3
U3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEQyRjNEOTEzOUY0QkUy
MDA0OTEwMzEgLyogTmV3U3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV3U3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRENzkyNjQwREFBMDNG
QjAwMUE5RjA1IC8qIFJlZ2lzdGVyRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdpc3RlckZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREODU3
NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IG5hbWUgPSB0ZXN0YXBpLmpzOyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAv
KiBKU0FjdGl2YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBY3Rp
dmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDk5LDEwICsxNDk5LDEw
IEBACiAJCQkJMTRCNzIzNDAxMkQ3RDBEQTAwM0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5o
ICovLAogCQkJCTE0MkQ2RjA2MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5jcHAgKi8s
CiAJCQkJMTQyRDZGMDcxMzUzOUEyODAwQjAyRTg2IC8qIE1hcmtlZEJsb2NrLmggKi8sCi0JCQkJ
MTQyRDZGMEExMzUzOUEyRjAwQjAyRTg2IC8qIE1hcmtlZFNwYWNlLmNwcCAqLywKLQkJCQkxNDJE
NkYwQjEzNTM5QTJGMDBCMDJFODYgLyogTWFya2VkU3BhY2UuaCAqLywKIAkJCQkxNDJENkYwRTEz
NTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmNwcCAqLywKIAkJCQkxNDJENkYwRjEzNTM5QTQx
MDBCMDJFODYgLyogTWFya1N0YWNrLmggKi8sCisJCQkJMTREMkYzRDgxMzlGNEJFMjAwNDkxMDMx
IC8qIE5ld1NwYWNlLmNwcCAqLywKKwkJCQkxNEQyRjNEOTEzOUY0QkUyMDA0OTEwMzEgLyogTmV3
U3BhY2UuaCAqLywKIAkJCQkxNDJFMzEzMjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggKi8s
CiAJCQkJMTQyRTMxMzMxMzRGRjBBNjAwQUZBREI1IC8qIFdlYWsuaCAqLywKIAkJCSk7CkBAIC0y
NTM2LDcgKzI1MzYsNiBAQAogCQkJCTE0RkI5ODZFMTM1MjI1NDEwMDg1QTVEQiAvKiBIZWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNWYWx1ZUlu
bGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4
NiAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTQyRDZGMEQxMzUzOUEyRjAw
QjAyRTg2IC8qIE1hcmtlZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5
QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUQ3NjQ1MjEz
NTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFFNjRB
OTEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjU1MSw2ICsyNTUwLDcgQEAKIAkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVh
cFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkJCMDlDMTEzOEUzODFCMDA1Njcw
MkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyRkZENjQxMzk5ODVBODAw
RTUzNjVBIC8qIEtleXdvcmRMb29rdXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RDJGM0RCMTM5
RjRCRTIwMDQ5MTAzMSAvKiBOZXdTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTkzLDExICsy
OTkzLDExIEBACiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVj
a2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RkI5ODZEMTM1MjI1NDEwMDg1QTVEQiAvKiBI
ZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkQ2RjA4MTM1MzlBMjgwMEIwMkU4NiAvKiBN
YXJrZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDJENkYwQzEzNTM5QTJGMDBCMDJF
ODYgLyogTWFya2VkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRDZGMTExMzUzOUE0
MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkFFNjRBODEz
NUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNzkzNEJCN0MxMzYxOTc5NDAwQ0I5OUExIC8qIFBhcmFsbGVsSm9ic0dlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTREMkYzREExMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1Nw
YWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
cmV2aXNpb24gODgzMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJIYW5kbGVIZWFwLmgiCiAj
aW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKICNpbmNsdWRlICJNYXJrU3RhY2suaCIKLSNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIk5ld1NwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CShyZXZpc2lvbiA4ODMyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw0ICsyMTAsNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8gTWFya2VkU3BhY2VfaAorI2Vu
ZGlmIC8vIE1hcmtlZEJsb2NrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDg4MzI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NCArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1hcmtlZFNwYWNl
LmgiCi0KLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTQ2VsbC5oIgot
I2luY2x1ZGUgIkpTTG9jay5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiU2Nv
cGVDaGFpbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgU3RydWN0dXJlOwotCi1NYXJr
ZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKLSAgICA6IG1fd2F0ZXJNYXJrKDApCi0g
ICAgLCBtX2hpZ2hXYXRlck1hcmsoMCkKLSAgICAsIG1faGVhcChoZWFwKQotewotICAgIGZvciAo
c2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgcHJlY2lzZUN1dG9mZjsg
Y2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSku
Y2VsbFNpemUgPSBjZWxsU2l6ZTsKLQotICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVj
aXNlU3RlcDsgY2VsbFNpemUgPCBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGltcHJlY2lz
ZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuY2VsbFNpemUgPSBjZWxsU2l6
ZTsKLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6ZGVzdHJveSgpCi17Ci0gICAgLyogS2VlcCBvdXIg
cHJlY2lvdXMgem9tYmllcyEgKi8KLSNpZiAhRU5BQkxFKEpTQ19aT01CSUVTKQotICAgIGNsZWFy
TWFya3MoKTsKLSAgICBzaHJpbmsoKTsKLSAgICBBU1NFUlQoIXNpemUoKSk7Ci0jZW5kaWYKLX0K
LQotTWFya2VkQmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKFNpemVDbGFzcyYgc2l6
ZUNsYXNzKQotewotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUo
bV9oZWFwLCBzaXplQ2xhc3MuY2VsbFNpemUpOwotICAgIHNpemVDbGFzcy5ibG9ja0xpc3QuYXBw
ZW5kKGJsb2NrKTsKLSAgICBzaXplQ2xhc3MubmV4dEJsb2NrID0gYmxvY2s7Ci0gICAgbV9ibG9j
a3MuYWRkKGJsb2NrKTsKLQotICAgIHJldHVybiBibG9jazsKLX0KLQotdm9pZCBNYXJrZWRTcGFj
ZTo6ZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiYgYmxvY2tzKQotewot
ICAgIE1hcmtlZEJsb2NrKiBuZXh0OwotICAgIGZvciAoTWFya2VkQmxvY2sqIGJsb2NrID0gYmxv
Y2tzLmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gYmxvY2st
Pm5leHQoKTsKLQotICAgICAgICBibG9ja3MucmVtb3ZlKGJsb2NrKTsKLSAgICAgICAgbV9ibG9j
a3MucmVtb3ZlKGJsb2NrKTsKLSAgICAgICAgTWFya2VkQmxvY2s6OmRlc3Ryb3koYmxvY2spOwot
ICAgIH0KLX0KLQotdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKLXsKLSAgICAvLyBXZSByZWNv
cmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBlbXB0aWVzIHRvIGF2b2lkIG1vZGlmeWluZyBtX2Jsb2Nr
cyB3aGlsZSBpdGVyYXRpbmcgaXQuCi0gICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4g
ZW1wdGllczsKLQotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7Ci0gICAg
Zm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9ICppdDsKLSAgICAgICAgaWYgKGJsb2Nr
LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNs
YXNzRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKTsKLSAgICAgICAgICAgIHNpemVDbGFzcy5ibG9ja0xp
c3QucmVtb3ZlKGJsb2NrKTsKLSAgICAgICAgICAgIHNpemVDbGFzcy5uZXh0QmxvY2sgPSBzaXpl
Q2xhc3MuYmxvY2tMaXN0LmhlYWQoKTsKLSAgICAgICAgICAgIGVtcHRpZXMuYXBwZW5kKGJsb2Nr
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBmcmVlQmxvY2tzKGVtcHRpZXMpOwotICAg
IEFTU0VSVChlbXB0aWVzLmlzRW1wdHkoKSk7Ci19Ci0KLXZvaWQgTWFya2VkU3BhY2U6OmNsZWFy
TWFya3MoKQotewotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7Ci0gICAg
Zm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICAoKml0KS0+Y2xlYXJNYXJrcygpOwotfQotCi12b2lkIE1hcmtlZFNwYWNlOjpz
d2VlcCgpCi17Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsKLSAgICBm
b3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgICgqaXQpLT5zd2VlcCgpOwotfQotCi1zaXplX3QgTWFya2VkU3BhY2U6Om9iamVj
dENvdW50KCkgY29uc3QKLXsKLSAgICBzaXplX3QgcmVzdWx0ID0gMDsKLSAgICBCbG9ja0l0ZXJh
dG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1f
YmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgcmVzdWx0ICs9ICgqaXQp
LT5tYXJrQ291bnQoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zaXplX3QgTWFya2VkU3Bh
Y2U6OnNpemUoKSBjb25zdAotewotICAgIHNpemVfdCByZXN1bHQgPSAwOwotICAgIEJsb2NrSXRl
cmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0g
bV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICByZXN1bHQgKz0gKCpp
dCktPnNpemUoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zaXplX3QgTWFya2VkU3BhY2U6
OmNhcGFjaXR5KCkgY29uc3QKLXsKLSAgICBzaXplX3QgcmVzdWx0ID0gMDsKLSAgICBCbG9ja0l0
ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9
IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgcmVzdWx0ICs9ICgq
aXQpLT5jYXBhY2l0eSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgTWFya2VkU3Bh
Y2U6OnJlc2V0QWxsb2NhdG9yKCkKLXsKLSAgICBtX3dhdGVyTWFyayA9IDA7Ci0KLSAgICBmb3Ig
KHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IHByZWNpc2VDdXRvZmY7
IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQotICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUp
LnJlc2V0QWxsb2NhdG9yKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGltcHJlY2lz
ZVN0ZXA7IGNlbGxTaXplIDwgaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VT
dGVwKQotICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLnJlc2V0QWxsb2NhdG9yKCk7Ci0K
LSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgIGZvciAoQmxvY2tJ
dGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
KCppdCktPnJlc2V0QWxsb2NhdG9yKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiA4ODMyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTc0ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpZm5kZWYgTWFya2Vk
U3BhY2VfaAotI2RlZmluZSBNYXJrZWRTcGFjZV9oCi0KLSNpbmNsdWRlICJNYWNoaW5lU3RhY2tN
YXJrZXIuaCIKLSNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgotI2luY2x1ZGUgIlBhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5oIgotI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KLSNpbmNsdWRlIDx3dGYvRG91
Ymx5TGlua2VkTGlzdC5oPgotI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLSNkZWZpbmUgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChjbGFzcykg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKGNsYXNzKSA8IE1hcmtlZFNwYWNlOjptYXhDZWxsU2l6ZSwg
Y2xhc3NfZml0c19pbl9jZWxsKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIEhlYXA7
Ci0gICAgY2xhc3MgSlNDZWxsOwotICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKLSAgICBj
bGFzcyBNYXJrU3RhY2s7Ci0gICAgY2xhc3MgV2Vha0dDSGFuZGxlOwotICAgIHR5cGVkZWYgTWFy
a1N0YWNrIFNsb3RWaXNpdG9yOwotCi0gICAgY2xhc3MgTWFya2VkU3BhY2UgewotICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFjZSk7Ci0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IG1heENlbGxTaXplID0gMTAyNDsKLQotICAgICAgICBzdHJ1Y3Qg
U2l6ZUNsYXNzIHsKLSAgICAgICAgICAgIFNpemVDbGFzcygpOwotICAgICAgICAgICAgdm9pZCBy
ZXNldEFsbG9jYXRvcigpOwotCi0gICAgICAgICAgICBNYXJrZWRCbG9jayogbmV4dEJsb2NrOwot
ICAgICAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gYmxvY2tMaXN0OwotICAg
ICAgICAgICAgc2l6ZV90IGNlbGxTaXplOwotICAgICAgICB9OwotCi0gICAgICAgIE1hcmtlZFNw
YWNlKEhlYXAqKTsKLSAgICAgICAgdm9pZCBkZXN0cm95KCk7Ci0KLSAgICAgICAgc2l6ZV90IGhp
Z2hXYXRlck1hcmsoKTsKLSAgICAgICAgdm9pZCBzZXRIaWdoV2F0ZXJNYXJrKHNpemVfdCk7Ci0K
LSAgICAgICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKLSAgICAgICAgdm9pZCog
YWxsb2NhdGUoU2l6ZUNsYXNzJik7Ci0KLSAgICAgICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAg
ICAgIHZvaWQgbWFya1Jvb3RzKCk7Ci0gICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKLSAg
ICAgICAgdm9pZCBzd2VlcCgpOwotICAgICAgICB2b2lkIHNocmluaygpOwotCi0gICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3Q7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0OwotICAg
ICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKSBjb25zdDsKLQotICAgICAgICBib29sIGNvbnRhaW5z
KGNvbnN0IHZvaWQqKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IGZvckVhY2goRnVuY3RvciYpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gWyA4LCAxNi4u
LiAxMjggKQotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2Vk
QmxvY2s6OmF0b21TaXplOwotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRv
ZmYgPSAxMjg7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUNvdW50ID0gcHJl
Y2lzZUN1dG9mZiAvIHByZWNpc2VTdGVwIC0gMTsKLQotICAgICAgICAvLyBbIDEyOCwgMjU2Li4u
IDEwMjQgKQotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZVN0ZXAgPSBwcmVj
aXNlQ3V0b2ZmOwotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZUN1dG9mZiA9
IG1heENlbGxTaXplOwotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGltcHJlY2lzZUNvdW50
ID0gaW1wcmVjaXNlQ3V0b2ZmIC8gaW1wcmVjaXNlU3RlcCAtIDE7Ci0KLSAgICAgICAgdHlwZWRl
ZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7Ci0KLSAgICAg
ICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soU2l6ZUNsYXNzJik7Ci0gICAgICAgIHZvaWQg
ZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiYpOwotCi0gICAgICAgIHZv
aWQgY2xlYXJNYXJrcyhNYXJrZWRCbG9jayopOwotCi0gICAgICAgIFNpemVDbGFzcyBtX3ByZWNp
c2VTaXplQ2xhc3Nlc1twcmVjaXNlQ291bnRdOwotICAgICAgICBTaXplQ2xhc3MgbV9pbXByZWNp
c2VTaXplQ2xhc3Nlc1tpbXByZWNpc2VDb3VudF07Ci0gICAgICAgIEhhc2hTZXQ8TWFya2VkQmxv
Y2sqPiBtX2Jsb2NrczsKLSAgICAgICAgc2l6ZV90IG1fd2F0ZXJNYXJrOwotICAgICAgICBzaXpl
X3QgbV9oaWdoV2F0ZXJNYXJrOwotICAgICAgICBIZWFwKiBtX2hlYXA7Ci0gICAgfTsKLQotICAg
IGlubGluZSBib29sIE1hcmtlZFNwYWNlOjpjb250YWlucyhjb25zdCB2b2lkKiB4KQotICAgIHsK
LSAgICAgICAgaWYgKCFNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZCh4KSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBNYXJrZWRCbG9j
azo6YmxvY2tGb3IoeCk7Ci0gICAgICAgIGlmICghYmxvY2sgfHwgIW1fYmxvY2tzLmNvbnRhaW5z
KGJsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2goRnVuY3RvciYgZnVuY3RvcikKLSAgICB7
Ci0gICAgICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7Ci0gICAgICAgIGZv
ciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgICAgICgqaXQpLT5mb3JFYWNoKGZ1bmN0b3IpOwotICAgIH0KLQotICAgIGlubGlu
ZSBzaXplX3QgTWFya2VkU3BhY2U6OmhpZ2hXYXRlck1hcmsoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1faGlnaFdhdGVyTWFyazsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6c2V0SGlnaFdhdGVyTWFyayhzaXplX3QgaGlnaFdhdGVyTWFyaykKLSAgICB7Ci0gICAgICAg
IG1faGlnaFdhdGVyTWFyayA9IGhpZ2hXYXRlck1hcms7Ci0gICAgfQotCi0gICAgaW5saW5lIE1h
cmtlZFNwYWNlOjpTaXplQ2xhc3MmIE1hcmtlZFNwYWNlOjpzaXplQ2xhc3NGb3Ioc2l6ZV90IGJ5
dGVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGJ5dGVzICYmIGJ5dGVzIDwgbWF4Q2VsbFNpemUp
OwotICAgICAgICBpZiAoYnl0ZXMgPCBwcmVjaXNlQ3V0b2ZmKQotICAgICAgICAgICAgcmV0dXJu
IG1fcHJlY2lzZVNpemVDbGFzc2VzWyhieXRlcyAtIDEpIC8gcHJlY2lzZVN0ZXBdOwotICAgICAg
ICByZXR1cm4gbV9pbXByZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0
ZXBdOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoU2l6
ZUNsYXNzJiBzaXplQ2xhc3MpCi0gICAgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxv
Y2sgPSBzaXplQ2xhc3MubmV4dEJsb2NrIDsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkg
ewotICAgICAgICAgICAgaWYgKHZvaWQqIHJlc3VsdCA9IGJsb2NrLT5hbGxvY2F0ZSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgICAgIG1fd2F0ZXJNYXJrICs9
IGJsb2NrLT5jYXBhY2l0eSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1fd2F0ZXJNYXJr
IDwgbV9oaWdoV2F0ZXJNYXJrKQotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlQmxvY2soc2l6
ZUNsYXNzKS0+YWxsb2NhdGUoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6U2l6ZUNsYXNzKCkKLSAgICAgICAgOiBuZXh0
QmxvY2soMCkKLSAgICAgICAgLCBjZWxsU2l6ZSgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgdm9pZCBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpyZXNldEFsbG9jYXRvcigpCi0gICAgewot
ICAgICAgICBuZXh0QmxvY2sgPSBibG9ja0xpc3QuaGVhZCgpOwotICAgIH0KLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBNYXJrZWRTcGFjZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwCShyZXZpc2lvbiA4ODMyOCkJKGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwOjg4MzI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU0
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCisKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2Vs
bC5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJlOwor
CitNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKKyAgICA6IG1fd2F0ZXJNYXJr
KDApCisgICAgLCBtX2hpZ2hXYXRlck1hcmsoMCkKKyAgICAsIG1faGVhcChoZWFwKQoreworICAg
IGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgcHJlY2lzZUN1
dG9mZjsgY2VsbFNpemUgKz0gcHJlY2lzZVN0ZXApCisgICAgICAgIHNpemVDbGFzc0ZvcihjZWxs
U2l6ZSkuY2VsbFNpemUgPSBjZWxsU2l6ZTsKKworICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0g
aW1wcmVjaXNlU3RlcDsgY2VsbFNpemUgPCBpbXByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IGlt
cHJlY2lzZVN0ZXApCisgICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuY2VsbFNpemUgPSBj
ZWxsU2l6ZTsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZGVzdHJveSgpCit7CisgICAgLyogS2Vl
cCBvdXIgcHJlY2lvdXMgem9tYmllcyEgKi8KKyNpZiAhRU5BQkxFKEpTQ19aT01CSUVTKQorICAg
IGNsZWFyTWFya3MoKTsKKyAgICBzaHJpbmsoKTsKKyAgICBBU1NFUlQoIXNpemUoKSk7CisjZW5k
aWYKK30KKworTWFya2VkQmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKFNpemVDbGFz
cyYgc2l6ZUNsYXNzKQoreworICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpj
cmVhdGUobV9oZWFwLCBzaXplQ2xhc3MuY2VsbFNpemUpOworICAgIHNpemVDbGFzcy5ibG9ja0xp
c3QuYXBwZW5kKGJsb2NrKTsKKyAgICBzaXplQ2xhc3MubmV4dEJsb2NrID0gYmxvY2s7CisgICAg
bV9ibG9ja3MuYWRkKGJsb2NrKTsKKworICAgIHJldHVybiBibG9jazsKK30KKwordm9pZCBNYXJr
ZWRTcGFjZTo6ZnJlZUJsb2NrcyhEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiYgYmxvY2tz
KQoreworICAgIE1hcmtlZEJsb2NrKiBuZXh0OworICAgIGZvciAoTWFya2VkQmxvY2sqIGJsb2Nr
ID0gYmxvY2tzLmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgeworICAgICAgICBuZXh0ID0g
YmxvY2stPm5leHQoKTsKKworICAgICAgICBibG9ja3MucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAg
bV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgTWFya2VkQmxvY2s6OmRlc3Ryb3koYmxv
Y2spOworICAgIH0KK30KKwordm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKK3sKKyAgICAvLyBX
ZSByZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBlbXB0aWVzIHRvIGF2b2lkIG1vZGlmeWluZyBt
X2Jsb2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQuCisgICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRC
bG9jaz4gZW1wdGllczsKKworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7
CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9ICppdDsKKyAgICAgICAgaWYg
KGJsb2NrLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzID0g
c2l6ZUNsYXNzRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKTsKKyAgICAgICAgICAgIHNpemVDbGFzcy5i
bG9ja0xpc3QucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgICAgIHNpemVDbGFzcy5uZXh0QmxvY2sg
PSBzaXplQ2xhc3MuYmxvY2tMaXN0LmhlYWQoKTsKKyAgICAgICAgICAgIGVtcHRpZXMuYXBwZW5k
KGJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmcmVlQmxvY2tzKGVtcHRpZXMp
OworICAgIEFTU0VSVChlbXB0aWVzLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6
OmNsZWFyTWFya3MoKQoreworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7
CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAoKml0KS0+Y2xlYXJNYXJrcygpOworfQorCit2b2lkIE1hcmtlZFNw
YWNlOjpzd2VlcCgpCit7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5lbmQoKTsK
KyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCisgICAgICAgICgqaXQpLT5zd2VlcCgpOworfQorCitzaXplX3QgTWFya2VkU3BhY2U6
Om9iamVjdENvdW50KCkgY29uc3QKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBCbG9j
a0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBp
dCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgcmVzdWx0ICs9
ICgqaXQpLT5tYXJrQ291bnQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgTWFy
a2VkU3BhY2U6OnNpemUoKSBjb25zdAoreworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIEJs
b2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9y
IGl0ID0gbV9ibG9ja3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICByZXN1bHQg
Kz0gKCppdCktPnNpemUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzaXplX3QgTWFya2Vk
U3BhY2U6OmNhcGFjaXR5KCkgY29uc3QKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBC
bG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRv
ciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgcmVzdWx0
ICs9ICgqaXQpLT5jYXBhY2l0eSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgTWFy
a2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9yKCkKK3sKKyAgICBtX3dhdGVyTWFyayA9IDA7CisKKyAg
ICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IHByZWNpc2VD
dXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKQorICAgICAgICBzaXplQ2xhc3NGb3IoY2Vs
bFNpemUpLnJlc2V0QWxsb2NhdG9yKCk7CisKKyAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IGlt
cHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXBy
ZWNpc2VTdGVwKQorICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLnJlc2V0QWxsb2NhdG9y
KCk7CisKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLmVuZCgpOworICAgIGZvciAo
QmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgKCppdCktPnJlc2V0QWxsb2NhdG9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcAkocmV2aXNpb24gODgz
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDcgKzE5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJOZXdTcGFjZS5oIgogCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTmV3U3BhY2UuaAkocmV2aXNpb24gODgzMjgpCShmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmg6ODgzMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9OZXdTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc0IEBACisv
KgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICoKKyAqLworCisjaWZuZGVmIE1hcmtlZFNwYWNlX2gKKyNkZWZpbmUgTWFya2Vk
U3BhY2VfaAorCisjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCisjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKKyNpbmNsdWRlICJQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCIKKyNpbmNsdWRl
IDx3dGYvQml0bWFwLmg+CisjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KKyNpbmNs
dWRlIDx3dGYvRml4ZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjZGVmaW5l
IEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoY2xhc3MpIENPTVBJTEVfQVNTRVJUKHNpemVvZihj
bGFzcykgPCBNYXJrZWRTcGFjZTo6bWF4Q2VsbFNpemUsIGNsYXNzX2ZpdHNfaW5fY2VsbCkKKwor
bmFtZXNwYWNlIEpTQyB7CisKKyAgICBjbGFzcyBIZWFwOworICAgIGNsYXNzIEpTQ2VsbDsKKyAg
ICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTWFya1N0YWNrOworICAgIGNs
YXNzIFdlYWtHQ0hhbmRsZTsKKyAgICB0eXBlZGVmIE1hcmtTdGFjayBTbG90VmlzaXRvcjsKKwor
ICAgIGNsYXNzIE1hcmtlZFNwYWNlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFy
a2VkU3BhY2UpOworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhD
ZWxsU2l6ZSA9IDEwMjQ7CisKKyAgICAgICAgc3RydWN0IFNpemVDbGFzcyB7CisgICAgICAgICAg
ICBTaXplQ2xhc3MoKTsKKyAgICAgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKTsKKworICAg
ICAgICAgICAgTWFya2VkQmxvY2sqIG5leHRCbG9jazsKKyAgICAgICAgICAgIERvdWJseUxpbmtl
ZExpc3Q8TWFya2VkQmxvY2s+IGJsb2NrTGlzdDsKKyAgICAgICAgICAgIHNpemVfdCBjZWxsU2l6
ZTsKKyAgICAgICAgfTsKKworICAgICAgICBNYXJrZWRTcGFjZShIZWFwKik7CisgICAgICAgIHZv
aWQgZGVzdHJveSgpOworCisgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CisgICAgICAg
IHZvaWQgc2V0SGlnaFdhdGVyTWFyayhzaXplX3QpOworCisgICAgICAgIFNpemVDbGFzcyYgc2l6
ZUNsYXNzRm9yKHNpemVfdCk7CisgICAgICAgIHZvaWQqIGFsbG9jYXRlKFNpemVDbGFzcyYpOwor
CisgICAgICAgIHZvaWQgY2xlYXJNYXJrcygpOworICAgICAgICB2b2lkIG1hcmtSb290cygpOwor
ICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CisgICAgICAgIHZvaWQgc3dlZXAoKTsKKyAg
ICAgICAgdm9pZCBzaHJpbmsoKTsKKworICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAg
ICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdDsKKyAgICAgICAgc2l6ZV90IG9iamVjdENvdW50
KCkgY29uc3Q7CisKKyAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCB2b2lkKik7CisKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1bmN0b3ImKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIC8vIFsgOCwgMTYuLi4gMTI4ICkKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMTI4OworICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDb3VudCA9IHByZWNpc2VDdXRvZmYgLyBwcmVjaXNlU3Rl
cCAtIDE7CisKKyAgICAgICAgLy8gWyAxMjgsIDI1Ni4uLiAxMDI0ICkKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBpbXByZWNpc2VTdGVwID0gcHJlY2lzZUN1dG9mZjsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDdXRvZmYgPSBtYXhDZWxsU2l6ZTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBpbXByZWNpc2VDb3VudCA9IGltcHJlY2lzZUN1dG9mZiAvIGlt
cHJlY2lzZVN0ZXAgLSAxOworCisgICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+
OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOworCisgICAgICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0
ZUJsb2NrKFNpemVDbGFzcyYpOworICAgICAgICB2b2lkIGZyZWVCbG9ja3MoRG91Ymx5TGlua2Vk
TGlzdDxNYXJrZWRCbG9jaz4mKTsKKworICAgICAgICB2b2lkIGNsZWFyTWFya3MoTWFya2VkQmxv
Y2sqKTsKKworICAgICAgICBTaXplQ2xhc3MgbV9wcmVjaXNlU2l6ZUNsYXNzZXNbcHJlY2lzZUNv
dW50XTsKKyAgICAgICAgU2l6ZUNsYXNzIG1faW1wcmVjaXNlU2l6ZUNsYXNzZXNbaW1wcmVjaXNl
Q291bnRdOworICAgICAgICBIYXNoU2V0PE1hcmtlZEJsb2NrKj4gbV9ibG9ja3M7CisgICAgICAg
IHNpemVfdCBtX3dhdGVyTWFyazsKKyAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFyazsKKyAg
ICAgICAgSGVhcCogbV9oZWFwOworICAgIH07CisKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRTcGFj
ZTo6Y29udGFpbnMoY29uc3Qgdm9pZCogeCkKKyAgICB7CisgICAgICAgIGlmICghTWFya2VkQmxv
Y2s6OmlzQXRvbUFsaWduZWQoeCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgTWFya2VkQmxvY2sqIGJsb2NrID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKHgpOworICAgICAg
ICBpZiAoIWJsb2NrIHx8ICFtX2Jsb2Nrcy5jb250YWlucyhibG9jaykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNl
Ojpmb3JFYWNoKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBCbG9ja0l0ZXJhdG9y
IGVuZCA9IG1fYmxvY2tzLmVuZCgpOworICAgICAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBt
X2Jsb2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAoKml0KS0+Zm9y
RWFjaChmdW5jdG9yKTsKKyAgICB9CisKKyAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpo
aWdoV2F0ZXJNYXJrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hpZ2hXYXRlck1hcms7Cisg
ICAgfQorCisgICAgaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OnNldEhpZ2hXYXRlck1hcmsoc2l6
ZV90IGhpZ2hXYXRlck1hcmspCisgICAgeworICAgICAgICBtX2hpZ2hXYXRlck1hcmsgPSBoaWdo
V2F0ZXJNYXJrOworICAgIH0KKworICAgIGlubGluZSBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBN
YXJrZWRTcGFjZTo6c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykKKyAgICB7CisgICAgICAgIEFT
U0VSVChieXRlcyAmJiBieXRlcyA8IG1heENlbGxTaXplKTsKKyAgICAgICAgaWYgKGJ5dGVzIDwg
cHJlY2lzZUN1dG9mZikKKyAgICAgICAgICAgIHJldHVybiBtX3ByZWNpc2VTaXplQ2xhc3Nlc1so
Ynl0ZXMgLSAxKSAvIHByZWNpc2VTdGVwXTsKKyAgICAgICAgcmV0dXJuIG1faW1wcmVjaXNlU2l6
ZUNsYXNzZXNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKKyAgICB9CisKKyAgICBpbmxp
bmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKFNpemVDbGFzcyYgc2l6ZUNsYXNzKQorICAg
IHsKKyAgICAgICAgZm9yIChNYXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNsYXNzLm5leHRCbG9j
ayA7IGJsb2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmICh2b2lk
KiByZXN1bHQgPSBibG9jay0+YWxsb2NhdGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworCisgICAgICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtX3dhdGVyTWFyayA8IG1faGlnaFdhdGVyTWFyaykKKyAg
ICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcyktPmFsbG9jYXRlKCk7CisK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaW5saW5lIE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3M6OlNpemVDbGFzcygpCisgICAgICAgIDogbmV4dEJsb2NrKDApCisgICAgICAgICwgY2Vs
bFNpemUoMCkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OlNp
emVDbGFzczo6cmVzZXRBbGxvY2F0b3IoKQorICAgIHsKKyAgICAgICAgbmV4dEJsb2NrID0gYmxv
Y2tMaXN0LmhlYWQoKTsKKyAgICB9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
TWFya2VkU3BhY2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTmV3U3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9OZXdTcGFjZS5oCShy
ZXZpc2lvbiA4ODMyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDggQEAKICAqCiAgKi8KIAotI2lmbmRlZiBNYXJr
ZWRTcGFjZV9oCi0jZGVmaW5lIE1hcmtlZFNwYWNlX2gKKyNpZm5kZWYgTmV3U3BhY2VfaAorI2Rl
ZmluZSBOZXdTcGFjZV9oCiAKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNs
dWRlICJNYXJrZWRCbG9jay5oIgpAQCAtMTcxLDQgKzE3MSw0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmIC8vIE1hcmtlZFNwYWNlX2gKKyNlbmRpZiAv
LyBOZXdTcGFjZV9oCg==
</data>
<flag name="review"
          id="90061"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>