<?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>51359</bug_id>
          
          <creation_ts>2010-12-20 15:55:14 -0800</creation_ts>
          <short_desc>Added PageAllocationAligned, a cross-platform abstraction for memory allocations with arbitrary alignment requirements</short_desc>
          <delta_ts>2010-12-21 16:00:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</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>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>324612</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-20 15:55:14 -0800</bug_when>
    <thetext>Added PageAllocationAligned, a cross-platform abstraction for memory allocations with arbitrary alignment requirements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324660</commentid>
    <comment_count>1</comment_count>
      <attachid>77055</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-20 16:50:52 -0800</bug_when>
    <thetext>Created attachment 77055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324661</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-20 16:52:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/8107952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324666</commentid>
    <comment_count>3</comment_count>
      <attachid>77055</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-20 17:06:27 -0800</bug_when>
    <thetext>Comment on attachment 77055
Patch

might be nice to remove m_trueBase on DARWIN, it&apos;s not really needed.  your call, r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324691</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-20 18:43:46 -0800</bug_when>
    <thetext>I sat down to remove m_trueBase on DARWIN and realized that it would be more involved than just an #ifdef around the data member -- to satisfy unused parameter warnings, you&apos;d either need to give DARWIN its own constructor, or you&apos;d need to #ifdef out a portion of the shared constructor and #ifdef in an UNUSED_PARAM warning.

My gut says to stick with the simpler solution, since we&apos;re only talking about 4-8 bytes in an allocation that&apos;s &gt;= 4K.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324696</commentid>
    <comment_count>5</comment_count>
      <attachid>77063</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-20 18:56:18 -0800</bug_when>
    <thetext>Created attachment 77063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324698</commentid>
    <comment_count>6</comment_count>
      <attachid>77063</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-20 18:58:41 -0800</bug_when>
    <thetext>Comment on attachment 77063
Patch

Here&apos;s an updated version of the patch with project file conflicts resolved.

Unfortunately, I&apos;m not going to have time to land this before I leave for vacation. 

I&apos;d sure appreciate it if a WebKit committer (human or robot!) could land this for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324699</commentid>
    <comment_count>7</comment_count>
      <attachid>77063</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-20 19:00:00 -0800</bug_when>
    <thetext>Comment on attachment 77063
Patch

Rejecting attachment 77063 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;apply-attachment&apos;, &apos;--non-interactive&apos;, 77063]&quot; exit_code: 2
Last 500 characters of output:
ned.cpp
patching file JavaScriptCore/wtf/PageAllocationAligned.h
patching file JavaScriptCore/wtf/Platform.h
patching file JavaScriptCore/wtf/wtf.pri
patching file JavaScriptGlue/ChangeLog
patching file JavaScriptGlue/ForwardingHeaders/wtf/PageAllocationAligned.h
patching file WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebCore/ForwardingHeaders/wtf/PageAllocationAligned.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7248073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324708</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-20 19:13:19 -0800</bug_when>
    <thetext>Attachment 77063 did not build on chromium:
Build output: http://queues.webkit.org/results/7295083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324713</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-20 19:21:37 -0800</bug_when>
    <thetext>Attachment 77063 did not build on qt:
Build output: http://queues.webkit.org/results/7245069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324755</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-20 20:38:53 -0800</bug_when>
    <thetext>Attachment 77063 did not build on gtk:
Build output: http://queues.webkit.org/results/7263078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324780</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-20 21:43:25 -0800</bug_when>
    <thetext>Attachment 77063 did not build on win:
Build output: http://queues.webkit.org/results/7249084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325229</commentid>
    <comment_count>12</comment_count>
      <attachid>77157</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-21 15:20:18 -0800</bug_when>
    <thetext>Created attachment 77157
Cleaned up, fixed build errors, cleaned up WINCE extra decommit, re-added check for successful release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325237</commentid>
    <comment_count>13</comment_count>
      <attachid>77157</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-12-21 15:36:26 -0800</bug_when>
    <thetext>Comment on attachment 77157
Cleaned up, fixed build errors, cleaned up WINCE extra decommit, re-added check for successful release.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325248</commentid>
    <comment_count>14</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-21 15:55:21 -0800</bug_when>
    <thetext>Oh, also, that patch fixed a bug in Geoff&apos;s last revision – deallocate() on non-DARWIN platforms was releasing &apos;size&apos; bytes of memory, but be needed to release the amount we had reserved.

Fixed in r74431.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325250</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-21 16:00:41 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74431 might have broken SnowLeopard Intel Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77055</attachid>
            <date>2010-12-20 16:50:52 -0800</date>
            <delta_ts>2010-12-20 18:56:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51359-20101220165050.patch</filename>
            <type>text/plain</type>
            <size>43445</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0Mzc0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTAtMTItMjAgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBQYWdlQWxsb2NhdGlvbkFsaWduZWQsIGEgY3Jvc3Mt
cGxhdGZvcm0gYWJzdHJhY3Rpb24gZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoIGFyYml0cmFy
eSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MTM1OQorICAgICAgICAKKyAgICAgICAgSSB0aGluayB0aGlzIHBh
dGNoIGZpeGVzIDxyZGFyOi8vcHJvYmxlbS84MTA3OTUyPiBbNS4wLjFdIFdFUiBjcmFzaCBpbgor
ICAgICAgICBIZWFwOjphbGxvY2F0ZUJsb2NrICgxOTAyNzUyOTI5KSwgYW5kIHNvbWUgb3RoZXIg
bGVha3MgYW5kIGNyYXNoZXMgYXMgd2VsbC4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
V1RGL1dURi52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogVXBkYXRlZCBidWlsZCBmaWxlcy4KKworICAgICAgICAqIHJ1bnRpbWUvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oOiBSZW1vdmVkLiBTdXBwbGFudGVkIGJ5CisgICAgICAgIFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZC4KKworICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9j
YXRlQmxvY2spOgorICAgICAgICAoSlNDOjpIZWFwOjpmcmVlQmxvY2spOgorICAgICAgICAoSlND
OjpIZWFwOjphZGRXZWFrR0NIYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6
IFN3aXRjaGVkIGZyb20gQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB0bworICAgICAgICBQYWdlQWxs
b2NhdGlvbkFsaWduZWQuCisKKyAgICAgICAgKiBydW50aW1lL0dDSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0dDSGFuZGxlLmg6IERpdHRvLgorCisgICAgICAgICogd3RmL1BhZ2VBbGxv
Y2F0aW9uLmg6CisgICAgICAgIChXVEY6OlBhZ2VBbGxvY2F0aW9uOjpQYWdlQWxsb2NhdGlvbik6
IFJlbW92ZWQgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbgorICAgICAgICBmdW5jdGlvbnMuIFN1
cHBsYW50ZWQgYnkgUGFnZUFsbG9jYXRpb25BbGlnbmVkLgorCisgICAgICAgICogd3RmL1BhZ2VB
bGxvY2F0aW9uQWxpZ25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlv
bkFsaWduZWQ6OmFsbG9jYXRlKToKKyAgICAgICAgKFdURjo6UGFnZUFsbG9jYXRpb25BbGlnbmVk
OjpkZWFsbG9jYXRlKToKKyAgICAgICAgKiB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCk6IE5ldyBjcm9zcy1wbGF0Zm9ybQorICAgICAgICBjbGFzcyBmb3IgZG9pbmcgYWxp
Z25lZCBtZW1vcnkgYWxsb2NhdGlvbi4gVGhpcyBjbGFzcyBwcm9wZXJseSBtYXRjaGVzCisgICAg
ICAgIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBsaWJyYXJ5IGNhbGxzLCBmaXhpbmcgYSBs
b25nLXN0YW5kaW5nIGJ1ZworICAgICAgICBpbiBQYWdlQWxsb2NhdGlvbi4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOiBSZW1vdmVkIHNvbWUgZGVmdW5jdGlvbiBWTSBwbGF0Zm9ybSBkZWZp
bmVzLgorCisgICAgICAgICogd3RmL3d0Zi5wcmk6IFVwZGF0ZWQgYnVpbGQgZmlsZXMuCisKIDIw
MTAtMTItMjAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9sdmVyIEh1bnQuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BbmRy
b2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9u
IDc0MzU3KQorKysgSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDYgKzE2Miw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL0Zhc3RNYWxsb2MuY3Bw
IFwKIAl3dGYvSGFzaFRhYmxlLmNwcCBcCiAJd3RmL01haW5UaHJlYWQuY3BwIFwKKwl3dGYvUGFn
ZUFsbG9jYXRpb25BbGlnbmVkLmNwcFwKIAl3dGYvUGFnZUJsb2NrLmNwcFwKIAl3dGYvUmFuZG9t
TnVtYmVyLmNwcCBcCiAJd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXApJbmRleDogSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDc0MzU3KQorKysgSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBTRVQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIHlhcnIvUmVnZXhKSVQuY3BwCiAKICAgICB3dGYvRGF0ZU1hdGgu
Y3BwCisgICAgd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAKICAgICB3dGYvUGFnZUJsb2Nr
LmNwcAogKQogU0VUKEphdmFTY3JpcHRDb3JlX0hFQURFUlMgKQpJbmRleDogSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0JKHJldmlzaW9uIDc0MzU3KQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyLmggXAotCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIFwKIAlKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwIFwKQEAgLTQ3Niw4ICs0NzUsMTEgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL093blB0ckNvbW1vbi5oIFwKIAlKYXZhU2NyaXB0Q29y
ZS93dGYvT3duUHRyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbi5oIFwK
KwlKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBcCisJSmF2YVNj
cmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIFwKIAlKYXZhU2NyaXB0Q29yZS93
dGYvUGFnZVJlc2VydmF0aW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suY3Bw
IFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUJsb2NrLmggXAogCUphdmFTY3JpcHRDb3JlL3d0
Zi9QYXNzT3duQXJyYXlQdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25QdHIuaCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NSZWZQdHIuaCBcCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDc0MzU3KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw2IEBACiAgICAgICAg
ICAgICAncHJvZmlsZXIvUHJvZmlsZXIuY3BwJywKICAgICAgICAgICAgICdwcm9maWxlci9Qcm9m
aWxlci5oJywKICAgICAgICAgICAgICdwcm9maWxlci9Qcm9maWxlclNlcnZlci5oJywKLSAgICAg
ICAgICAgICdydW50aW1lL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCcsCiAgICAgICAgICAgICAn
cnVudGltZS9BcmdMaXN0LmNwcCcsCiAgICAgICAgICAgICAncnVudGltZS9BcmdMaXN0LmgnLAog
ICAgICAgICAgICAgJ3J1bnRpbWUvQXJndW1lbnRzLmNwcCcsCkBAIC00MDgsNiArNDA3LDggQEAK
ICAgICAgICAgICAgICd3dGYvT3duUHRyQ29tbW9uLmgnLAogICAgICAgICAgICAgJ3d0Zi9QYWdl
QmxvY2suY3BwJywKICAgICAgICAgICAgICd3dGYvUGFnZUFsbG9jYXRpb24uaCcsCisgICAgICAg
ICAgICAnd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9Q
YWdlQWxsb2NhdGlvbkFsaWduZWQuaCcsCiAgICAgICAgICAgICAnd3RmL1BhZ2VSZXNlcnZhdGlv
bicsCiAgICAgICAgICAgICAnd3RmL1Bhc3NPd25QdHIuaCcsCiAgICAgICAgICAgICAnd3RmL1Bh
c3NSZWZQdHIuaCcsCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
V1RGL1dURi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL1dURi9XVEYudmNwcm9qCShyZXZpc2lvbiA3NDM1NykKKysrIEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtNzAxLDEwICs3MDEsMjIgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlx3dGZcUGFnZUJsb2NrLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUK
IAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFBhZ2VBbGxvY2F0aW9uLmgiCiAJCQk+CiAJCTwv
RmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZC5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5cd3RmXFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxG
aWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxQYWdlUmVzZXJ2YXRpb24uaCIKIAkJCT4K
IAkJPC9GaWxlPgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NDM1NykKKysrIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE3NCw2ICsxNzQsOCBAQAogCQkxNEY4QkEzRTEwN0VDODg2MDA5ODkyREMg
LyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUUyMTdCOTA4RTdFRUNDMDAyM0U1RjYgLyogRmFzdE1hbGxvYy5jcHAgKi87IH07
CiAJCTE0RjhCQTQzMTA3RUM4OEMwMDk4OTJEQyAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDFCRDcwMDhFODBBMTcw
MDJDQkVFNyAvKiBUQ1N5c3RlbUFsbG9jLmNwcCAqLzsgfTsKIAkJMTRGOEJBNEYxMDdFQzg5OTAw
OTg5MkRDIC8qIENvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNjkyQTg1MjAyNTU1OTdEMDFGRjYwRjcgLyogQ29sbGVjdG9yLmNwcCAq
LzsgfTsKKwkJMTRGRkY5OEMxMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZG
Rjk4QTEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCAqLzsgfTsK
KwkJMTRGRkY5OEQxMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkY5OEIxMkJG
RkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE4MEI5QjA4MEYxNkQ5NEYwMDlCREJD
NSAvKiBDdXJyZW50VGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTgwQjlBRjAwRjE2QzU2OTAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTgwQjlCRkUwRjE2
RTk0RDAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4MEI5QUVGMEYxNkM1NjkwMDlCREJDNSAvKiBDdXJyZW50
VGltZS5jcHAgKi87IH07CiAJCTE4QkFCNTUzMTBEQUUwNTQwMDBEOTQ1QiAvKiBUaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE4QkFCNTI3MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVy
RGF0YVB0aHJlYWRzLmNwcCAqLzsgfTsKQEAgLTUzNyw4ICs1MzksNiBAQAogCQlCQ0ZEOEM5MjBF
RUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFi
bGUuY3BwICovOyB9OwogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5MTBF
RUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87IH07CiAJCUMwQTI3MjYzMEU1MEEwNjMw
MEU5NkUxNSAvKiBOb3RGb3VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJREQyNzI0NjgxMjA4
RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAv
KiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IH07Ci0JCUREMjcyNDY5MTIwOEQxRkYwMEY5
QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDI3MjQ2NzEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUREMzc3Q0JDMTIwNzJDMTgwMDZBMjUxNyAvKiBCaXRtYXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMzc3Q0JCMTIwNzJDMTgw
MDZBMjUxNyAvKiBCaXRtYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlEREU4MkFEMzEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDExMjA5
RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCAqLzsgfTsKIAkJRERFODJBRDQxMjA5RDk1NTAw
NUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgKi87
IH07CkBAIC03MzUsNiArNzM1LDggQEAKIAkJMTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpT
R2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
R2xvYmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGMjUyNTYw
RDA4REQ4RDAwNEVDRkZGIC8qIEpTVmFyaWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNWYXJpYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNEYzNDg4RTBFOTVFRjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvckhlYXBJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEZGRjk4QTEyQkZGRjc1MDA3OTVC
QjggLyogUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTE0RkZGOThCMTJCRkZGNzUwMDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFs
aWduZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUFsbG9jYXRpb25B
bGlnbmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE4MEI5QUVGMEYxNkM1Njkw
MDlCREJDNSAvKiBDdXJyZW50VGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDdXJyZW50VGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE4
MEI5QUYwMEYxNkM1NjkwMDlCREJDNSAvKiBDdXJyZW50VGltZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDdXJyZW50VGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxOEJBQjUyNzEwREFERkNEMDAwRDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
MjQsNyArMTEyNiw2IEBACiAJCUMwQTI3MjNGMEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RGb3VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZl
cnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb252
ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjkwQUQ0MzEw
QzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRlQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
RDI3MjQ2NzEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREMzc3Q0JCMTIwNzJDMTgwMDZBMjUxNyAvKiBC
aXRtYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0hhbmRsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURERTgyQUQyMTIwOUQ5NTUwMDVDMTc1
NiAvKiBHQ0hhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0hhbmRs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzOSw2ICsxNTQwLDggQEAKIAkJ
CQk5MzAzRjU2NzA5OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8sCiAJCQkJNDQwQjdBRUQw
RkFGN0ZDQjAwNzMzMjNFIC8qIE93blB0ckNvbW1vbi5oICovLAogCQkJCTg2MjdFNUVBMTFGMTI4
MTkwMEEzMTNCNSAvKiBQYWdlQWxsb2NhdGlvbi5oICovLAorCQkJCTE0RkZGOThBMTJCRkZGNzUw
MDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwICovLAorCQkJCTE0RkZGOThCMTJC
RkZGNzUwMDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCAqLywKIAkJCQkxNEIzRUYw
NDEyQkMyNEREMDBEMjlFRkYgLyogUGFnZUJsb2NrLmNwcCAqLywKIAkJCQkxNEIzRUYwMzEyQkMy
NEREMDBEMjlFRkYgLyogUGFnZUJsb2NrLmggKi8sCiAJCQkJODY5MDIzMTQxMjA5MkQ1QzAwNjMw
QUY5IC8qIFBhZ2VSZXNlcnZhdGlvbi5oICovLApAQCAtMTY1MSw3ICsxNjU0LDYgQEAKIAkJN0VG
NkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmggKi8sCiAJCQkJRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJCURERjdBQkQzMTFGNjBFRDIwMDEwOEUzNiAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuY3BwICovLApAQCAtMjA0Myw3ICsyMDQ1LDYgQEAKIAkJCQkxNDQwMDc1
NzBBNTM3MEQyMDAwNUYwNjEgLyogSlNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0
MDA1Q0MwQTUzMzhGODAwMDVGMDYxIC8qIE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAw
NzRBMEE1MzZDQzIwMDA1RjA2MSAvKiBOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREQy
NzI0NjgxMjA4RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCURERTgyQUQ2MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CkBAIC0yMzQ5LDcgKzIzNTAsNiBAQAogCQkJCTg2RDA4RDU0MTE3OTM2MTMwMDZFNUVEMCAv
KiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAx
RDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEREY3QUJENDExRjYw
RUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlE
RDI3MjQ2OTEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRERFODJBRDgxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkYzODg1OTEyMTEzMENBMDA3QTdDRTMgLyogQXRvbWljU3RyaW5n
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyQUY0QjYxMjIzOUM3QjAwMjRFNUI4IC8qIERl
Y2ltYWxOdW1iZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjM2OCw2ICsyMzY4LDcgQEAKIAkJCQlG
M0JEMzFFRDEyNjczNTc3MDA2NTQ2N0YgLyogVGV4dFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0QjNFRjA1MTJCQzI0REQwMEQyOUVGRiAvKiBQYWdlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTE0RkZGOThEMTJCRkZGNzUwMDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFs
aWduZWQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjY0OSw2ICsyNjUwLDcgQEAKIAkJCQkxNDdGMzlC
RDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdG
MzlCRTEwN0VDMzc2MDA0MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTc0REUxRDAxMjBCODc1NjAwRDQwRDVCIC8qIEFSTXY3QXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJGMTA3RUMzNzYwMDQyN0E0OCAvKiBBcnJheUNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMwMTA3RUMzNzYwMDQyN0E0OCAv
KiBBcnJheVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUZERTQ5QzBCREQxRDRB
MDBFODAxMTEgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2NzcsNiArMjY3
OSw3IEBACiAJCQkJMTQyODA4MjMxMDdFQzAyQzAwMTNFN0IyIC8qIERlYnVnZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMzEzNTY1MEYzMDJGQTMwMDNERkQzQSAvKiBEZWJ1Z2dlckFjdGl2
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ5NTU5RUUwRERDRERGNzAwNjQ4MDg3IC8q
IERlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMjk0NzlDMTI2RTY5
OEMwMEIzQUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5
REQ3MTA3RUM3OUUwMDY1MDQ0NiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0Yz
OUM3MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdG
MzlDODEwN0VDMzc2MDA0MjdBNDggLyogRXJyb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI2ODksNiArMjY5Miw4IEBACiAJCQkJMTRGOEJBM0UxMDdFQzg4NjAwOTg5MkRDIC8q
IEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0IxMDdFQzM3NjAwNDI3
QTQ4IC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
Q0MxMDdFQzM3NjAwNDI3QTQ4IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCURERjdBQkQ1MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlEREU4MkFENzEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTUxMDdFQzBFNzAwMTNFN0IyIC8qIEdl
dHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRDEwN0VDMzc2MDA0MjdB
NDggLyogR2xvYmFsRXZhbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REZDOTMz
MDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzUz
LDYgKzI3NTgsNyBAQAogCQkJCUE3QzUzMEU0MTAyQTM4MTMwMDVCQzc0MSAvKiBNYXJrU3RhY2tQ
b3NpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURERjEwN0VDN0U3MDA2NTA0NDYgLyog
TWF0aE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTFGQzRDOTExN0VFMjg3MDA0MjUy
NzIgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJG
MyAvKiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REUwMTA3
RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDY5REUxMTA3RUM3RTcwMDY1MDQ0NiAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY1LDYgKzI3NzEsMTAgQEAKIAkJCQlFMTI0QThGODBF
NTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTY5QTA3OUEwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxNEZGRjk4QzEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9j
YXRpb25BbGlnbmVkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0QjNFRjA2MTJCQzI0REQwMEQy
OUVGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcxNEFGNUUxMjJGMzIw
NzAwOTJEOUY1IC8qIFBhcnNlZFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEw
N0VDNTREMDA0MkVDMkMgLyogUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0
MEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzA3NTRDMTA4QjBGNjgwMDBBQjMwNTYgLyogcGNyZV9jb21waWxlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjc5Nyw2ICsyODA3LDggQEAKIAkJCQkxNDQ2OURFQTEwN0VDN0U3MDA2NTA0NDYgLyog
U2NvcGVDaGFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQkYyOEEyOTExQTMzREMzMDA2MzhG
ODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3NjQw
MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MzBCNjEz
MTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk4NjQzOEZDNDEyNjU1MDNFMDBFMERGQ0EgLyogU3RyaW5nQnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMEUxMTdDRUZEMTAwQjkwOEIxIC8q
IFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUMxMDdFQzdFNzAwNjUw
NDQ2IC8qIFN0cmluZ09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MTIsMjEgKzI4MjQs
MTEgQEAKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNGMEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0
Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJERTMg
LyogVHlwZVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzE0QUY0NjEyMkYyODg1MDA5
MkQ5RjUgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERUUxMDdF
QzdFNzAwNjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRjc5QUEw
Q0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMTcx
MTdDRjE5OTAwQjkwOEIxIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQw
OEQ1MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3NERFMUQwMTIwQjg3NTYwMEQ0MEQ1QiAvKiBBUk12
N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NzE0QUY0NjEyMkYyODg1MDA5MkQ5
RjUgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTcxNEFGNUUxMjJGMzIw
NzAwOTJEOUY1IC8qIFBhcnNlZFVSTC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MDIxM0UzRDEy
M0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJODY0MzhGQzQxMjY1NTAzRTAwRTBERkNBIC8qIFN0cmluZ0J1aWxk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYyOTQ3OUMxMjZFNjk4QzAwQjNBQkY1IC8qIERl
Y2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQwMDA2OTMxMkE2RjlFMTAwNjRE
MTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTRCM0VGMDYx
MkJDMjRERDAwRDI5RUZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCShyZXZp
c2lvbiA3NDM1NikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzOSArMCwwIEBACi0vKgotICogIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKLSAqCi0gKi8KLQotI2lmbmRlZiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yX2gK
LSNkZWZpbmUgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcl9oCi0KLSNpbmNsdWRlIDx3dGYvQml0bWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL1BhZ2VSZXNlcnZhdGlvbi5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotc3RydWN0IEFsaWduZWRNZW1vcnlBbGxvY2F0b3JDb25zdGFudHMgewotLy8gU2V0IHNhbmUg
ZGVmYXVsdHMgaWYgLUQ8ZmxhZ25hbWU9dmFsdWU+IHdhc24ndCBwcm92aWRlZCB2aWEgY29tcGls
ZXIgYXJncwotI2lmIGRlZmluZWQoSlNDQ09MTEVDVE9SX1ZJUlRVQUxNRU1fUkVTRVJWQVRJT04p
Ci0gICAgLy8gS2VlcCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHN5bWJpYW4gYnVpbGQg
c3lzdGVtCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCB2aXJ0dWFsTWVtb3J5UmVzZXJ2YXRpb24g
PSBKU0NDT0xMRUNUT1JfVklSVFVBTE1FTV9SRVNFUlZBVElPTjsKLSNlbGlmIGRlZmluZWQoX19X
SU5TX18pCi0gICAgLy8gRW11bGF0b3IgaGFzIGxpbWl0ZWQgdmlydHVhbCBhZGRyZXNzIHNwYWNl
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCB2aXJ0dWFsTWVtb3J5UmVzZXJ2YXRpb24gPSAweDQw
MDAwMDsKLSNlbHNlCi0gICAgLy8gSFcgaGFzIHBsZW50eSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcwot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmlydHVhbE1lbW9yeVJlc2VydmF0aW9uID0gMHg4MDAw
MDAwOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPiBjbGFzcyBBbGln
bmVkTWVtb3J5OwotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4gY2xhc3MgQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcjsKLQotI2lmIEhBVkUoUEFHRV9BTExPQ0FURV9BTElHTkVEKQotCi10ZW1wbGF0
ZTxzaXplX3QgYmxvY2tTaXplPgotY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLQotdGVt
cGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWNsYXNzIEFsaWduZWRNZW1vcnkgewotcHVibGljOgot
ICAgIHZvaWQgZGVhbGxvY2F0ZSgpOwotICAgIHZvaWQqIGJhc2UoKTsKLQotcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+OwotCi0gICAg
QWxpZ25lZE1lbW9yeShQYWdlQWxsb2NhdGlvbik7Ci0KLSAgICBQYWdlQWxsb2NhdGlvbiBtX2Fs
bG9jYXRpb247Ci19OwotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotY2xhc3MgQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0gICAgQWxp
Z25lZE1lbW9yeTxibG9ja1NpemU+IGFsbG9jYXRlKCk7Ci19OwotCi10ZW1wbGF0ZTxzaXplX3Qg
YmxvY2tTaXplPgotaW5saW5lIHZvaWQgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+
OjpkZXN0cm95KCkKLXsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWlubGluZSBB
bGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+
OjphbGxvY2F0ZSgpCi17Ci0gICAgcmV0dXJuIEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPihQYWdl
QWxsb2NhdGlvbjo6YWxsb2NhdGVBbGlnbmVkKGJsb2NrU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NI
ZWFwUGFnZXMpKTsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWlubGluZSB2b2lk
IEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPjo6ZGVhbGxvY2F0ZSgpCi17Ci0gICAgbV9hbGxvY2F0
aW9uLmRlYWxsb2NhdGUoKTsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWlubGlu
ZSB2b2lkKiBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT46OmJhc2UoKQotewotICAgIHJldHVybiBt
X2FsbG9jYXRpb24uYmFzZSgpOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotaW5s
aW5lIEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPjo6QWxpZ25lZE1lbW9yeShQYWdlQWxsb2NhdGlv
biBhbGxvY2F0aW9uKQotICAgIDogbV9hbGxvY2F0aW9uKGFsbG9jYXRpb24pCi17Ci19Ci0KLSNl
bHNlCi0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1jbGFzcyBBbGlnbmVkTWVtb3J5IHsK
LXB1YmxpYzoKLSAgICB2b2lkIGRlYWxsb2NhdGUoKTsKLSAgICB2b2lkKiBiYXNlKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXpl
PjsKLQotICAgIEFsaWduZWRNZW1vcnkodm9pZCogYmFzZSwgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjxibG9ja1NpemU+KiBhbGxvY2F0b3IpOwotCi0gICAgdm9pZCogbV9iYXNlOwotICAgIEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPiogbV9hbGxvY2F0b3I7Ci19OwotCi10ZW1wbGF0
ZTxzaXplX3QgYmxvY2tTaXplPgotY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7Ci1wdWJs
aWM6Ci0gICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpOwotICAgIH5BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKCk7Ci0KLSAgICB2b2lkIGRlc3Ryb3koKTsKLSAgICBBbGlnbmVkTWVtb3J5PGJsb2Nr
U2l6ZT4gYWxsb2NhdGUoKTsKLSAgICB2b2lkIGZyZWUoQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+
KTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHJlc2VydmF0aW9uU2l6ZSA9
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3JDb25zdGFudHM6OnZpcnR1YWxNZW1vcnlSZXNlcnZhdGlv
bjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJpdG1hcFNpemUgPSByZXNlcnZhdGlvblNpemUg
LyBibG9ja1NpemU7Ci0KLSAgICBQYWdlUmVzZXJ2YXRpb24gbV9yZXNlcnZhdGlvbjsKLSAgICBz
aXplX3QgbV9uZXh0RnJlZTsKLSAgICB1aW50cHRyX3QgbV9yZXNlcnZhdGlvbkJhc2U7Ci0gICAg
V1RGOjpCaXRtYXA8Yml0bWFwU2l6ZT4gbV9iaXRtYXA7Ci19OwotCi10ZW1wbGF0ZTxzaXplX3Qg
YmxvY2tTaXplPgotQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+OjpBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yKCkKLSAgICA6IG1fcmVzZXJ2YXRpb24oUGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlKHJlc2VydmF0aW9uU2l6ZSArIGJsb2NrU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFn
ZXMpKQotICAgICwgbV9uZXh0RnJlZSgwKQotewotICAgIC8vIGNoZWNrIHRoYXQgYmxvY2tTaXpl
IGFuZCByZXNlcnZhdGlvblNpemUgYXJlIHBvd2VycyBvZiB0d28KLSAgICBBU1NFUlQoIShibG9j
a1NpemUgJiAoYmxvY2tTaXplIC0gMSkpKTsKLSAgICBBU1NFUlQoIShyZXNlcnZhdGlvblNpemUg
JiAocmVzZXJ2YXRpb25TaXplIC0gMSkpKTsKLQotICAgIC8vIGNoZWNrIHRoYXQgYmxvY2tTaXpl
IGlzIGEgbXVsdGlwbGUgb2YgcGFnZVNpemUgYW5kIHRoYXQKLSAgICAvLyByZXNlcnZhdGlvblNp
emUgaXMgYSBtdWx0aXBsZSBvZiBibG9ja1NpemUKLSAgICBBU1NFUlQoIShibG9ja1NpemUgJiAo
UGFnZUFsbG9jYXRpb246OnBhZ2VTaXplKCkgLSAxKSkpOwotICAgIEFTU0VSVCghKHJlc2VydmF0
aW9uU2l6ZSAmIChibG9ja1NpemUgLSAxKSkpOwotCi0gICAgQVNTRVJUKG1fcmVzZXJ2YXRpb24p
OwotCi0gICAgbV9yZXNlcnZhdGlvbkJhc2UgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
bV9yZXNlcnZhdGlvbi5iYXNlKCkpOwotICAgIG1fcmVzZXJ2YXRpb25CYXNlID0gKG1fcmVzZXJ2
YXRpb25CYXNlICsgYmxvY2tTaXplKSAmIH4oYmxvY2tTaXplIC0gMSk7Ci19Ci0KLXRlbXBsYXRl
PHNpemVfdCBibG9ja1NpemU+Ci1BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT46On5B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkKLXsKLSAgICBkZXN0cm95KCk7Ci0gICAgbV9yZXNlcnZh
dGlvbi5kZWFsbG9jYXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1pbmxp
bmUgdm9pZCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT46OmRlc3Ryb3koKQotewot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiaXRtYXBTaXplOyArK2kpIHsKLSAgICAgICAg
aWYgKG1fYml0bWFwLmdldChpKSkgewotICAgICAgICAgICAgdm9pZCogYmxvY2tBZGRyZXNzID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9yZXNlcnZhdGlvbkJhc2UgKyBtX25leHRGcmVlICog
YmxvY2tTaXplKTsKLSAgICAgICAgICAgIG1fcmVzZXJ2YXRpb24uZGVjb21taXQoYmxvY2tBZGRy
ZXNzLCBibG9ja1NpemUpOwotCi0gICAgICAgICAgICBtX2JpdG1hcC5jbGVhcihpKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLUFsaWduZWRNZW1v
cnk8YmxvY2tTaXplPiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT46OmFsbG9jYXRl
KCkKLXsKLSAgICB3aGlsZSAobV9uZXh0RnJlZSA8IGJpdG1hcFNpemUpIHsKLSAgICAgICAgaWYg
KCFtX2JpdG1hcC5nZXQobV9uZXh0RnJlZSkpIHsKLSAgICAgICAgICAgIHZvaWQqIGJsb2NrQWRk
cmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fcmVzZXJ2YXRpb25CYXNlICsgbV9uZXh0
RnJlZSAqIGJsb2NrU2l6ZSk7Ci0gICAgICAgICAgICBtX3Jlc2VydmF0aW9uLmNvbW1pdChibG9j
a0FkZHJlc3MsIGJsb2NrU2l6ZSk7Ci0KLSAgICAgICAgICAgIG1fYml0bWFwLnNldChtX25leHRG
cmVlKTsKLSAgICAgICAgICAgICsrbV9uZXh0RnJlZTsKLQotICAgICAgICAgICAgcmV0dXJuIEFs
aWduZWRNZW1vcnk8YmxvY2tTaXplPihibG9ja0FkZHJlc3MsIHRoaXMpOwotICAgICAgICB9Ci0g
ICAgICAgIG1fYml0bWFwLmFkdmFuY2VUb05leHRGcmVlQml0KG1fbmV4dEZyZWUpOwotICAgIH0K
LQotICAgIGlmIChtX2JpdG1hcC5pc0Z1bGwoKSkKLSAgICAgICAgcmV0dXJuIEFsaWduZWRNZW1v
cnk8YmxvY2tTaXplPigwLCB0aGlzKTsKLQotICAgIG1fbmV4dEZyZWUgPSAwOwotCi0gICAgcmV0
dXJuIGFsbG9jYXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci12b2lkIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPjo6ZnJlZShBbGlnbmVkTWVtb3J5PGJsb2Nr
U2l6ZT4gYWxsb2NhdGlvbikKLXsKLSAgICBBU1NFUlQoYWxsb2NhdGlvbi5iYXNlKCkpOwotICAg
IG1fcmVzZXJ2YXRpb24uZGVjb21taXQoYWxsb2NhdGlvbi5iYXNlKCksIGJsb2NrU2l6ZSk7Ci0K
LSAgICBzaXplX3QgZGlmZiA9IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWxsb2NhdGlv
bi5iYXNlKCkpIC0gbV9yZXNlcnZhdGlvbkJhc2UpOwotICAgIEFTU0VSVCghKGRpZmYgJiAoYmxv
Y2tTaXplIC0gMSkpKTsKLQotICAgIHNpemVfdCBpID0gZGlmZiAvIGJsb2NrU2l6ZTsKLSAgICBB
U1NFUlQobV9iaXRtYXAuZ2V0KGkpKTsKLQotICAgIG1fYml0bWFwLmNsZWFyKGkpOwotfQotCi10
ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotaW5saW5lIHZvaWQgQWxpZ25lZE1lbW9yeTxibG9j
a1NpemU+OjpkZWFsbG9jYXRlKCkKLXsKLSAgICBtX2FsbG9jYXRvci0+ZnJlZSgqdGhpcyk7Ci19
Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1pbmxpbmUgdm9pZCogQWxpZ25lZE1lbW9y
eTxibG9ja1NpemU+OjpiYXNlKCkKLXsKLSAgICByZXR1cm4gbV9iYXNlOwotfQotCi10ZW1wbGF0
ZTxzaXplX3QgYmxvY2tTaXplPgotQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+OjpBbGlnbmVkTWVt
b3J5KHZvaWQqIGJhc2UsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPiogYWxsb2Nh
dG9yKQotICAgIDogbV9iYXNlKGJhc2UpCi0gICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi17
Ci19Ci0KLSNlbmRpZgotCi19Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29s
bGVjdG9yLmNwcAkocmV2aXNpb24gNzQzNTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw5ICsxNzEsNiBAQCB2b2lkIEhlYXA6
OmRlc3Ryb3koKQogCiAgICAgZnJlZUJsb2NrcygpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fd2Vha0dD
SGFuZGxlUG9vbHNbaV0uZGVhbGxvY2F0ZSgpOwotCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9U
SFJFQURTKQogICAgIGlmIChtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXIpIHsKICAgICAgICAgaW50
IGVycm9yID0gcHRocmVhZF9rZXlfZGVsZXRlKG1fY3VycmVudFRocmVhZFJlZ2lzdHJhcik7CkBA
IC0xODcsMTMgKzE4NCwxMiBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogICAgICAgICB0ID0gbmV4
dDsKICAgICB9CiAjZW5kaWYKLSAgICBtX2Jsb2NrYWxsb2NhdG9yLmRlc3Ryb3koKTsKICAgICBt
X2dsb2JhbERhdGEgPSAwOwogfQogCiBORVZFUl9JTkxJTkUgQ29sbGVjdG9yQmxvY2sqIEhlYXA6
OmFsbG9jYXRlQmxvY2soKQogewotICAgIEFsaWduZWRDb2xsZWN0b3JCbG9jayBhbGxvY2F0aW9u
ID0gbV9ibG9ja2FsbG9jYXRvci5hbGxvY2F0ZSgpOworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShCTE9DS19TSVpF
LCBCTE9DS19TSVpFLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgQ29sbGVjdG9y
QmxvY2sqIGJsb2NrID0gc3RhdGljX2Nhc3Q8Q29sbGVjdG9yQmxvY2sqPihhbGxvY2F0aW9uLmJh
c2UoKSk7CiAgICAgaWYgKCFibG9jaykKICAgICAgICAgQ1JBU0goKTsKQEAgLTIxMSwxMiArMjA3
LDEyIEBAIE5FVkVSX0lOTElORSBDb2xsZWN0b3JCbG9jayogSGVhcDo6YWxsb2MKIAogICAgIHNp
emVfdCBudW1CbG9ja3MgPSBtX2hlYXAubnVtQmxvY2tzOwogICAgIGlmIChtX2hlYXAudXNlZEJs
b2NrcyA9PSBudW1CbG9ja3MpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhOdW1C
bG9ja3MgPSBVTE9OR19NQVggLyBzaXplb2YoQWxpZ25lZENvbGxlY3RvckJsb2NrKSAvIEdST1dU
SF9GQUNUT1I7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4TnVtQmxvY2tzID0gVUxP
TkdfTUFYIC8gc2l6ZW9mKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCkgLyBHUk9XVEhfRkFDVE9SOwog
ICAgICAgICBpZiAobnVtQmxvY2tzID4gbWF4TnVtQmxvY2tzKQogICAgICAgICAgICAgQ1JBU0go
KTsKICAgICAgICAgbnVtQmxvY2tzID0gbWF4KE1JTl9BUlJBWV9TSVpFLCBudW1CbG9ja3MgKiBH
Uk9XVEhfRkFDVE9SKTsKICAgICAgICAgbV9oZWFwLm51bUJsb2NrcyA9IG51bUJsb2NrczsKLSAg
ICAgICAgbV9oZWFwLmJsb2NrcyA9IHN0YXRpY19jYXN0PEFsaWduZWRDb2xsZWN0b3JCbG9jayo+
KGZhc3RSZWFsbG9jKG1faGVhcC5ibG9ja3MsIG51bUJsb2NrcyAqIHNpemVvZihBbGlnbmVkQ29s
bGVjdG9yQmxvY2spKSk7CisgICAgICAgIG1faGVhcC5ibG9ja3MgPSBzdGF0aWNfY2FzdDxQYWdl
QWxsb2NhdGlvbkFsaWduZWQqPihmYXN0UmVhbGxvYyhtX2hlYXAuYmxvY2tzLCBudW1CbG9ja3Mg
KiBzaXplb2YoUGFnZUFsbG9jYXRpb25BbGlnbmVkKSkpOwogICAgIH0KICAgICBtX2hlYXAuYmxv
Y2tzW21faGVhcC51c2VkQmxvY2tzKytdID0gYWxsb2NhdGlvbjsKIApAQCAtMjM5LDcgKzIzNSw3
IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmZyZWVCbG9jayhzaXplX3QKIAogICAgIGlmICht
X2hlYXAubnVtQmxvY2tzID4gTUlOX0FSUkFZX1NJWkUgJiYgbV9oZWFwLnVzZWRCbG9ja3MgPCBt
X2hlYXAubnVtQmxvY2tzIC8gTE9XX1dBVEVSX0ZBQ1RPUikgewogICAgICAgICBtX2hlYXAubnVt
QmxvY2tzID0gbV9oZWFwLm51bUJsb2NrcyAvIEdST1dUSF9GQUNUT1I7IAotICAgICAgICBtX2hl
YXAuYmxvY2tzID0gc3RhdGljX2Nhc3Q8QWxpZ25lZENvbGxlY3RvckJsb2NrKj4oZmFzdFJlYWxs
b2MobV9oZWFwLmJsb2NrcywgbV9oZWFwLm51bUJsb2NrcyAqIHNpemVvZihBbGlnbmVkQ29sbGVj
dG9yQmxvY2spKSk7CisgICAgICAgIG1faGVhcC5ibG9ja3MgPSBzdGF0aWNfY2FzdDxQYWdlQWxs
b2NhdGlvbkFsaWduZWQqPihmYXN0UmVhbGxvYyhtX2hlYXAuYmxvY2tzLCBtX2hlYXAubnVtQmxv
Y2tzICogc2l6ZW9mKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCkpKTsKICAgICB9CiB9CiAKQEAgLTky
MiwxMCArOTE4LDEwIEBAIFdlYWtHQ0hhbmRsZSogSGVhcDo6YWRkV2Vha0dDSGFuZGxlKEpTQ2UK
ICAgICAgICAgaWYgKCF3ZWFrR0NIYW5kbGVQb29sKGkpLT5pc0Z1bGwoKSkKICAgICAgICAgICAg
IHJldHVybiB3ZWFrR0NIYW5kbGVQb29sKGkpLT5hbGxvY2F0ZShwdHIpOwogCi0gICAgQWxpZ25l
ZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4gYWxsb2NhdGlvbiA9IG1fd2Vha0dD
SGFuZGxlUG9vbEFsbG9jYXRvci5hbGxvY2F0ZSgpOworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0ZShXZWFrR0NIYW5k
bGVQb29sOjpwb29sU2l6ZSwgV2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemUsIE9TQWxsb2NhdG9y
OjpKU0dDSGVhcFBhZ2VzKTsKICAgICBtX3dlYWtHQ0hhbmRsZVBvb2xzLmFwcGVuZChhbGxvY2F0
aW9uKTsKIAotICAgIFdlYWtHQ0hhbmRsZVBvb2wqIHBvb2wgPSBuZXcgKGFsbG9jYXRpb24pIFdl
YWtHQ0hhbmRsZVBvb2woKTsKKyAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29sID0gbmV3IChhbGxv
Y2F0aW9uLmJhc2UoKSkgV2Vha0dDSGFuZGxlUG9vbCgpOwogICAgIHJldHVybiBwb29sLT5hbGxv
Y2F0ZShwdHIpOwogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHJldmlz
aW9uIDc0MzU2KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2lmbmRlZiBDb2xsZWN0b3JfaAogI2RlZmluZSBD
b2xsZWN0b3JfaAogCi0jaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkdDSGFuZGxlLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgPHN0ZGRlZi5o
PgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFnZUFsbG9jYXRpb24uaD4KKyNpbmNs
dWRlIDx3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgpAQCAtNjQsMTMgKzY0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNvbnN0IHNp
emVfdCBCTE9DS19TSVpFID0gMjU2ICogMTAyNDsgLy8gMjU2awogI2VuZGlmCiAKLSAgICB0eXBl
ZGVmIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8QkxPQ0tfU0laRT4gQ29sbGVjdG9yQmxvY2tBbGxv
Y2F0b3I7Ci0gICAgdHlwZWRlZiBBbGlnbmVkTWVtb3J5PEJMT0NLX1NJWkU+IEFsaWduZWRDb2xs
ZWN0b3JCbG9jazsKLQogICAgIHN0cnVjdCBDb2xsZWN0b3JIZWFwIHsKICAgICAgICAgc2l6ZV90
IG5leHRCbG9jazsKICAgICAgICAgc2l6ZV90IG5leHRDZWxsOwotICAgICAgICBBbGlnbmVkQ29s
bGVjdG9yQmxvY2sqIGJsb2NrczsKKyAgICAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkKiBibG9j
a3M7CiAgICAgICAgIAogICAgICAgICB2b2lkKiBuZXh0TnVtYmVyOwogCkBAIC0xOTEsNyArMTg4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbGxlY3RvckhlYXAgbV9oZWFwOwogCiAg
ICAgICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3RlZFZhbHVlczsKLSAgICAgICAgV1RGOjpW
ZWN0b3I8QWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4gPiBtX3dlYWtH
Q0hhbmRsZVBvb2xzOworICAgICAgICBXVEY6OlZlY3RvcjxQYWdlQWxsb2NhdGlvbkFsaWduZWQ+
IG1fd2Vha0dDSGFuZGxlUG9vbHM7CiAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6VmVjdG9yPFZh
bHVlU3RyaW5nUGFpcj4qID4gbV90ZW1wU29ydGluZ1ZlY3RvcnM7CiAKICAgICAgICAgSGFzaFNl
dDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+KiBtX21hcmtMaXN0U2V0OwpAQCAtMjA5LDEwICsyMDYs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHRocmVhZF9rZXlfdCBtX2N1cnJlbnRUaHJl
YWRSZWdpc3RyYXI7CiAjZW5kaWYKIAotICAgICAgICAvLyBBbGxvY2F0ZXMgY29sbGVjdG9yIGJs
b2NrcyB3aXRoIGNvcnJlY3QgYWxpZ25tZW50Ci0gICAgICAgIENvbGxlY3RvckJsb2NrQWxsb2Nh
dG9yIG1fYmxvY2thbGxvY2F0b3I7IAotICAgICAgICBXZWFrR0NIYW5kbGVQb29sOjpBbGxvY2F0
b3IgbV93ZWFrR0NIYW5kbGVQb29sQWxsb2NhdG9yOyAKLSAgICAgICAgCiAgICAgICAgIEpTR2xv
YmFsRGF0YSogbV9nbG9iYWxEYXRhOwogICAgIH07CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R0NIYW5kbGUuY3BwCShyZXZpc2lvbiA3NDM1NikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R0NIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4Myw0IEBAIHZvaWQgV2Vha0dD
SGFuZGxlUG9vbDo6ZnJlZShXZWFrR0NIYW5kbGUKICAgICAtLW1fZW50cmllc1NpemU7CiB9CiAK
LXZvaWQqIFdlYWtHQ0hhbmRsZVBvb2w6Om9wZXJhdG9yIG5ldyhzaXplX3QsIEFsaWduZWRNZW1v
cnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+JiBhbGxvY2F0aW9uKQotewotICAgIHJldHVy
biBhbGxvY2F0aW9uLmJhc2UoKTsKLX0KLQogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0hhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5k
bGUuaAkocmV2aXNpb24gNzQzNTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgR0NIYW5kbGVfaAog
I2RlZmluZSBHQ0hhbmRsZV9oCiAKLSNpbmNsdWRlICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgi
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTkx
LDggKzkxLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcG9vbE1hc2sgPSB+
KHBvb2xTaXplIC0gMSk7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1Qb29sRW50cmllcyA9
IChwb29sU2l6ZSAtIHNpemVvZihIZWFwKikgLSAzICogc2l6ZW9mKHVuc2lnbmVkKSkgLyBzaXpl
b2YoV2Vha0dDSGFuZGxlKTsKIAotICAgIHR5cGVkZWYgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxX
ZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4gQWxsb2NhdG9yOwotCiAgICAgV2Vha0dDSGFuZGxl
UG9vbCgpOwogCiAgICAgV2Vha0dDSGFuZGxlKiBhbGxvY2F0ZShKU0NlbGwqIGNlbGwpOwpAQCAt
MTA2LDggKzEwNCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlKCk7CiAKLSAgICB2b2lk
KiBvcGVyYXRvciBuZXcoc2l6ZV90LCBBbGlnbmVkTWVtb3J5PFdlYWtHQ0hhbmRsZVBvb2w6OnBv
b2xTaXplPiYpOwotCiBwcml2YXRlOgogICAgIEhlYXAqIG1faGVhcDsKICAgICB1bnNpZ25lZCBt
X2VudHJpZXNTaXplOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmgJKHJldmlz
aW9uIDc0MzU3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDEwICs3Nyw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIENhbGxlcnMg
bWF5IGFsc28gb3B0aW5hbGx5IHByb3ZpZGUgYSBmbGFnIGluZGljYXRpbmcgdGhlIHVzYWdlIChm
b3IgdXNlIGJ5CiAgICAgc3lzdGVtIG1lbW9yeSB1c2FnZSB0cmFja2luZyB0b29scywgd2hlcmUg
aW1wbGVtZW50ZWQpLCBhbmQgYm9vbGVhbiB2YWx1ZXMKICAgICBzcGVjaWZ5aW5nIHRoZSByZXF1
aXJlZCBwcm90ZWN0aW9uIChkZWZhdWx0aW5nIHRvIHdyaXRhYmxlLCBub24tZXhlY3V0YWJsZSku
Ci0KLSAgICBXaGVyZSBIQVZFKFBBR0VfQUxMT0NBVEVfQUxJR05FRCkgaXMgYXZhaWxhYmxlIG1l
bW9yeSBtYXkgYWxzbyBiZSBhbGxvY2F0ZWQKLSAgICB3aXRoIGEgc3BlY2lmaWVkIGFsaWdubWVu
dC4gIFBhZ2VBbGxvY2F0aW9uOjphbGxvY2F0ZUFsaWduZWQgcmVxdWlyZXMgdGhhdCB0aGUKLSAg
ICBzaXplIGlzIGEgcG93ZXIgb2YgdHdvIHRoYXQgaXMgPj0gc3lzdGVtIHBhZ2Ugc2l6ZS4KICov
CiAKIGNsYXNzIFBhZ2VBbGxvY2F0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewpAQCAtOTEsMjAg
Kzg3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKE9TQWxsb2Nh
dG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSks
IHNpemUpOwogICAgIH0KIAotI2lmIEhBVkUoUEFHRV9BTExPQ0FURV9BTElHTkVEKQotICAgIHN0
YXRpYyBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0ZUFsaWduZWQoc2l6ZV90IHNpemUsIE9TQWxsb2Nh
dG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UpCi0gICAgewotICAg
ICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIEFTU0VSVChpc1Bvd2Vy
T2ZUd28oc2l6ZSkpOwotICAgICAgICByZXR1cm4gc3lzdGVtQWxsb2NhdGVBbGlnbmVkKHNpemUs
IHVzYWdlKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIFBhZ2VBbGxvY2F0aW9uKCk7CiAKICAgICB1
c2luZyBQYWdlQmxvY2s6Om9wZXJhdG9yIGJvb2w7Ci0gICAgdXNpbmcgUGFnZUJsb2NrOjpiYXNl
OwogICAgIHVzaW5nIFBhZ2VCbG9jazo6c2l6ZTsKKyAgICB1c2luZyBQYWdlQmxvY2s6OmJhc2U7
CiAKICAgICB2b2lkIGRlYWxsb2NhdGUoKQogICAgIHsKQEAgLTExOSw4MSArMTA2LDEzIEBAIHBy
aXZhdGU6CiAgICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUpCiAgICAgewogICAgIH0KLQot
I2lmIEhBVkUoUEFHRV9BTExPQ0FURV9BTElHTkVEKQotICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlv
biBzeXN0ZW1BbGxvY2F0ZUFsaWduZWQoc2l6ZV90LCBPU0FsbG9jYXRvcjo6VXNhZ2UpOwotI2Vu
ZGlmCiB9OwogCiBpbmxpbmUgUGFnZUFsbG9jYXRpb246OlBhZ2VBbGxvY2F0aW9uKCkKLSAgICA6
IFBhZ2VCbG9jaygpCi17Ci19Ci0KLQotI2lmIEhBVkUoTU1BUCkKLQotaW5saW5lIFBhZ2VBbGxv
Y2F0aW9uIFBhZ2VBbGxvY2F0aW9uOjpzeXN0ZW1BbGxvY2F0ZUFsaWduZWQoc2l6ZV90IHNpemUs
IE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgdm1fYWRk
cmVzc190IGFkZHJlc3MgPSAwOwotICAgIGludCBmbGFncyA9IFZNX0ZMQUdTX0FOWVdIRVJFOwot
ICAgIGlmICh1c2FnZSAhPSAtMSkKLSAgICAgICAgZmxhZ3MgfD0gdXNhZ2U7Ci0gICAgdm1fbWFw
KGN1cnJlbnRfdGFzaygpLCAmYWRkcmVzcywgc2l6ZSwgKHNpemUgLSAxKSwgZmxhZ3MsIE1FTU9S
WV9PQkpFQ1RfTlVMTCwgMCwgRkFMU0UsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIFBST1RfUkVB
RCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMsIFZNX0lOSEVSSVRfREVGQVVMVCk7Ci0gICAgcmV0
dXJuIFBhZ2VBbGxvY2F0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpLCBzaXpl
KTsKLSNlbGlmIEhBVkUoUE9TSVhfTUVNQUxJR04pCi0gICAgdm9pZCogYWRkcmVzczsKLSAgICBw
b3NpeF9tZW1hbGlnbigmYWRkcmVzcywgc2l6ZSwgc2l6ZSk7Ci0gICAgcmV0dXJuIFBhZ2VBbGxv
Y2F0aW9uKGFkZHJlc3MsIHNpemUpOwotI2Vsc2UKLSAgICBzaXplX3QgZXh0cmEgPSBzaXplIC0g
cGFnZVNpemUoKTsKLQotICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KLSAgICBpZiAoKHNpemUg
KyBleHRyYSkgPCBzaXplKQotICAgICAgICByZXR1cm4gUGFnZUFsbG9jYXRpb24oMCwgc2l6ZSk7
Ci0KLSNpZiBPUyhEQVJXSU4pICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKQotICAgIGlu
dCBmZCA9IHVzYWdlOwotI2Vsc2UKLSAgICBpbnQgZmQgPSAtMTsKLSNlbmRpZgotICAgIHZvaWQq
IG1tYXBSZXN1bHQgPSBtbWFwKDAsIHNpemUgKyBleHRyYSwgUFJPVF9SRUFEIHwgUFJPVF9XUklU
RSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgZmQsIDApOwotICAgIGlmIChtbWFwUmVzdWx0ID09
IE1BUF9GQUlMRUQpCi0gICAgICAgIHJldHVybiBQYWdlQWxsb2NhdGlvbigwLCBzaXplKTsKLSAg
ICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtbWFwUmVz
dWx0KTsKLQotICAgIHNpemVfdCBhZGp1c3QgPSAwOwotICAgIGlmICgoYWRkcmVzcyAmIChzaXpl
IC0gMSkpKQotICAgICAgICBhZGp1c3QgPSBzaXplIC0gKGFkZHJlc3MgJiAoc2l6ZSAtIDEpKTsK
LSAgICBpZiAoYWRqdXN0ID4gMCkKLSAgICAgICAgbXVubWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGFkZHJlc3MpLCBhZGp1c3QpOwotICAgIGlmIChhZGp1c3QgPCBleHRyYSkKLSAgICAgICAg
bXVubWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3MgKyBhZGp1c3QgKyBzaXplKSwg
ZXh0cmEgLSBhZGp1c3QpOwotICAgIGFkZHJlc3MgKz0gYWRqdXN0OwotCi0gICAgcmV0dXJuIFBh
Z2VBbGxvY2F0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpLCBzaXplKTsKLSNl
bmRpZgotfQotCi0jZWxpZiBIQVZFKFZJUlRVQUxBTExPQykKLQotI2lmIEhBVkUoQUxJR05FRF9N
QUxMT0MpCi1pbmxpbmUgUGFnZUFsbG9jYXRpb24gUGFnZUFsbG9jYXRpb246OnN5c3RlbUFsbG9j
YXRlQWxpZ25lZChzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlKQogewotI2lm
IENPTVBJTEVSKE1JTkdXKSAmJiAhQ09NUElMRVIoTUlOR1c2NCkKLSAgICB2b2lkKiBhZGRyZXNz
ID0gX19taW5nd19hbGlnbmVkX21hbGxvYyhzaXplLCBzaXplKTsKLSNlbHNlCi0gICAgdm9pZCog
YWRkcmVzcyA9IF9hbGlnbmVkX21hbGxvYyhzaXplLCBzaXplKTsKLSNlbmRpZgotICAgIG1lbXNl
dChhZGRyZXNzLCAwLCBzaXplKTsKLSAgICByZXR1cm4gUGFnZUFsbG9jYXRpb24oYWRkcmVzcywg
c2l6ZSk7CiB9Ci0jZW5kaWYKIAotI2VuZGlmCi0KLX0KK30gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OlBhZ2VBbGxvY2F0aW9uOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGFn
ZUFsbG9jYXRpb25BbGlnbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
UGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VBbGxv
Y2F0aW9uQWxpZ25lZC5oIgorCituYW1lc3BhY2UgV1RGIHsKKworUGFnZUFsbG9jYXRpb25BbGln
bmVkIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoc2l6ZV90IHNpemUsIHNpemVfdCBh
bGlnbm1lbnQsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSkKK3sKKyAgICBBU1NFUlQoaXNQYWdl
QWxpZ25lZChzaXplKSk7CisgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoYWxpZ25tZW50KSk7Cisg
ICAgQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpKTsKKyAgICBBU1NFUlQoc2l6ZSA+PSBh
bGlnbm1lbnQpOworCisgICAgc2l6ZV90IGFsaWdubWVudE1hc2sgPSBhbGlnbm1lbnQgLSAxOwor
CisjaWYgT1MoREFSV0lOKQorICAgIHZtX2FkZHJlc3NfdCBhZGRyZXNzID0gMDsKKyAgICBpbnQg
ZmxhZ3MgPSBWTV9GTEFHU19BTllXSEVSRTsKKyAgICBpZiAodXNhZ2UgIT0gT1NBbGxvY2F0b3I6
OlVua25vd25Vc2FnZSkKKyAgICAgICAgZmxhZ3MgfD0gdXNhZ2U7CisgICAgdm1fbWFwKGN1cnJl
bnRfdGFzaygpLCAmYWRkcmVzcywgc2l6ZSwgYWxpZ25tZW50TWFzaywgZmxhZ3MsIE1FTU9SWV9P
QkpFQ1RfTlVMTCwgMCwgRkFMU0UsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIFBST1RfUkVBRCB8
IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMsIFZNX0lOSEVSSVRfREVGQVVMVCk7CisgICAgdm9pZCog
dHJ1ZUJhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzKTsKKyAgICB2b2lkKiBh
bGlnbmVkQmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpOworI2Vsc2UKKyAg
ICBzaXplX3QgYWxpZ25tZW50RGVsdGEgPSBhbGlnbm1lbnQgLSBwYWdlU2l6ZSgpOworICAgIHZv
aWQqIHRydWVCYXNlID0gT1NBbGxvY2F0b3I6OnJlc2VydmUoc2l6ZSArIGFsaWdubWVudERlbHRh
LCB1c2FnZSwgdHJ1ZSwgZmFsc2UpOworICAgIHZvaWQqIGFsaWduZWRCYXNlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHRydWVCYXNlKSAmIGFsaWdubWVudE1hc2sKKyAgICAgICAgPyBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRydWVC
YXNlKSAmIH5hbGlnbm1lbnRNYXNrKSArIGFsaWdubWVudCk7CisgICAgICAgIDogdHJ1ZUJhc2U7
CisgICAgT1NBbGxvY2F0b3I6OmNvbW1pdChhbGlnbmVkQmFzZSwgc2l6ZSwgdHJ1ZSwgZmFsc2Up
OworI2VuZGlmCisKKyAgICByZXR1cm4gUGFnZUFsbG9jYXRpb25BbGlnbmVkKHRydWVCYXNlLCBh
bGlnbmVkQmFzZSwgc2l6ZSk7Cit9CisKK3ZvaWQgUGFnZUFsbG9jYXRpb25BbGlnbmVkOjpkZWFs
bG9jYXRlKCkKK3sKKyAgICBBU1NFUlQoKnRoaXMpOworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZCB0bXA7CisgICAgc3RkOjpzd2FwKHRtcCwgKnRoaXMpOworCisjaWYgT1MoREFSV0lOKQorICAg
IHZtX2RlYWxsb2NhdGUoY3VycmVudF90YXNrKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVz
c190Pih0bXAubV90cnVlQmFzZSksIHRtcC5zaXplKCkpOworI2Vsc2UKKyAgICBPU0FsbG9jYXRv
cjo6cmVsZWFzZSh0bXAubV90cnVlQmFzZSwgdG1wLnNpemUoKSk7CisjZW5kaWYKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RGCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25B
bGlnbmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9u
QWxpZ25lZC5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBQYWdlQWxsb2NhdGlvbkFsaWduZWRfaAorI2RlZmluZSBQYWdlQWxsb2NhdGlvbkFs
aWduZWRfaAorCisjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uLmg+CisjaW5jbHVkZSA8d3Rm
L09TQWxsb2NhdG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQYWdlQWxsb2NhdGlv
bkFsaWduZWQgOiBwcml2YXRlIFBhZ2VCbG9jayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhZ2VB
bGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0ZShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCwg
T1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSk7CisK
KyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQoKTsKKworICAgIHVzaW5nIFBhZ2VCbG9jazo6b3Bl
cmF0b3IgYm9vbDsKKyAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CisgICAgdXNpbmcgUGFnZUJs
b2NrOjpiYXNlOworCisgICAgdm9pZCBkZWFsbG9jYXRlKCk7CisKK3ByaXZhdGU6CisgICAgUGFn
ZUFsbG9jYXRpb25BbGlnbmVkKHZvaWQqIHRydWVCYXNlLCB2b2lkKiBhbGlnbmVkQmFzZSwgc2l6
ZV90IHNpemUpOworCisgICAgdm9pZCogbV90cnVlQmFzZTsKK307CisKK2lubGluZSBQYWdlQWxs
b2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxvY2F0aW9uQWxpZ25lZCgpCit7Cit9CisKK2lubGluZSBQ
YWdlQWxsb2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxvY2F0aW9uQWxpZ25lZCh2b2lkKiB0cnVlQmFz
ZSwgdm9pZCogYWxpZ25lZEJhc2UsIHNpemVfdCBzaXplKQorICAgIDogUGFnZUJsb2NrKGFsaWdu
ZWRCYXNlLCBzaXplKQorICAgICwgbV90cnVlQmFzZSh0cnVlQmFzZSkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UGFnZUFsbG9jYXRpb25BbGlnbmVkOworCisjZW5k
aWYgLy8gUGFnZUFsbG9jYXRpb25BbGlnbmVkX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiA3NDM1NikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MjEsMTMgKzgyMSw2IEBACiAKICNlbmRpZgogCi0jaWYgSEFWRShNTUFQKSB8
fCAoSEFWRShWSVJUVUFMQUxMT0MpICYmIEhBVkUoQUxJR05FRF9NQUxMT0MpKQotI2RlZmluZSBI
QVZFX1BBR0VfQUxMT0NBVEVfQUxJR05FRCAxCi0jZW5kaWYKLSNpZiBIQVZFKE1NQVApCi0jZGVm
aW5lIEhBVkVfUEFHRV9BTExPQ0FURV9BVCAxCi0jZW5kaWYKLQogLyogRU5BQkxFIG1hY3JvIGRl
ZmF1bHRzICovCiAKICNpZiBQTEFURk9STShRVCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi93
dGYucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJpCShyZXZpc2lv
biA3NDM1NykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJpCSh3b3JraW5nIGNvcHkpCkBA
IC0xNiw2ICsxNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHd0Zi9xdC9NYWluVGhyZWFkUXQuY3Bw
IFwKICAgICB3dGYvcXQvU3RyaW5nUXQuY3BwIFwKICAgICB3dGYvcXQvVGhyZWFkaW5nUXQuY3Bw
IFwKKyAgICB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBcCiAgICAgd3RmL1BhZ2VCbG9j
ay5jcHAgXAogICAgIHd0Zi9SYW5kb21OdW1iZXIuY3BwIFwKICAgICB3dGYvUmVmQ291bnRlZExl
YWtDb3VudGVyLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDM3NCkKKysrIEphdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEw
LTEyLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgUGFnZUFsbG9jYXRpb25B
bGlnbmVkLCBhIGNyb3NzLXBsYXRmb3JtIGFic3RyYWN0aW9uIGZvciBtZW1vcnkgYWxsb2NhdGlv
bnMgd2l0aCBhcmJpdHJhcnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEzNTkKKworICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaDogQWRkZWQuCisKIDIwMTAt
MTItMTggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQu
aAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Q
YWdlQWxsb2NhdGlvbkFsaWduZWQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oPgpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0
Mzc0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBA
QAorMjAxMC0xMi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFBhZ2VBbGxv
Y2F0aW9uQWxpZ25lZCwgYSBjcm9zcy1wbGF0Zm9ybSBhYnN0cmFjdGlvbiBmb3IgbWVtb3J5IGFs
bG9jYXRpb25zIHdpdGggYXJiaXRyYXJ5IGFsaWdubWVudCByZXF1aXJlbWVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzU5CisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy93dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg6IEFkZGVkLgor
CiAyMDEwLTEyLTIwICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25l
ZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfUGFn
ZUFsbG9jYXRpb25BbGlnbmVkX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfUGFnZUFsbG9jYXRpb25B
bGlnbmVkX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QYWdlQWxsb2NhdGlvbkFsaWduZWQu
aD4KKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77063</attachid>
            <date>2010-12-20 18:56:18 -0800</date>
            <delta_ts>2010-12-21 15:20:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51359-20101220185616.patch</filename>
            <type>text/plain</type>
            <size>43472</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0MzgxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTAtMTItMjAgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBQYWdlQWxsb2NhdGlvbkFsaWduZWQsIGEgY3Jvc3Mt
cGxhdGZvcm0gYWJzdHJhY3Rpb24gZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoIGFyYml0cmFy
eSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MTM1OQorICAgICAgICAKKyAgICAgICAgSSB0aGluayB0aGlzIHBh
dGNoIGZpeGVzIDxyZGFyOi8vcHJvYmxlbS84MTA3OTUyPiBbNS4wLjFdIFdFUiBjcmFzaCBpbgor
ICAgICAgICBIZWFwOjphbGxvY2F0ZUJsb2NrICgxOTAyNzUyOTI5KSwgYW5kIHNvbWUgb3RoZXIg
bGVha3MgYW5kIGNyYXNoZXMgYXMgd2VsbC4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
V1RGL1dURi52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogVXBkYXRlZCBidWlsZCBmaWxlcy4KKworICAgICAgICAqIHJ1bnRpbWUvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oOiBSZW1vdmVkLiBTdXBwbGFudGVkIGJ5CisgICAgICAgIFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZC4KKworICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9j
YXRlQmxvY2spOgorICAgICAgICAoSlNDOjpIZWFwOjpmcmVlQmxvY2spOgorICAgICAgICAoSlND
OjpIZWFwOjphZGRXZWFrR0NIYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6
IFN3aXRjaGVkIGZyb20gQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB0bworICAgICAgICBQYWdlQWxs
b2NhdGlvbkFsaWduZWQuCisKKyAgICAgICAgKiBydW50aW1lL0dDSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0dDSGFuZGxlLmg6IERpdHRvLgorCisgICAgICAgICogd3RmL1BhZ2VBbGxv
Y2F0aW9uLmg6CisgICAgICAgIChXVEY6OlBhZ2VBbGxvY2F0aW9uOjpQYWdlQWxsb2NhdGlvbik6
IFJlbW92ZWQgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbgorICAgICAgICBmdW5jdGlvbnMuIFN1
cHBsYW50ZWQgYnkgUGFnZUFsbG9jYXRpb25BbGlnbmVkLgorCisgICAgICAgICogd3RmL1BhZ2VB
bGxvY2F0aW9uQWxpZ25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlv
bkFsaWduZWQ6OmFsbG9jYXRlKToKKyAgICAgICAgKFdURjo6UGFnZUFsbG9jYXRpb25BbGlnbmVk
OjpkZWFsbG9jYXRlKToKKyAgICAgICAgKiB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCk6IE5ldyBjcm9zcy1wbGF0Zm9ybQorICAgICAgICBjbGFzcyBmb3IgZG9pbmcgYWxp
Z25lZCBtZW1vcnkgYWxsb2NhdGlvbi4gVGhpcyBjbGFzcyBwcm9wZXJseSBtYXRjaGVzCisgICAg
ICAgIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBsaWJyYXJ5IGNhbGxzLCBmaXhpbmcgYSBs
b25nLXN0YW5kaW5nIGJ1ZworICAgICAgICBpbiBQYWdlQWxsb2NhdGlvbi4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOiBSZW1vdmVkIHNvbWUgZGVmdW5jdGlvbiBWTSBwbGF0Zm9ybSBkZWZp
bmVzLgorCisgICAgICAgICogd3RmL3d0Zi5wcmk6IFVwZGF0ZWQgYnVpbGQgZmlsZXMuCisKIDIw
MTAtMTItMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNzQzODEp
CisrKyBKYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiAr
MTYyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAl3dGYvRmFzdE1hbGxvYy5jcHAgXAogCXd0
Zi9IYXNoVGFibGUuY3BwIFwKIAl3dGYvTWFpblRocmVhZC5jcHAgXAorCXd0Zi9QYWdlQWxsb2Nh
dGlvbkFsaWduZWQuY3BwXAogCXd0Zi9QYWdlQmxvY2suY3BwXAogCXd0Zi9SYW5kb21OdW1iZXIu
Y3BwIFwKIAl3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gNzQzODEpCisrKyBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgeWFyci9SZWdleEpJVC5jcHAKIAogICAgIHd0Zi9EYXRlTWF0aC5jcHAKKyAg
ICB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAogICAgIHd0Zi9QYWdlQmxvY2suY3BwCiAp
CiBTRVQoSmF2YVNjcmlwdENvcmVfSEVBREVSUyApCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQko
cmV2aXNpb24gNzQzODEpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CUphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmggXAogCUphdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXIuaCBcCi0JSmF2YVNjcmlwdENvcmUvcnVudGltZS9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgg
XAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAgXAogCUphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5j
cHAgXApAQCAtNDc3LDkgKzQ3NiwxMSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlK
YXZhU2NyaXB0Q29yZS93dGYvT3duUHRyQ29tbW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9P
d25QdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmggXAotCUphdmFT
Y3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxv
Y2F0aW9uQWxpZ25lZC5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbkFs
aWduZWQuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvUGFnZUJsb2NrLmNwcCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VC
bG9jay5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvUGFzc093bkFycmF5UHRyLmggXAogCUphdmFT
Y3JpcHRDb3JlL3d0Zi9QYXNzT3duUHRyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVm
UHRyLmggXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA3NDM4
MSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCw3ICsxNjQsNiBAQAogICAgICAgICAgICAgJ3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcCcs
CiAgICAgICAgICAgICAncHJvZmlsZXIvUHJvZmlsZXIuaCcsCiAgICAgICAgICAgICAncHJvZmls
ZXIvUHJvZmlsZXJTZXJ2ZXIuaCcsCi0gICAgICAgICAgICAncnVudGltZS9BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3J1bnRpbWUvQXJnTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJ3J1bnRpbWUvQXJnTGlzdC5oJywKICAgICAgICAgICAgICdydW50aW1lL0FyZ3VtZW50
cy5jcHAnLApAQCAtNDA4LDYgKzQwNyw4IEBACiAgICAgICAgICAgICAnd3RmL093blB0ckNvbW1v
bi5oJywKICAgICAgICAgICAgICd3dGYvUGFnZUJsb2NrLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L1BhZ2VBbGxvY2F0aW9uLmgnLAorICAgICAgICAgICAgJ3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWdu
ZWQuY3BwJywKKyAgICAgICAgICAgICd3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgnLAogICAg
ICAgICAgICAgJ3d0Zi9QYWdlUmVzZXJ2YXRpb24nLAogICAgICAgICAgICAgJ3d0Zi9QYXNzT3du
UHRyLmgnLAogICAgICAgICAgICAgJ3d0Zi9QYXNzUmVmUHRyLmgnLApJbmRleDogSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkocmV2
aXNpb24gNzQzODEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RG
L1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcwMSwxMCArNzAxLDIyIEBACiAJCQk+CiAJ
CTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFBhZ2VCbG9jay5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxQ
YWdlQWxsb2NhdGlvbi5oIgogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHd0ZlxQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwIgorCQkJPgorCQk8L0ZpbGU+
CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxQYWdlQWxsb2NhdGlvbkFsaWdu
ZWQuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3
dGZcUGFnZVJlc2VydmF0aW9uLmgiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNzQzODEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDggQEAK
IAkJMTRGOEJBM0UxMDdFQzg4NjAwOTg5MkRDIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMjE3QjkwOEU3RUVDQzAwMjNF
NUY2IC8qIEZhc3RNYWxsb2MuY3BwICovOyB9OwogCQkxNEY4QkE0MzEwN0VDODhDMDA5ODkyREMg
LyogVENTeXN0ZW1BbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTQxQkQ3MDA4RTgwQTE3MDAyQ0JFRTcgLyogVENTeXN0ZW1BbGxvYy5jcHAg
Ki87IH07CiAJCTE0RjhCQTRGMTA3RUM4OTkwMDk4OTJEQyAvKiBDb2xsZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NTIwMjU1NTk3
RDAxRkY2MEY3IC8qIENvbGxlY3Rvci5jcHAgKi87IH07CisJCTE0RkZGOThDMTJCRkZGNzUwMDc5
NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkY5OEExMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VB
bGxvY2F0aW9uQWxpZ25lZC5jcHAgKi87IH07CisJCTE0RkZGOThEMTJCRkZGNzUwMDc5NUJCOCAv
KiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0RkZGOThCMTJCRkZGNzUwMDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlv
bkFsaWduZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxODBCOUIwODBGMTZEOTRGMDA5QkRCQzUgLyogQ3VycmVudFRpbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4MEI5QUYwMEYxNkM1NjkwMDlC
REJDNSAvKiBDdXJyZW50VGltZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTE4MEI5QkZFMEYxNkU5NEQwMDlCREJDNSAvKiBDdXJyZW50VGltZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBCOUFF
RjBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3BwICovOyB9OwogCQkxOEJBQjU1MzEw
REFFMDU0MDAwRDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyNzEwREFERkNE
MDAwRDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAgKi87IH07CkBAIC01
MzksOCArNTQxLDYgQEAKIAkJQkNGRDhDOTIwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZEOEM5
MDBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmNwcCAqLzsgfTsKIAkJQkNGRDhDOTMwRUVC
MkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5o
ICovOyB9OwogCQlDMEEyNzI2MzBFNTBBMDYzMDBFOTZFMTUgLyogTm90Rm91bmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQTI3MjNGMEU1MDlGMUUw
MEU5NkUxNSAvKiBOb3RGb3VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUREMjcyNDY4MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBERDI3MjQ2NzEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICov
OyB9OwotCQlERDI3MjQ2OTEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQyNzI0
NjcxMjA4RDFGRjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERDM3N0NCQzEyMDcyQzE4
MDA2QTI1MTcgLyogQml0bWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERDM3N0NCQjEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFwLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRERFODJBRDMxMjA5RDk1
NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERERTgyQUQxMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAg
Ki87IH07CiAJCURERTgyQUQ0MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFEMTEyMDlEOTU1
MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OwpAQCAtNzM3LDYgKzczNyw4IEBACiAJCTE0
REUwRDY4MEQwMjQzMTQwMEFBQ0NBMiAvKiBKU0dsb2JhbE9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU1ZhcmlhYmxl
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFyaWFibGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGMzQ4OEUwRTk1RUY4QTAwMzY0
OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTRGRkY5OEExMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQWxsb2NhdGlvbkFs
aWduZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEZGRjk4QjEyQkZGRjc1
MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25BbGlnbmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VycmVudFRpbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUgLyogQ3Vy
cmVudFRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VycmVudFRpbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMThCQUI1MjcxMERBREZDRDAwMEQ5NDVC
IC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTI4LDcgKzExMzAsNiBAQAogCQlDMEEyNzIzRjBF
NTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTm90Rm91bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgw
QUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbnZlcnNpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREQyNzI0NjcxMjA4RDFGRjAwRjlBQkU3IC8qIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
RDM3N0NCQjEyMDcyQzE4MDA2QTI1MTcgLyogQml0bWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJpdG1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEREU4
MkFEMTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR0NIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEREU4MkFEMjEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NDMsNiArMTU0NCw4IEBACiAJCQkJOTMwM0Y1NjcwOTkxMThGQTAwQUQ3MUI4IC8q
IE93blB0ci5oICovLAogCQkJCTQ0MEI3QUVEMEZBRjdGQ0IwMDczMzIzRSAvKiBPd25QdHJDb21t
b24uaCAqLywKIAkJCQk4NjI3RTVFQTExRjEyODE5MDBBMzEzQjUgLyogUGFnZUFsbG9jYXRpb24u
aCAqLywKKwkJCQkxNEZGRjk4QTEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25BbGln
bmVkLmNwcCAqLywKKwkJCQkxNEZGRjk4QjEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9jYXRp
b25BbGlnbmVkLmggKi8sCiAJCQkJMTRCM0VGMDQxMkJDMjRERDAwRDI5RUZGIC8qIFBhZ2VCbG9j
ay5jcHAgKi8sCiAJCQkJMTRCM0VGMDMxMkJDMjRERDAwRDI5RUZGIC8qIFBhZ2VCbG9jay5oICov
LAogCQkJCTg2OTAyMzE0MTIwOTJENUMwMDYzMEFGOSAvKiBQYWdlUmVzZXJ2YXRpb24uaCAqLywK
QEAgLTE2NTcsNyArMTY2MCw2IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50
aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlERDI3
MjQ2NzEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oICovLAogCQkJ
CURERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLywKIAkJ
CQlEREY3QUJEMzExRjYwRUQyMDAxMDhFMzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwICov
LAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKQEAgLTIw
NDksNyArMjA1MSw2IEBACiAJCQkJMTQ0MDA3NTcwQTUzNzBEMjAwMDVGMDYxIC8qIEpTTm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDAwNUNDMEE1MzM4RjgwMDA1RjA2MSAvKiBOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQwMDc0QTBBNTM2Q0MyMDAwNUYwNjEgLyogTm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUREMjcyNDY4MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlEREU4MkFENjEyMDlEOTU1
MDA1QzE3NTYgLyogR0NIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMjM1Niw3ICsyMzU3LDYgQEAKIAkJ
CQk4NkQwOEQ1NDExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREQyNzI0NjkxMjA4RDFGRjAwRjlBQkU3IC8qIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCURERTgyQUQ4MTIwOUQ5
NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZGMzg4NTkxMjEx
MzBDQTAwN0E3Q0UzIC8qIEF0b21pY1N0cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
MkFGNEI2MTIyMzlDN0IwMDI0RTVCOCAvKiBEZWNpbWFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzNzUsNiArMjM3NSw3IEBACiAJCQkJRjNCRDMxRUQxMjY3MzU3NzAwNjU0NjdGIC8qIFRl
eHRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIz
IC8qIE9TQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEIzRUYwNTEyQkMyNEREMDBE
MjlFRkYgLyogUGFnZUJsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEZGRjk4RDEyQkZGRjc1
MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25BbGlnbmVkLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2
NTYsNiArMjY1Nyw3IEBACiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkUxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ3Vt
ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyog
QVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NERFMUQwMTIwQjg3NTYwMEQ0
MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRjEw
N0VDMzc2MDA0MjdBNDggLyogQXJyYXlDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDdGMzlDMDEwN0VDMzc2MDA0MjdBNDggLyogQXJyYXlQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVGREU0OUMwQkREMUQ0QTAwRTgwMTExIC8qIEFzc2VydGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNjg0LDYgKzI2ODYsNyBAQAogCQkJCTE0MjgwODIzMTA3RUMwMkMw
MDEzRTdCMiAvKiBEZWJ1Z2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMxMzU2NTBGMzAy
RkEzMDAzREZEM0EgLyogRGVidWdnZXJBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0OTU1OUVFMEREQ0RERjcwMDY0ODA4NyAvKiBEZWJ1Z2dlckNhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURENzEwN0VDNzlFMDA2NTA0NDYgLyogZHRvYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDNzEwN0VDMzc2MDA0MjdBNDggLyogRXJyb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzgxMDdFQzM3NjAwNDI3QTQ4IC8qIEVycm9y
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjk2LDYgKzI2OTksOCBAQAogCQkJ
CTE0RjhCQTNFMTA3RUM4ODYwMDk4OTJEQyAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0N0YzOUNCMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNDMTA3RUMzNzYwMDQyN0E0OCAvKiBGdW5jdGlv
blByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEREY3QUJENTExRjYwRUQyMDAxMDhF
MzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRERFODJB
RDcxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
MjgwODU1MTA3RUMwRTcwMDEzRTdCMiAvKiBHZXR0ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5Q0QxMDdFQzM3NjAwNDI3QTQ4IC8qIEdsb2JhbEV2YWxGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc2MCw2ICsyNzY1LDcgQEAKIAkJCQlBN0M1MzBFNDEw
MkEzODEzMDA1QkM3NDEgLyogTWFya1N0YWNrUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ0NjlEREYxMDdFQzdFNzAwNjUwNDQ2IC8qIE1hdGhPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTExRkM0QzkxMTdFRTI4NzAwNDI1MjcyIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFMTEwN0VDN0U3MDA2NTA0
NDYgLyogTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIx
QjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc3Miw2
ICsyNzc4LDEwIEBACiAJCQkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk2OUEwNzlBMEVEMUQzQUUwMEYxRjY4MSAvKiBP
cGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NTAxMDdFQzBENzAwMTNFN0IyIC8q
IE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQwMDA2OTMxMkE2RjlFMTAwNjRE
MTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTRGRkY5OEMx
MkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxNEIzRUYwNjEyQkMyNEREMDBEMjlFRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTk3MTRBRjVFMTIyRjMyMDcwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ4RjIxQkMxMDdFQzU0RDAwNDJFQzJDIC8qIFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzA1MkMzNDBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJl
bmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNzU0QzEwOEIwRjY4MDAwQUIzMDU2IC8qIHBj
cmVfY29tcGlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MDQsNiArMjgxNCw4IEBACiAJCQkJ
MTQ0NjlERUExMDdFQzdFNzAwNjUwNDQ2IC8qIFNjb3BlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZh
bEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODY0MzhGQzQxMjY1NTAzRTAwRTBE
RkNBIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEODdEQUUxMkJD
QTdEMTAwOEU3M0ExIC8qIFN0YWNrQm91bmRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5
REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NjhCRkEwRTExN0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSW1wbC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI4MjAsMjEgKzI4MzIsMTEgQEAKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNG
MEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwQjMzMEMyNzBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NzE0QUY0NjEyMkYyODg1MDA5MkQ5RjUgLyogVVJMU2VnbWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ0NjlERUUxMDdFQzdFNzAwNjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTFFRjc5QUEwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMTcxMTdDRjE5OTAwQjkwOEIxIC8qIFdURlN0cmluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQwOEQ1MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhy
ZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlEREY3QUJENTExRjYwRUQyMDAxMDhFMzYg
LyogR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRERFODJBRDcx
MjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3NERF
MUQwMTIwQjg3NTYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk5NzE0QUY0NjEyMkYyODg1MDA5MkQ5RjUgLyogVVJMU2VnbWVudHMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTcxNEFGNUUxMjJGMzIwNzAwOTJEOUY1IC8qIFBhcnNlZFVSTC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk5MDIxM0UzRDEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlz
dGljcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyog
U3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODY0MzhGQzQxMjY1
NTAzRTAwRTBERkNBIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYy
OTQ3OUMxMjZFNjk4QzAwQjNBQkY1IC8qIERlY2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMTQwMDA2OTMxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMTRCM0VGMDYxMkJDMjRERDAwRDI5RUZGIC8qIFBhZ2VCbG9jay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oCShyZXZpc2lvbiA3NDM4MSkKKysrIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIz
OSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKi8KLQotI2lmbmRl
ZiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yX2gKLSNkZWZpbmUgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cl9oCi0KLSNpbmNsdWRlIDx3dGYvQml0bWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1BhZ2VSZXNlcnZh
dGlvbi5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RydWN0IEFsaWduZWRNZW1vcnlBbGxvY2F0
b3JDb25zdGFudHMgewotLy8gU2V0IHNhbmUgZGVmYXVsdHMgaWYgLUQ8ZmxhZ25hbWU9dmFsdWU+
IHdhc24ndCBwcm92aWRlZCB2aWEgY29tcGlsZXIgYXJncwotI2lmIGRlZmluZWQoSlNDQ09MTEVD
VE9SX1ZJUlRVQUxNRU1fUkVTRVJWQVRJT04pCi0gICAgLy8gS2VlcCBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eSB3aXRoIHN5bWJpYW4gYnVpbGQgc3lzdGVtCi0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCB2aXJ0dWFsTWVtb3J5UmVzZXJ2YXRpb24gPSBKU0NDT0xMRUNUT1JfVklSVFVBTE1FTV9SRVNF
UlZBVElPTjsKLSNlbGlmIGRlZmluZWQoX19XSU5TX18pCi0gICAgLy8gRW11bGF0b3IgaGFzIGxp
bWl0ZWQgdmlydHVhbCBhZGRyZXNzIHNwYWNlCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCB2aXJ0
dWFsTWVtb3J5UmVzZXJ2YXRpb24gPSAweDQwMDAwMDsKLSNlbHNlCi0gICAgLy8gSFcgaGFzIHBs
ZW50eSBvZiB2aXJ0dWFsIGFkZHJlc3NlcwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmlydHVh
bE1lbW9yeVJlc2VydmF0aW9uID0gMHg4MDAwMDAwOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTxz
aXplX3QgYmxvY2tTaXplPiBjbGFzcyBBbGlnbmVkTWVtb3J5OwotdGVtcGxhdGU8c2l6ZV90IGJs
b2NrU2l6ZT4gY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKLQotI2lmIEhBVkUoUEFHRV9B
TExPQ0FURV9BTElHTkVEKQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotY2xhc3MgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjsKLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWNsYXNz
IEFsaWduZWRNZW1vcnkgewotcHVibGljOgotICAgIHZvaWQgZGVhbGxvY2F0ZSgpOwotICAgIHZv
aWQqIGJhc2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjxibG9ja1NpemU+OwotCi0gICAgQWxpZ25lZE1lbW9yeShQYWdlQWxsb2NhdGlvbik7
Ci0KLSAgICBQYWdlQWxsb2NhdGlvbiBtX2FsbG9jYXRpb247Ci19OwotCi10ZW1wbGF0ZTxzaXpl
X3QgYmxvY2tTaXplPgotY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0g
ICAgdm9pZCBkZXN0cm95KCk7Ci0gICAgQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+IGFsbG9jYXRl
KCk7Ci19OwotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotaW5saW5lIHZvaWQgQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+OjpkZXN0cm95KCkKLXsKLX0KLQotdGVtcGxhdGU8
c2l6ZV90IGJsb2NrU2l6ZT4KLWlubGluZSBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4gQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+OjphbGxvY2F0ZSgpCi17Ci0gICAgcmV0dXJuIEFs
aWduZWRNZW1vcnk8YmxvY2tTaXplPihQYWdlQWxsb2NhdGlvbjo6YWxsb2NhdGVBbGlnbmVkKGJs
b2NrU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpKTsKLX0KLQotdGVtcGxhdGU8c2l6
ZV90IGJsb2NrU2l6ZT4KLWlubGluZSB2b2lkIEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPjo6ZGVh
bGxvY2F0ZSgpCi17Ci0gICAgbV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKLX0KLQotdGVtcGxh
dGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWlubGluZSB2b2lkKiBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6
ZT46OmJhc2UoKQotewotICAgIHJldHVybiBtX2FsbG9jYXRpb24uYmFzZSgpOwotfQotCi10ZW1w
bGF0ZTxzaXplX3QgYmxvY2tTaXplPgotaW5saW5lIEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPjo6
QWxpZ25lZE1lbW9yeShQYWdlQWxsb2NhdGlvbiBhbGxvY2F0aW9uKQotICAgIDogbV9hbGxvY2F0
aW9uKGFsbG9jYXRpb24pCi17Ci19Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1Np
emU+Ci1jbGFzcyBBbGlnbmVkTWVtb3J5IHsKLXB1YmxpYzoKLSAgICB2b2lkIGRlYWxsb2NhdGUo
KTsKLSAgICB2b2lkKiBiYXNlKCk7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPjsKLQotICAgIEFsaWduZWRNZW1vcnkodm9pZCog
YmFzZSwgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+KiBhbGxvY2F0b3IpOwotCi0g
ICAgdm9pZCogbV9iYXNlOwotICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPiog
bV9hbGxvY2F0b3I7Ci19OwotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotY2xhc3MgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cigpOwotICAgIH5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCk7Ci0KLSAgICB2b2lkIGRlc3Ryb3ko
KTsKLSAgICBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4gYWxsb2NhdGUoKTsKLSAgICB2b2lkIGZy
ZWUoQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+KTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHJlc2VydmF0aW9uU2l6ZSA9IEFsaWduZWRNZW1vcnlBbGxvY2F0b3JDb25zdGFu
dHM6OnZpcnR1YWxNZW1vcnlSZXNlcnZhdGlvbjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJp
dG1hcFNpemUgPSByZXNlcnZhdGlvblNpemUgLyBibG9ja1NpemU7Ci0KLSAgICBQYWdlUmVzZXJ2
YXRpb24gbV9yZXNlcnZhdGlvbjsKLSAgICBzaXplX3QgbV9uZXh0RnJlZTsKLSAgICB1aW50cHRy
X3QgbV9yZXNlcnZhdGlvbkJhc2U7Ci0gICAgV1RGOjpCaXRtYXA8Yml0bWFwU2l6ZT4gbV9iaXRt
YXA7Ci19OwotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcjxibG9ja1NpemU+OjpBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkKLSAgICA6IG1fcmVzZXJ2
YXRpb24oUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHJlc2VydmF0aW9uU2l6ZSArIGJsb2NrU2l6
ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpKQotICAgICwgbV9uZXh0RnJlZSgwKQotewot
ICAgIC8vIGNoZWNrIHRoYXQgYmxvY2tTaXplIGFuZCByZXNlcnZhdGlvblNpemUgYXJlIHBvd2Vy
cyBvZiB0d28KLSAgICBBU1NFUlQoIShibG9ja1NpemUgJiAoYmxvY2tTaXplIC0gMSkpKTsKLSAg
ICBBU1NFUlQoIShyZXNlcnZhdGlvblNpemUgJiAocmVzZXJ2YXRpb25TaXplIC0gMSkpKTsKLQot
ICAgIC8vIGNoZWNrIHRoYXQgYmxvY2tTaXplIGlzIGEgbXVsdGlwbGUgb2YgcGFnZVNpemUgYW5k
IHRoYXQKLSAgICAvLyByZXNlcnZhdGlvblNpemUgaXMgYSBtdWx0aXBsZSBvZiBibG9ja1NpemUK
LSAgICBBU1NFUlQoIShibG9ja1NpemUgJiAoUGFnZUFsbG9jYXRpb246OnBhZ2VTaXplKCkgLSAx
KSkpOwotICAgIEFTU0VSVCghKHJlc2VydmF0aW9uU2l6ZSAmIChibG9ja1NpemUgLSAxKSkpOwot
Ci0gICAgQVNTRVJUKG1fcmVzZXJ2YXRpb24pOwotCi0gICAgbV9yZXNlcnZhdGlvbkJhc2UgPSBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9yZXNlcnZhdGlvbi5iYXNlKCkpOwotICAgIG1f
cmVzZXJ2YXRpb25CYXNlID0gKG1fcmVzZXJ2YXRpb25CYXNlICsgYmxvY2tTaXplKSAmIH4oYmxv
Y2tTaXplIC0gMSk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT46On5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkKLXsKLSAg
ICBkZXN0cm95KCk7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7Ci19Ci0KLXRlbXBs
YXRlPHNpemVfdCBibG9ja1NpemU+Ci1pbmxpbmUgdm9pZCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PGJsb2NrU2l6ZT46OmRlc3Ryb3koKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
aXRtYXBTaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fYml0bWFwLmdldChpKSkgewotICAgICAg
ICAgICAgdm9pZCogYmxvY2tBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9yZXNl
cnZhdGlvbkJhc2UgKyBtX25leHRGcmVlICogYmxvY2tTaXplKTsKLSAgICAgICAgICAgIG1fcmVz
ZXJ2YXRpb24uZGVjb21taXQoYmxvY2tBZGRyZXNzLCBibG9ja1NpemUpOwotCi0gICAgICAgICAg
ICBtX2JpdG1hcC5jbGVhcihpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8c2l6
ZV90IGJsb2NrU2l6ZT4KLUFsaWduZWRNZW1vcnk8YmxvY2tTaXplPiBBbGlnbmVkTWVtb3J5QWxs
b2NhdG9yPGJsb2NrU2l6ZT46OmFsbG9jYXRlKCkKLXsKLSAgICB3aGlsZSAobV9uZXh0RnJlZSA8
IGJpdG1hcFNpemUpIHsKLSAgICAgICAgaWYgKCFtX2JpdG1hcC5nZXQobV9uZXh0RnJlZSkpIHsK
LSAgICAgICAgICAgIHZvaWQqIGJsb2NrQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KG1fcmVzZXJ2YXRpb25CYXNlICsgbV9uZXh0RnJlZSAqIGJsb2NrU2l6ZSk7Ci0gICAgICAgICAg
ICBtX3Jlc2VydmF0aW9uLmNvbW1pdChibG9ja0FkZHJlc3MsIGJsb2NrU2l6ZSk7Ci0KLSAgICAg
ICAgICAgIG1fYml0bWFwLnNldChtX25leHRGcmVlKTsKLSAgICAgICAgICAgICsrbV9uZXh0RnJl
ZTsKLQotICAgICAgICAgICAgcmV0dXJuIEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPihibG9ja0Fk
ZHJlc3MsIHRoaXMpOwotICAgICAgICB9Ci0gICAgICAgIG1fYml0bWFwLmFkdmFuY2VUb05leHRG
cmVlQml0KG1fbmV4dEZyZWUpOwotICAgIH0KLQotICAgIGlmIChtX2JpdG1hcC5pc0Z1bGwoKSkK
LSAgICAgICAgcmV0dXJuIEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPigwLCB0aGlzKTsKLQotICAg
IG1fbmV4dEZyZWUgPSAwOwotCi0gICAgcmV0dXJuIGFsbG9jYXRlKCk7Ci19Ci0KLXRlbXBsYXRl
PHNpemVfdCBibG9ja1NpemU+Ci12b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXpl
Pjo6ZnJlZShBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4gYWxsb2NhdGlvbikKLXsKLSAgICBBU1NF
UlQoYWxsb2NhdGlvbi5iYXNlKCkpOwotICAgIG1fcmVzZXJ2YXRpb24uZGVjb21taXQoYWxsb2Nh
dGlvbi5iYXNlKCksIGJsb2NrU2l6ZSk7Ci0KLSAgICBzaXplX3QgZGlmZiA9IChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oYWxsb2NhdGlvbi5iYXNlKCkpIC0gbV9yZXNlcnZhdGlvbkJhc2Up
OwotICAgIEFTU0VSVCghKGRpZmYgJiAoYmxvY2tTaXplIC0gMSkpKTsKLQotICAgIHNpemVfdCBp
ID0gZGlmZiAvIGJsb2NrU2l6ZTsKLSAgICBBU1NFUlQobV9iaXRtYXAuZ2V0KGkpKTsKLQotICAg
IG1fYml0bWFwLmNsZWFyKGkpOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotaW5s
aW5lIHZvaWQgQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+OjpkZWFsbG9jYXRlKCkKLXsKLSAgICBt
X2FsbG9jYXRvci0+ZnJlZSgqdGhpcyk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+
Ci1pbmxpbmUgdm9pZCogQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+OjpiYXNlKCkKLXsKLSAgICBy
ZXR1cm4gbV9iYXNlOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotQWxpZ25lZE1l
bW9yeTxibG9ja1NpemU+OjpBbGlnbmVkTWVtb3J5KHZvaWQqIGJhc2UsIEFsaWduZWRNZW1vcnlB
bGxvY2F0b3I8YmxvY2tTaXplPiogYWxsb2NhdG9yKQotICAgIDogbV9iYXNlKGJhc2UpCi0gICAg
LCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi17Ci19Ci0KLSNlbmRpZgotCi19Ci0KLSNlbmRpZgpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gNzQzODEpCisr
KyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MSw5ICsxNzEsNiBAQCB2b2lkIEhlYXA6OmRlc3Ryb3koKQogCiAgICAgZnJlZUJsb2Nrcygp
OwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fd2Vha0dDSGFuZGxlUG9vbHMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIG1fd2Vha0dDSGFuZGxlUG9vbHNbaV0uZGVhbGxvY2F0ZSgpOwot
CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgIGlmIChtX2N1cnJlbnRUaHJl
YWRSZWdpc3RyYXIpIHsKICAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfZGVsZXRlKG1f
Y3VycmVudFRocmVhZFJlZ2lzdHJhcik7CkBAIC0xODcsMTMgKzE4NCwxMiBAQCB2b2lkIEhlYXA6
OmRlc3Ryb3koKQogICAgICAgICB0ID0gbmV4dDsKICAgICB9CiAjZW5kaWYKLSAgICBtX2Jsb2Nr
YWxsb2NhdG9yLmRlc3Ryb3koKTsKICAgICBtX2dsb2JhbERhdGEgPSAwOwogfQogCiBORVZFUl9J
TkxJTkUgQ29sbGVjdG9yQmxvY2sqIEhlYXA6OmFsbG9jYXRlQmxvY2soKQogewotICAgIEFsaWdu
ZWRDb2xsZWN0b3JCbG9jayBhbGxvY2F0aW9uID0gbV9ibG9ja2FsbG9jYXRvci5hbGxvY2F0ZSgp
OworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25B
bGlnbmVkOjphbGxvY2F0ZShCTE9DS19TSVpFLCBCTE9DS19TSVpFLCBPU0FsbG9jYXRvcjo6SlNH
Q0hlYXBQYWdlcyk7CiAgICAgQ29sbGVjdG9yQmxvY2sqIGJsb2NrID0gc3RhdGljX2Nhc3Q8Q29s
bGVjdG9yQmxvY2sqPihhbGxvY2F0aW9uLmJhc2UoKSk7CiAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgQ1JBU0goKTsKQEAgLTIxMSwxMiArMjA3LDEyIEBAIE5FVkVSX0lOTElORSBDb2xsZWN0b3JC
bG9jayogSGVhcDo6YWxsb2MKIAogICAgIHNpemVfdCBudW1CbG9ja3MgPSBtX2hlYXAubnVtQmxv
Y2tzOwogICAgIGlmIChtX2hlYXAudXNlZEJsb2NrcyA9PSBudW1CbG9ja3MpIHsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBtYXhOdW1CbG9ja3MgPSBVTE9OR19NQVggLyBzaXplb2YoQWxp
Z25lZENvbGxlY3RvckJsb2NrKSAvIEdST1dUSF9GQUNUT1I7CisgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWF4TnVtQmxvY2tzID0gVUxPTkdfTUFYIC8gc2l6ZW9mKFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCkgLyBHUk9XVEhfRkFDVE9SOwogICAgICAgICBpZiAobnVtQmxvY2tzID4gbWF4TnVt
QmxvY2tzKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgbnVtQmxvY2tzID0gbWF4KE1J
Tl9BUlJBWV9TSVpFLCBudW1CbG9ja3MgKiBHUk9XVEhfRkFDVE9SKTsKICAgICAgICAgbV9oZWFw
Lm51bUJsb2NrcyA9IG51bUJsb2NrczsKLSAgICAgICAgbV9oZWFwLmJsb2NrcyA9IHN0YXRpY19j
YXN0PEFsaWduZWRDb2xsZWN0b3JCbG9jayo+KGZhc3RSZWFsbG9jKG1faGVhcC5ibG9ja3MsIG51
bUJsb2NrcyAqIHNpemVvZihBbGlnbmVkQ29sbGVjdG9yQmxvY2spKSk7CisgICAgICAgIG1faGVh
cC5ibG9ja3MgPSBzdGF0aWNfY2FzdDxQYWdlQWxsb2NhdGlvbkFsaWduZWQqPihmYXN0UmVhbGxv
YyhtX2hlYXAuYmxvY2tzLCBudW1CbG9ja3MgKiBzaXplb2YoUGFnZUFsbG9jYXRpb25BbGlnbmVk
KSkpOwogICAgIH0KICAgICBtX2hlYXAuYmxvY2tzW21faGVhcC51c2VkQmxvY2tzKytdID0gYWxs
b2NhdGlvbjsKIApAQCAtMjM5LDcgKzIzNSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmZy
ZWVCbG9jayhzaXplX3QKIAogICAgIGlmIChtX2hlYXAubnVtQmxvY2tzID4gTUlOX0FSUkFZX1NJ
WkUgJiYgbV9oZWFwLnVzZWRCbG9ja3MgPCBtX2hlYXAubnVtQmxvY2tzIC8gTE9XX1dBVEVSX0ZB
Q1RPUikgewogICAgICAgICBtX2hlYXAubnVtQmxvY2tzID0gbV9oZWFwLm51bUJsb2NrcyAvIEdS
T1dUSF9GQUNUT1I7IAotICAgICAgICBtX2hlYXAuYmxvY2tzID0gc3RhdGljX2Nhc3Q8QWxpZ25l
ZENvbGxlY3RvckJsb2NrKj4oZmFzdFJlYWxsb2MobV9oZWFwLmJsb2NrcywgbV9oZWFwLm51bUJs
b2NrcyAqIHNpemVvZihBbGlnbmVkQ29sbGVjdG9yQmxvY2spKSk7CisgICAgICAgIG1faGVhcC5i
bG9ja3MgPSBzdGF0aWNfY2FzdDxQYWdlQWxsb2NhdGlvbkFsaWduZWQqPihmYXN0UmVhbGxvYyht
X2hlYXAuYmxvY2tzLCBtX2hlYXAubnVtQmxvY2tzICogc2l6ZW9mKFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZCkpKTsKICAgICB9CiB9CiAKQEAgLTc1NCwxMCArNzUwLDEwIEBAIFdlYWtHQ0hhbmRsZSog
SGVhcDo6YWRkV2Vha0dDSGFuZGxlKEpTQ2UKICAgICAgICAgaWYgKCF3ZWFrR0NIYW5kbGVQb29s
KGkpLT5pc0Z1bGwoKSkKICAgICAgICAgICAgIHJldHVybiB3ZWFrR0NIYW5kbGVQb29sKGkpLT5h
bGxvY2F0ZShwdHIpOwogCi0gICAgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29sOjpwb29s
U2l6ZT4gYWxsb2NhdGlvbiA9IG1fd2Vha0dDSGFuZGxlUG9vbEFsbG9jYXRvci5hbGxvY2F0ZSgp
OworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25B
bGlnbmVkOjphbGxvY2F0ZShXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZSwgV2Vha0dDSGFuZGxl
UG9vbDo6cG9vbFNpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKICAgICBtX3dlYWtH
Q0hhbmRsZVBvb2xzLmFwcGVuZChhbGxvY2F0aW9uKTsKIAotICAgIFdlYWtHQ0hhbmRsZVBvb2wq
IHBvb2wgPSBuZXcgKGFsbG9jYXRpb24pIFdlYWtHQ0hhbmRsZVBvb2woKTsKKyAgICBXZWFrR0NI
YW5kbGVQb29sKiBwb29sID0gbmV3IChhbGxvY2F0aW9uLmJhc2UoKSkgV2Vha0dDSGFuZGxlUG9v
bCgpOwogICAgIHJldHVybiBwb29sLT5hbGxvY2F0ZShwdHIpOwogfQogCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29sbGVjdG9yLmgJKHJldmlzaW9uIDc0MzgxKQorKysgSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2lm
bmRlZiBDb2xsZWN0b3JfaAogI2RlZmluZSBDb2xsZWN0b3JfaAogCi0jaW5jbHVkZSAiQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkdDSGFuZGxlLmgiCiAjaW5jbHVkZSAiSlNW
YWx1ZS5oIgogI2luY2x1ZGUgPHN0ZGRlZi5oPgpAQCAtMzQsNiArMzMsNyBAQAogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFnZUFsbG9jYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNjQsMTMgKzY0LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gMjU2ICogMTAyNDsg
Ly8gMjU2awogI2VuZGlmCiAKLSAgICB0eXBlZGVmIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8QkxP
Q0tfU0laRT4gQ29sbGVjdG9yQmxvY2tBbGxvY2F0b3I7Ci0gICAgdHlwZWRlZiBBbGlnbmVkTWVt
b3J5PEJMT0NLX1NJWkU+IEFsaWduZWRDb2xsZWN0b3JCbG9jazsKLQogICAgIHN0cnVjdCBDb2xs
ZWN0b3JIZWFwIHsKICAgICAgICAgc2l6ZV90IG5leHRCbG9jazsKICAgICAgICAgc2l6ZV90IG5l
eHRDZWxsOwotICAgICAgICBBbGlnbmVkQ29sbGVjdG9yQmxvY2sqIGJsb2NrczsKKyAgICAgICAg
UGFnZUFsbG9jYXRpb25BbGlnbmVkKiBibG9ja3M7CiAgICAgICAgIAogICAgICAgICB2b2lkKiBu
ZXh0TnVtYmVyOwogCkBAIC0xOTEsNyArMTg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IENvbGxlY3RvckhlYXAgbV9oZWFwOwogCiAgICAgICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3Rl
Y3RlZFZhbHVlczsKLSAgICAgICAgV1RGOjpWZWN0b3I8QWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5k
bGVQb29sOjpwb29sU2l6ZT4gPiBtX3dlYWtHQ0hhbmRsZVBvb2xzOworICAgICAgICBXVEY6OlZl
Y3RvcjxQYWdlQWxsb2NhdGlvbkFsaWduZWQ+IG1fd2Vha0dDSGFuZGxlUG9vbHM7CiAgICAgICAg
IFdURjo6VmVjdG9yPFdURjo6VmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qID4gbV90ZW1wU29ydGlu
Z1ZlY3RvcnM7CiAKICAgICAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+KiBtX21h
cmtMaXN0U2V0OwpAQCAtMjA5LDEwICsyMDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cHRocmVhZF9rZXlfdCBtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXI7CiAjZW5kaWYKIAotICAgICAg
ICAvLyBBbGxvY2F0ZXMgY29sbGVjdG9yIGJsb2NrcyB3aXRoIGNvcnJlY3QgYWxpZ25tZW50Ci0g
ICAgICAgIENvbGxlY3RvckJsb2NrQWxsb2NhdG9yIG1fYmxvY2thbGxvY2F0b3I7IAotICAgICAg
ICBXZWFrR0NIYW5kbGVQb29sOjpBbGxvY2F0b3IgbV93ZWFrR0NIYW5kbGVQb29sQWxsb2NhdG9y
OyAKLSAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogICAgIH07
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCShyZXZpc2lvbiA3NDM4MSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw5ICs4Myw0IEBAIHZvaWQgV2Vha0dDSGFuZGxlUG9vbDo6ZnJlZShXZWFrR0NIYW5kbGUK
ICAgICAtLW1fZW50cmllc1NpemU7CiB9CiAKLXZvaWQqIFdlYWtHQ0hhbmRsZVBvb2w6Om9wZXJh
dG9yIG5ldyhzaXplX3QsIEFsaWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+
JiBhbGxvY2F0aW9uKQotewotICAgIHJldHVybiBhbGxvY2F0aW9uLmJhc2UoKTsKLX0KLQogfQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hhbmRsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NIYW5kbGUuaAkocmV2aXNpb24gNzQzODEpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dDSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgR0NIYW5kbGVfaAogI2RlZmluZSBHQ0hhbmRsZV9oCiAKLSNpbmNsdWRl
ICJBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTkxLDggKzkxLDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgcG9vbE1hc2sgPSB+KHBvb2xTaXplIC0gMSk7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBudW1Qb29sRW50cmllcyA9IChwb29sU2l6ZSAtIHNpemVvZihIZWFwKikgLSAz
ICogc2l6ZW9mKHVuc2lnbmVkKSkgLyBzaXplb2YoV2Vha0dDSGFuZGxlKTsKIAotICAgIHR5cGVk
ZWYgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxXZWFrR0NIYW5kbGVQb29sOjpwb29sU2l6ZT4gQWxs
b2NhdG9yOwotCiAgICAgV2Vha0dDSGFuZGxlUG9vbCgpOwogCiAgICAgV2Vha0dDSGFuZGxlKiBh
bGxvY2F0ZShKU0NlbGwqIGNlbGwpOwpAQCAtMTA2LDggKzEwNCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgdXBkYXRlKCk7CiAKLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBBbGlnbmVk
TWVtb3J5PFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplPiYpOwotCiBwcml2YXRlOgogICAgIEhl
YXAqIG1faGVhcDsKICAgICB1bnNpZ25lZCBtX2VudHJpZXNTaXplOwpJbmRleDogSmF2YVNjcmlw
dENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL1BhZ2VBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDc0MzgxKQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1BhZ2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDEwICs3Nyw2IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIENhbGxlcnMgbWF5IGFsc28gb3B0aW5hbGx5IHByb3ZpZGUgYSBm
bGFnIGluZGljYXRpbmcgdGhlIHVzYWdlIChmb3IgdXNlIGJ5CiAgICAgc3lzdGVtIG1lbW9yeSB1
c2FnZSB0cmFja2luZyB0b29scywgd2hlcmUgaW1wbGVtZW50ZWQpLCBhbmQgYm9vbGVhbiB2YWx1
ZXMKICAgICBzcGVjaWZ5aW5nIHRoZSByZXF1aXJlZCBwcm90ZWN0aW9uIChkZWZhdWx0aW5nIHRv
IHdyaXRhYmxlLCBub24tZXhlY3V0YWJsZSkuCi0KLSAgICBXaGVyZSBIQVZFKFBBR0VfQUxMT0NB
VEVfQUxJR05FRCkgaXMgYXZhaWxhYmxlIG1lbW9yeSBtYXkgYWxzbyBiZSBhbGxvY2F0ZWQKLSAg
ICB3aXRoIGEgc3BlY2lmaWVkIGFsaWdubWVudC4gIFBhZ2VBbGxvY2F0aW9uOjphbGxvY2F0ZUFs
aWduZWQgcmVxdWlyZXMgdGhhdCB0aGUKLSAgICBzaXplIGlzIGEgcG93ZXIgb2YgdHdvIHRoYXQg
aXMgPj0gc3lzdGVtIHBhZ2Ugc2l6ZS4KICovCiAKIGNsYXNzIFBhZ2VBbGxvY2F0aW9uIDogcHJp
dmF0ZSBQYWdlQmxvY2sgewpAQCAtOTEsMjAgKzg3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFBhZ2VBbGxvY2F0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUsIHVz
YWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUpOwogICAgIH0KIAotI2lmIEhBVkUoUEFH
RV9BTExPQ0FURV9BTElHTkVEKQotICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0ZUFs
aWduZWQoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9y
OjpVbmtub3duVXNhZ2UpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXpl
KSk7Ci0gICAgICAgIEFTU0VSVChpc1Bvd2VyT2ZUd28oc2l6ZSkpOwotICAgICAgICByZXR1cm4g
c3lzdGVtQWxsb2NhdGVBbGlnbmVkKHNpemUsIHVzYWdlKTsKLSAgICB9Ci0jZW5kaWYKLQogICAg
IFBhZ2VBbGxvY2F0aW9uKCk7CiAKICAgICB1c2luZyBQYWdlQmxvY2s6Om9wZXJhdG9yIGJvb2w7
Ci0gICAgdXNpbmcgUGFnZUJsb2NrOjpiYXNlOwogICAgIHVzaW5nIFBhZ2VCbG9jazo6c2l6ZTsK
KyAgICB1c2luZyBQYWdlQmxvY2s6OmJhc2U7CiAKICAgICB2b2lkIGRlYWxsb2NhdGUoKQogICAg
IHsKQEAgLTExOSw4MSArMTA2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIDogUGFnZUJsb2NrKGJh
c2UsIHNpemUpCiAgICAgewogICAgIH0KLQotI2lmIEhBVkUoUEFHRV9BTExPQ0FURV9BTElHTkVE
KQotICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlvbiBzeXN0ZW1BbGxvY2F0ZUFsaWduZWQoc2l6ZV90
LCBPU0FsbG9jYXRvcjo6VXNhZ2UpOwotI2VuZGlmCiB9OwogCiBpbmxpbmUgUGFnZUFsbG9jYXRp
b246OlBhZ2VBbGxvY2F0aW9uKCkKLSAgICA6IFBhZ2VCbG9jaygpCi17Ci19Ci0KLQotI2lmIEhB
VkUoTU1BUCkKLQotaW5saW5lIFBhZ2VBbGxvY2F0aW9uIFBhZ2VBbGxvY2F0aW9uOjpzeXN0ZW1B
bGxvY2F0ZUFsaWduZWQoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSkKLXsK
LSNpZiBPUyhEQVJXSU4pCi0gICAgdm1fYWRkcmVzc190IGFkZHJlc3MgPSAwOwotICAgIGludCBm
bGFncyA9IFZNX0ZMQUdTX0FOWVdIRVJFOwotICAgIGlmICh1c2FnZSAhPSAtMSkKLSAgICAgICAg
ZmxhZ3MgfD0gdXNhZ2U7Ci0gICAgdm1fbWFwKGN1cnJlbnRfdGFzaygpLCAmYWRkcmVzcywgc2l6
ZSwgKHNpemUgLSAxKSwgZmxhZ3MsIE1FTU9SWV9PQkpFQ1RfTlVMTCwgMCwgRkFMU0UsIFBST1Rf
UkVBRCB8IFBST1RfV1JJVEUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMsIFZN
X0lOSEVSSVRfREVGQVVMVCk7Ci0gICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGFkZHJlc3MpLCBzaXplKTsKLSNlbGlmIEhBVkUoUE9TSVhfTUVNQUxJR04p
Ci0gICAgdm9pZCogYWRkcmVzczsKLSAgICBwb3NpeF9tZW1hbGlnbigmYWRkcmVzcywgc2l6ZSwg
c2l6ZSk7Ci0gICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKGFkZHJlc3MsIHNpemUpOwotI2Vsc2UK
LSAgICBzaXplX3QgZXh0cmEgPSBzaXplIC0gcGFnZVNpemUoKTsKLQotICAgIC8vIENoZWNrIGZv
ciBvdmVyZmxvdy4KLSAgICBpZiAoKHNpemUgKyBleHRyYSkgPCBzaXplKQotICAgICAgICByZXR1
cm4gUGFnZUFsbG9jYXRpb24oMCwgc2l6ZSk7Ci0KLSNpZiBPUyhEQVJXSU4pICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKQotICAgIGludCBmZCA9IHVzYWdlOwotI2Vsc2UKLSAgICBpbnQg
ZmQgPSAtMTsKLSNlbmRpZgotICAgIHZvaWQqIG1tYXBSZXN1bHQgPSBtbWFwKDAsIHNpemUgKyBl
eHRyYSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgZmQs
IDApOwotICAgIGlmIChtbWFwUmVzdWx0ID09IE1BUF9GQUlMRUQpCi0gICAgICAgIHJldHVybiBQ
YWdlQWxsb2NhdGlvbigwLCBzaXplKTsKLSAgICB1aW50cHRyX3QgYWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihtbWFwUmVzdWx0KTsKLQotICAgIHNpemVfdCBhZGp1c3QgPSAw
OwotICAgIGlmICgoYWRkcmVzcyAmIChzaXplIC0gMSkpKQotICAgICAgICBhZGp1c3QgPSBzaXpl
IC0gKGFkZHJlc3MgJiAoc2l6ZSAtIDEpKTsKLSAgICBpZiAoYWRqdXN0ID4gMCkKLSAgICAgICAg
bXVubWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFkZHJlc3MpLCBhZGp1c3QpOwotICAgIGlm
IChhZGp1c3QgPCBleHRyYSkKLSAgICAgICAgbXVubWFwKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGFkZHJlc3MgKyBhZGp1c3QgKyBzaXplKSwgZXh0cmEgLSBhZGp1c3QpOwotICAgIGFkZHJlc3Mg
Kz0gYWRqdXN0OwotCi0gICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGFkZHJlc3MpLCBzaXplKTsKLSNlbmRpZgotfQotCi0jZWxpZiBIQVZFKFZJUlRVQUxB
TExPQykKLQotI2lmIEhBVkUoQUxJR05FRF9NQUxMT0MpCi1pbmxpbmUgUGFnZUFsbG9jYXRpb24g
UGFnZUFsbG9jYXRpb246OnN5c3RlbUFsbG9jYXRlQWxpZ25lZChzaXplX3Qgc2l6ZSwgT1NBbGxv
Y2F0b3I6OlVzYWdlIHVzYWdlKQogewotI2lmIENPTVBJTEVSKE1JTkdXKSAmJiAhQ09NUElMRVIo
TUlOR1c2NCkKLSAgICB2b2lkKiBhZGRyZXNzID0gX19taW5nd19hbGlnbmVkX21hbGxvYyhzaXpl
LCBzaXplKTsKLSNlbHNlCi0gICAgdm9pZCogYWRkcmVzcyA9IF9hbGlnbmVkX21hbGxvYyhzaXpl
LCBzaXplKTsKLSNlbmRpZgotICAgIG1lbXNldChhZGRyZXNzLCAwLCBzaXplKTsKLSAgICByZXR1
cm4gUGFnZUFsbG9jYXRpb24oYWRkcmVzcywgc2l6ZSk7CiB9Ci0jZW5kaWYKIAotI2VuZGlmCi0K
LX0KK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlBhZ2VBbGxvY2F0aW9uOwogCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAkocmV2
aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIgorCituYW1lc3BhY2Ug
V1RGIHsKKworUGFnZUFsbG9jYXRpb25BbGlnbmVkIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxs
b2NhdGUoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQsIE9TQWxsb2NhdG9yOjpVc2FnZSB1
c2FnZSkKK3sKKyAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7CisgICAgQVNTRVJUKGlz
UGFnZUFsaWduZWQoYWxpZ25tZW50KSk7CisgICAgQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1l
bnQpKTsKKyAgICBBU1NFUlQoc2l6ZSA+PSBhbGlnbm1lbnQpOworCisgICAgc2l6ZV90IGFsaWdu
bWVudE1hc2sgPSBhbGlnbm1lbnQgLSAxOworCisjaWYgT1MoREFSV0lOKQorICAgIHZtX2FkZHJl
c3NfdCBhZGRyZXNzID0gMDsKKyAgICBpbnQgZmxhZ3MgPSBWTV9GTEFHU19BTllXSEVSRTsKKyAg
ICBpZiAodXNhZ2UgIT0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSkKKyAgICAgICAgZmxhZ3Mg
fD0gdXNhZ2U7CisgICAgdm1fbWFwKGN1cnJlbnRfdGFzaygpLCAmYWRkcmVzcywgc2l6ZSwgYWxp
Z25tZW50TWFzaywgZmxhZ3MsIE1FTU9SWV9PQkpFQ1RfTlVMTCwgMCwgRkFMU0UsIFBST1RfUkVB
RCB8IFBST1RfV1JJVEUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMsIFZNX0lO
SEVSSVRfREVGQVVMVCk7CisgICAgdm9pZCogdHJ1ZUJhc2UgPSByZWludGVycHJldF9jYXN0PHZv
aWQqPihhZGRyZXNzKTsKKyAgICB2b2lkKiBhbGlnbmVkQmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGFkZHJlc3MpOworI2Vsc2UKKyAgICBzaXplX3QgYWxpZ25tZW50RGVsdGEgPSBhbGln
bm1lbnQgLSBwYWdlU2l6ZSgpOworICAgIHZvaWQqIHRydWVCYXNlID0gT1NBbGxvY2F0b3I6OnJl
c2VydmUoc2l6ZSArIGFsaWdubWVudERlbHRhLCB1c2FnZSwgdHJ1ZSwgZmFsc2UpOworICAgIHZv
aWQqIGFsaWduZWRCYXNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRydWVCYXNlKSAm
IGFsaWdubWVudE1hc2sKKyAgICAgICAgPyByZWludGVycHJldF9jYXN0PHZvaWQqPigocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHRydWVCYXNlKSAmIH5hbGlnbm1lbnRNYXNrKSArIGFsaWdu
bWVudCk7CisgICAgICAgIDogdHJ1ZUJhc2U7CisgICAgT1NBbGxvY2F0b3I6OmNvbW1pdChhbGln
bmVkQmFzZSwgc2l6ZSwgdHJ1ZSwgZmFsc2UpOworI2VuZGlmCisKKyAgICByZXR1cm4gUGFnZUFs
bG9jYXRpb25BbGlnbmVkKHRydWVCYXNlLCBhbGlnbmVkQmFzZSwgc2l6ZSk7Cit9CisKK3ZvaWQg
UGFnZUFsbG9jYXRpb25BbGlnbmVkOjpkZWFsbG9jYXRlKCkKK3sKKyAgICBBU1NFUlQoKnRoaXMp
OworICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCB0bXA7CisgICAgc3RkOjpzd2FwKHRtcCwgKnRo
aXMpOworCisjaWYgT1MoREFSV0lOKQorICAgIHZtX2RlYWxsb2NhdGUoY3VycmVudF90YXNrKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190Pih0bXAubV90cnVlQmFzZSksIHRtcC5zaXpl
KCkpOworI2Vsc2UKKyAgICBPU0FsbG9jYXRvcjo6cmVsZWFzZSh0bXAubV90cnVlQmFzZSwgdG1w
LnNpemUoKSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oCShyZXZpc2lvbiAwKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlQWxsb2NhdGlvbkFsaWduZWRf
aAorI2RlZmluZSBQYWdlQWxsb2NhdGlvbkFsaWduZWRfaAorCisjaW5jbHVkZSA8d3RmL09TQWxs
b2NhdG9yLmg+CisjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitjbGFzcyBQYWdlQWxsb2NhdGlvbkFsaWduZWQgOiBwcml2YXRlIFBhZ2VCbG9jayB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0ZShzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NB
bGxvY2F0b3I6OlVua25vd25Vc2FnZSk7CisKKyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQoKTsK
KworICAgIHVzaW5nIFBhZ2VCbG9jazo6b3BlcmF0b3IgYm9vbDsKKyAgICB1c2luZyBQYWdlQmxv
Y2s6OnNpemU7CisgICAgdXNpbmcgUGFnZUJsb2NrOjpiYXNlOworCisgICAgdm9pZCBkZWFsbG9j
YXRlKCk7CisKK3ByaXZhdGU6CisgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkKHZvaWQqIHRydWVC
YXNlLCB2b2lkKiBhbGlnbmVkQmFzZSwgc2l6ZV90IHNpemUpOworCisgICAgdm9pZCogbV90cnVl
QmFzZTsKK307CisKK2lubGluZSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCgpCit7Cit9CisKK2lubGluZSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxv
Y2F0aW9uQWxpZ25lZCh2b2lkKiB0cnVlQmFzZSwgdm9pZCogYWxpZ25lZEJhc2UsIHNpemVfdCBz
aXplKQorICAgIDogUGFnZUJsb2NrKGFsaWduZWRCYXNlLCBzaXplKQorICAgICwgbV90cnVlQmFz
ZSh0cnVlQmFzZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UGFn
ZUFsbG9jYXRpb25BbGlnbmVkOworCisjZW5kaWYgLy8gUGFnZUFsbG9jYXRpb25BbGlnbmVkX2gK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA3NDM4MSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjEsMTMgKzgyMSw2IEBACiAK
ICNlbmRpZgogCi0jaWYgSEFWRShNTUFQKSB8fCAoSEFWRShWSVJUVUFMQUxMT0MpICYmIEhBVkUo
QUxJR05FRF9NQUxMT0MpKQotI2RlZmluZSBIQVZFX1BBR0VfQUxMT0NBVEVfQUxJR05FRCAxCi0j
ZW5kaWYKLSNpZiBIQVZFKE1NQVApCi0jZGVmaW5lIEhBVkVfUEFHRV9BTExPQ0FURV9BVCAxCi0j
ZW5kaWYKLQogLyogRU5BQkxFIG1hY3JvIGRlZmF1bHRzICovCiAKICNpZiBQTEFURk9STShRVCkK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi93dGYucHJpCShyZXZpc2lvbiA3NDM4MSkKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi93dGYucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHd0Zi9xdC9NYWluVGhyZWFkUXQuY3BwIFwKICAgICB3dGYvcXQvU3RyaW5nUXQuY3BwIFwK
ICAgICB3dGYvcXQvVGhyZWFkaW5nUXQuY3BwIFwKKyAgICB3dGYvUGFnZUFsbG9jYXRpb25BbGln
bmVkLmNwcCBcCiAgICAgd3RmL1BhZ2VCbG9jay5jcHAgXAogICAgIHd0Zi9SYW5kb21OdW1iZXIu
Y3BwIFwKICAgICB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBcCkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDM3NCkKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTEyLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgUGFnZUFsbG9jYXRpb25BbGlnbmVkLCBhIGNyb3NzLXBsYXRmb3JtIGFic3Ry
YWN0aW9uIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgd2l0aCBhcmJpdHJhcnkgYWxpZ25tZW50IHJl
cXVpcmVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTEzNTkKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlv
bkFsaWduZWQuaDogQWRkZWQuCisKIDIwMTAtMTItMTggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFy
cmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJ
bmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BhZ2VBbGxvY2F0aW9u
QWxpZ25lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRH
bHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5oPgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0Mzc0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0xMi0yMCAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCwgYSBjcm9zcy1wbGF0Zm9y
bSBhYnN0cmFjdGlvbiBmb3IgbWVtb3J5IGFsbG9jYXRpb25zIHdpdGggYXJiaXRyYXJ5IGFsaWdu
bWVudCByZXF1aXJlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUxMzU5CisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvUGFnZUFs
bG9jYXRpb25BbGlnbmVkLmg6IEFkZGVkLgorCiAyMDEwLTEyLTIwICBBbmRyZWkgUG9wZXNjdSAg
PGFuZHJlaXBAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cu
CkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWdu
ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYWdlQWxs
b2NhdGlvbkFsaWduZWQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfUGFnZUFsbG9jYXRpb25BbGlnbmVkX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfUGFnZUFsbG9jYXRpb25BbGlnbmVkX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9QYWdlQWxsb2NhdGlvbkFsaWduZWQuaD4KKyNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="68110"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77157</attachid>
            <date>2010-12-21 15:20:18 -0800</date>
            <delta_ts>2010-12-21 15:36:26 -0800</delta_ts>
            <desc>Cleaned up, fixed build errors, cleaned up WINCE extra decommit, re-added check for successful release.</desc>
            <filename>PageAllocationAligned.patch</filename>
            <type>text/plain</type>
            <size>53898</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTAtMTItMjEgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBQYWdlQWxsb2NhdGlvbkFsaWduZWQsIGEgY3Jvc3Mt
cGxhdGZvcm0gYWJzdHJhY3Rpb24gZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyB3aXRoIGFyYml0cmFy
eSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MTM1OQorICAgICAgICAKKyAgICAgICAgSSB0aGluayB0aGlzIHBh
dGNoIGZpeGVzIDxyZGFyOi8vcHJvYmxlbS84MTA3OTUyPiBbNS4wLjFdIFdFUiBjcmFzaCBpbgor
ICAgICAgICBIZWFwOjphbGxvY2F0ZUJsb2NrICgxOTAyNzUyOTI5KSwgYW5kIHNvbWUgb3RoZXIg
bGVha3MgYW5kIGNyYXNoZXMgYXMgd2VsbC4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
V1RGL1dURi52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogVXBkYXRlZCBidWlsZCBmaWxlcy4KKworICAgICAgICAqIHJ1bnRpbWUvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvci5oOiBSZW1vdmVkLiBTdXBwbGFudGVkIGJ5CisgICAgICAgIFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZC4KKworICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9j
YXRlQmxvY2spOgorICAgICAgICAoSlNDOjpIZWFwOjpmcmVlQmxvY2spOgorICAgICAgICAoSlND
OjpIZWFwOjphZGRXZWFrR0NIYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9yLmg6
IFN3aXRjaGVkIGZyb20gQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB0bworICAgICAgICBQYWdlQWxs
b2NhdGlvbkFsaWduZWQuCisKKyAgICAgICAgKiBydW50aW1lL0dDSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0dDSGFuZGxlLmg6IERpdHRvLgorCisgICAgICAgICogd3RmL1BhZ2VBbGxv
Y2F0aW9uLmg6CisgICAgICAgIChXVEY6OlBhZ2VBbGxvY2F0aW9uOjpQYWdlQWxsb2NhdGlvbik6
IFJlbW92ZWQgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbgorICAgICAgICBmdW5jdGlvbnMuIFN1
cHBsYW50ZWQgYnkgUGFnZUFsbG9jYXRpb25BbGlnbmVkLgorCisgICAgICAgICogd3RmL1BhZ2VB
bGxvY2F0aW9uQWxpZ25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlv
bkFsaWduZWQ6OmFsbG9jYXRlKToKKyAgICAgICAgKFdURjo6UGFnZUFsbG9jYXRpb25BbGlnbmVk
OjpkZWFsbG9jYXRlKToKKyAgICAgICAgKiB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmg6IEFk
ZGVkLgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OlBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCk6IE5ldyBjcm9zcy1wbGF0Zm9ybQorICAgICAgICBjbGFzcyBmb3IgZG9pbmcgYWxp
Z25lZCBtZW1vcnkgYWxsb2NhdGlvbi4gVGhpcyBjbGFzcyBwcm9wZXJseSBtYXRjaGVzCisgICAg
ICAgIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBsaWJyYXJ5IGNhbGxzLCBmaXhpbmcgYSBs
b25nLXN0YW5kaW5nIGJ1ZworICAgICAgICBpbiBQYWdlQWxsb2NhdGlvbi4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOiBSZW1vdmVkIHNvbWUgZGVmdW5jdGlvbiBWTSBwbGF0Zm9ybSBkZWZp
bmVzLgorCisgICAgICAgICogd3RmL3d0Zi5wcmk6IFVwZGF0ZWQgYnVpbGQgZmlsZXMuCisKIDIw
MTAtMTItMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NDQwMi4KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawko
cmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAl3dGYvRmFzdE1h
bGxvYy5jcHAgXAogCXd0Zi9IYXNoVGFibGUuY3BwIFwKIAl3dGYvTWFpblRocmVhZC5jcHAgXAor
CXd0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwXAogCXd0Zi9QYWdlQmxvY2suY3BwXAogCXd0
Zi9SYW5kb21OdW1iZXIuY3BwIFwKIAl3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBcCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3IEBAIFNFVChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgeWFyci9SZWdleEpJVC5jcHAKIAogICAgIHd0Zi9E
YXRlTWF0aC5jcHAKKyAgICB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAogICAgIHd0Zi9Q
YWdlQmxvY2suY3BwCiApCiBTRVQoSmF2YVNjcmlwdENvcmVfSEVBREVSUyApCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmggXAog
CUphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXIuaCBcCi0JSmF2YVNjcmlwdENvcmUvcnVudGltZS9BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmggXAogCUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAgXAog
CUphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAgXApAQCAtNDc3LDkgKzQ3NiwxMSBAQCBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyQ29tbW9uLmggXAogCUphdmFT
Y3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0
aW9uLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaCBcCisJSmF2YVNjcmlwdENv
cmUvd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9Q
YWdlQWxsb2NhdGlvbkFsaWduZWQuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZh
dGlvbi5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUJsb2NrLmNwcCBcCisJSmF2YVNjcmlw
dENvcmUvd3RmL1BhZ2VCbG9jay5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvUGFzc093bkFycmF5
UHRyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9QYXNzT3duUHRyLmggXAogCUphdmFTY3JpcHRD
b3JlL3d0Zi9QYXNzUmVmUHRyLmggXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
cmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2MCw3ICszNjAsNyBAQCBfX1pOM1dURjEwZmFzdENhbGxvY0VtbQog
X19aTjNXVEYxMGZhc3RNYWxsb2NFbQogX19aTjNXVEYxMGZhc3RTdHJEdXBFUEtjCiBfX1pOM1dU
RjExT1NBbGxvY2F0b3IxNnJlc2VydmVBbmRDb21taXRFbU5TMF81VXNhZ2VFYmIKLV9fWk4zV1RG
MTFPU0FsbG9jYXRvcjdyZWxlYXNlRVB2bQorX19aTjNXVEYxMU9TQWxsb2NhdG9yMThyZWxlYXNl
RGVjb21taXR0ZWRFUHZtCiBfX1pOM1dURjExY29tbWVudEF0b21FCiBfX1pOM1dURjExY3VycmVu
dFRpbWVFdgogX19aTjNXVEYxMWR0b2FSb3VuZERQRVBjZGlSYlJpUmoKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDYgQEAKICAg
ICAgICAgICAgICdwcm9maWxlci9Qcm9maWxlci5jcHAnLAogICAgICAgICAgICAgJ3Byb2ZpbGVy
L1Byb2ZpbGVyLmgnLAogICAgICAgICAgICAgJ3Byb2ZpbGVyL1Byb2ZpbGVyU2VydmVyLmgnLAot
ICAgICAgICAgICAgJ3J1bnRpbWUvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oJywKICAgICAgICAg
ICAgICdydW50aW1lL0FyZ0xpc3QuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL0FyZ0xpc3Qu
aCcsCiAgICAgICAgICAgICAncnVudGltZS9Bcmd1bWVudHMuY3BwJywKQEAgLTQwOCw2ICs0MDcs
OCBAQAogICAgICAgICAgICAgJ3d0Zi9Pd25QdHJDb21tb24uaCcsCiAgICAgICAgICAgICAnd3Rm
L1BhZ2VCbG9jay5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9QYWdlQWxsb2NhdGlvbi5oJywKKyAg
ICAgICAgICAgICd3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCcsCisgICAgICAgICAgICAn
d3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oJywKICAgICAgICAgICAgICd3dGYvUGFnZVJlc2Vy
dmF0aW9uJywKICAgICAgICAgICAgICd3dGYvUGFzc093blB0ci5oJywKICAgICAgICAgICAgICd3
dGYvUGFzc1JlZlB0ci5oJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC03MDEsMTAgKzcwMSwyMiBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxQYWdlQmxvY2suaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8
RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcUGFnZUFsbG9jYXRpb24uaCIKIAkJCT4K
IAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcUGFnZUFsbG9j
YXRpb25BbGlnbmVkLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlx3dGZcUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgiCisJCQk+CisJCTwvRmlsZT4K
KwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFBhZ2VSZXNlcnZhdGlvbi5oIgog
CQkJPgogCQk8L0ZpbGU+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc0NDIxKQorKysg
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw4IEBACiAJCTE0RjhCQTNFMTA3RUM4ODYwMDk4
OTJEQyAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1RTIxN0I5MDhFN0VFQ0MwMDIzRTVGNiAvKiBGYXN0TWFsbG9jLmNwcCAq
LzsgfTsKIAkJMTRGOEJBNDMxMDdFQzg4QzAwOTg5MkRDIC8qIFRDU3lzdGVtQWxsb2MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0MUJENzAwOEU4
MEExNzAwMkNCRUU3IC8qIFRDU3lzdGVtQWxsb2MuY3BwICovOyB9OwogCQkxNEY4QkE0RjEwN0VD
ODk5MDA5ODkyREMgLyogQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODUyMDI1NTU5N0QwMUZGNjBGNyAvKiBDb2xsZWN0b3Iu
Y3BwICovOyB9OworCQkxNEZGRjk4QzEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25B
bGlnbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RkZGOThBMTJCRkZGNzUwMDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwICov
OyB9OworCQkxNEZGRjk4RDEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25BbGlnbmVk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZGRjk4
QjEyQkZGRjc1MDA3OTVCQjggLyogUGFnZUFsbG9jYXRpb25BbGlnbmVkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTgwQjlCMDgwRjE2RDk0RjAw
OUJEQkM1IC8qIEN1cnJlbnRUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxODBCOUJG
RTBGMTZFOTREMDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTgwQjlBRUYwRjE2QzU2OTAwOUJEQkM1IC8qIEN1
cnJlbnRUaW1lLmNwcCAqLzsgfTsKIAkJMThCQUI1NTMxMERBRTA1NDAwMEQ5NDVCIC8qIFRocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMThCQUI1MjcxMERBREZDRDAwMEQ5NDVCIC8qIFRocmVhZElkZW50
aWZpZXJEYXRhUHRocmVhZHMuY3BwICovOyB9OwpAQCAtNTM5LDggKzU0MSw2IEBACiAJCUJDRkQ4
QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1
bXBUYWJsZS5jcHAgKi87IH07CiAJCUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFi
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4
QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUw
QTA2MzAwRTk2RTE1IC8qIE5vdEZvdW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMEEyNzIzRjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlERDI3MjQ2
ODEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQyNzI0NjcxMjA4RDFGRjAwRjlB
QkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLzsgfTsKLQkJREQyNzI0NjkxMjA4RDFG
RjAwRjlBQkU3IC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJREQzNzdDQkMxMjA3MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQzNzdDQkIxMjA3
MkMxODAwNkEyNTE3IC8qIEJpdG1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCURERTgyQUQzMTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hhbmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREU4MkFE
MTEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwICovOyB9OwogCQlEREU4MkFENDEyMDlE
OTU1MDA1QzE3NTYgLyogR0NIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmNw
cCAqLzsgfTsKQEAgLTczNyw2ICs3MzcsOCBAQAogCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIg
LyogSlNHbG9iYWxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNHbG9iYWxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYy
NTI1NjBEMDhERDhEMDA0RUNGRkYgLyogSlNWYXJpYWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhcmlhYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0RjM0ODhFMEU5NUVGOEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sbGVjdG9ySGVhcEl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RkZGOThBMTJCRkZGNzUw
MDc5NUJCOCAvKiBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMTRGRkY5OEIxMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlQWxsb2Nh
dGlvbkFsaWduZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTgwQjlBRUYwRjE2
QzU2OTAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEN1cnJlbnRUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTgwQjlBRjAwRjE2QzU2OTAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1cnJlbnRUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE4QkFCNTI3MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0
YVB0aHJlYWRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTEyOCw3ICsxMTMwLDYgQEAKIAkJQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZv
dW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEZvdW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRl
Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0
ZUNvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBB
RDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUREMjcyNDY3MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQzNzdDQkIxMjA3MkMxODAwNkEyNTE3
IC8qIEJpdG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRERFODJBRDExMjA5RDk1NTAwNUMxNzU2IC8q
IEdDSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDSGFu
ZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRERFODJBRDIxMjA5RDk1NTAw
NUMxNzU2IC8qIEdDSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
SGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQzLDYgKzE1NDQsOCBA
QAogCQkJCTkzMDNGNTY3MDk5MTE4RkEwMEFENzFCOCAvKiBPd25QdHIuaCAqLywKIAkJCQk0NDBC
N0FFRDBGQUY3RkNCMDA3MzMyM0UgLyogT3duUHRyQ29tbW9uLmggKi8sCiAJCQkJODYyN0U1RUEx
MUYxMjgxOTAwQTMxM0I1IC8qIFBhZ2VBbGxvY2F0aW9uLmggKi8sCisJCQkJMTRGRkY5OEExMkJG
RkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAgKi8sCisJCQkJMTRGRkY5
OEIxMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oICovLAogCQkJCTE0
QjNFRjA0MTJCQzI0REQwMEQyOUVGRiAvKiBQYWdlQmxvY2suY3BwICovLAogCQkJCTE0QjNFRjAz
MTJCQzI0REQwMEQyOUVGRiAvKiBQYWdlQmxvY2suaCAqLywKIAkJCQk4NjkwMjMxNDEyMDkyRDVD
MDA2MzBBRjkgLyogUGFnZVJlc2VydmF0aW9uLmggKi8sCkBAIC0xNjU3LDcgKzE2NjAsNiBAQAog
CQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJREQyNzI0NjcxMjA4RDFGRjAwRjlBQkU3IC8q
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCAqLywKIAkJCQlEREY3QUJEMjExRjYwRUQyMDAxMDhF
MzYgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJCQkJRERGN0FCRDMxMUY2MEVEMjAwMTA4
RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCkBAIC0yMDQ5LDcgKzIwNTEsNiBAQAogCQkJCTE0
NDAwNzU3MEE1MzcwRDIwMDA1RjA2MSAvKiBKU05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDQwMDVDQzBBNTMzOEY4MDAwNUYwNjEgLyogTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ0MDA3NEEwQTUzNkNDMjAwMDVGMDYxIC8qIE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlERDI3MjQ2ODEyMDhEMUZGMDBGOUFCRTcgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRERFODJBRDYxMjA5RDk1NTAwNUMxNzU2IC8qIEdDSGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKQEAgLTIzNTYsNyArMjM1Nyw2IEBACiAJCQkJODZEMDhENTQxMTc5MzYxMzAwNkU1
RUQwIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJC
NEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCURERjdBQkQ0
MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAot
CQkJCUREMjcyNDY5MTIwOEQxRkYwMEY5QUJFNyAvKiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEREU4MkFEODEyMDlEOTU1MDA1QzE3NTYgLyogR0NIYW5kbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RjM4ODU5MTIxMTMwQ0EwMDdBN0NFMyAvKiBBdG9taWNT
dHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjJBRjRCNjEyMjM5QzdCMDAyNEU1Qjgg
LyogRGVjaW1hbE51bWJlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzc1LDYgKzIzNzUsNyBAQAog
CQkJCUYzQkQzMUVEMTI2NzM1NzcwMDY1NDY3RiAvKiBUZXh0UG9zaXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MDAwNjc3MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRCM0VGMDUxMkJDMjRERDAwRDI5RUZGIC8qIFBhZ2VCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTRGRkY5OEQxMkJGRkY3NTAwNzk1QkI4IC8qIFBhZ2VBbGxvY2F0
aW9uQWxpZ25lZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjU2LDYgKzI2NTcsNyBAQAogCQkJCTE0
N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBNzRERTFEMDEyMEI4NzU2MDBENDBENUIgLyogQVJNdjdBc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkYxMDdFQzM3NjAwNDI3QTQ4IC8qIEFycmF5
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzAxMDdFQzM3NjAwNDI3
QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1RkRFNDlDMEJE
RDFENEEwMEU4MDExMSAvKiBBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY4NCw2
ICsyNjg2LDcgQEAKIAkJCQkxNDI4MDgyMzEwN0VDMDJDMDAxM0U3QjIgLyogRGVidWdnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzMTM1NjUwRjMwMkZBMzAwM0RGRDNBIC8qIERlYnVnZ2Vy
QWN0aXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDk1NTlFRTBERENEREY3MDA2NDgw
ODcgLyogRGVidWdnZXJDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyOTQ3OUMx
MjZFNjk4QzAwQjNBQkY1IC8qIERlY2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ0NjlERDcxMDdFQzc5RTAwNjUwNDQ2IC8qIGR0b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ3RjM5QzcxMDdFQzM3NjAwNDI3QTQ4IC8qIEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0N0YzOUM4MTA3RUMzNzYwMDQyN0E0OCAvKiBFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjY5Niw2ICsyNjk5LDggQEAKIAkJCQkxNEY4QkEzRTEwN0VDODg2MDA5ODky
REMgLyogRmFzdE1hbGxvYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDQjEwN0VDMzc2
MDA0MjdBNDggLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDdGMzlDQzEwN0VDMzc2MDA0MjdBNDggLyogRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFj
a0NGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURERTgyQUQ3MTIwOUQ5NTUwMDVDMTc1NiAvKiBH
Q0hhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg1NTEwN0VDMEU3MDAxM0U3QjIg
LyogR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNEMTA3RUMzNzYw
MDQyN0E0OCAvKiBHbG9iYWxFdmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVE
RkM5MzMwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NjAsNiArMjc2NSw3IEBACiAJCQkJQTdDNTMwRTQxMDJBMzgxMzAwNUJDNzQxIC8qIE1hcmtT
dGFja1Bvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1MDQ0
NiAvKiBNYXRoT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMUZDNEM5MTE3RUUyODcw
MDQyNTI3MiAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTAyMTNFM0QxMjNBNDBDMjAw
RDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlE
RTAxMDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2IC8qIE5hdGl2ZUVycm9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUI3MTA3RUM1NDcwMDQyRUMyQyAvKiBO
b2Rlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NzIsNiArMjc3OCwxMCBAQAogCQkJCUUxMjRB
OEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NjlBMDc5QTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODUwMTA3RUMwRDcwMDEzRTdCMiAvKiBPcGVyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0RkZGOThDMTJCRkZGNzUwMDc5NUJCOCAvKiBQYWdl
QWxsb2NhdGlvbkFsaWduZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTRCM0VGMDYxMkJDMjRE
RDAwRDI5RUZGIC8qIFBhZ2VCbG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzE0QUY1RTEy
MkYzMjA3MDA5MkQ5RjUgLyogUGFyc2VkVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYy
MUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMw
NTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzMDc1NEMxMDhCMEY2ODAwMEFCMzA1NiAvKiBwY3JlX2NvbXBpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yODA0LDYgKzI4MTQsOCBAQAogCQkJCTE0NDY5REVBMTA3RUM3RTcwMDY1MDQ0
NiAvKiBTY29wZUNoYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCRjI4QTI5MTFBMzNEQzMw
MDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA0MDJDMEU2
QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcz
MEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTg2NDM4RkM0MTI2NTUwM0UwMEUwREZDQSAvKiBTdHJpbmdCdWlsZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDg3REFFMTJCQ0E3RDEwMDhFNzNBMSAvKiBTdGFja0Jv
dW5kcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2OURFQjEwN0VDN0U3MDA2NTA0NDYgLyog
U3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4QkZBMEUxMTdDRUZE
MTAwQjkwOEIxIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODIwLDIxICsy
ODMyLDExIEBACiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9y
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEE0MkUzRjBGNEY2MEVFMDA1OTkwOTkgLyogVGlt
ZW91dENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEIzMzBDMjcwRjM4QzYyMzAwNjky
REUzIC8qIFR5cGVUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcxNEFGNDYxMjJGMjg4
NTAwOTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5REVF
MTA3RUM3RTcwMDY1MDQ0NiAvKiBVU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUY3
OUFBMENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2OEJG
QTE3MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODZEMDhENTMxMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRERGN0FCRDUxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NG
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCURERTgyQUQ3MTIwOUQ5NTUwMDVDMTc1NiAvKiBHQ0hh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzRERTFEMDEyMEI4NzU2MDBENDBENUIgLyog
QVJNdjdBc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTcxNEFGNDYxMjJGMjg4NTAw
OTJEOUY1IC8qIFVSTFNlZ21lbnRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk3MTRBRjVFMTIy
RjMyMDcwMDkyRDlGNSAvKiBQYXJzZWRVUkwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTAyMTNF
M0QxMjNBNDBDMjAwRDQyMkYzIC8qIE1lbW9yeVN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQTczMEI2MTMxMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTg2NDM4RkM0MTI2NTUwM0UwMEUwREZDQSAvKiBTdHJpbmdC
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGMjk0NzlDMTI2RTY5OEMwMEIzQUJGNSAv
KiBEZWNpbWFsTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0MDAwNjkzMTJBNkY5RTEw
MDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0QjNF
RjA2MTJCQzI0REQwMEQyOUVGRiAvKiBQYWdlQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAko
cmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyMzkgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpZm5kZWYgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cl9oCi0jZGVmaW5lIEFsaWduZWRNZW1vcnlBbGxvY2F0b3JfaAotCi0jaW5jbHVkZSA8d3RmL0Jp
dG1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRpb24uaD4KLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLXN0cnVjdCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yQ29uc3RhbnRzIHsKLS8vIFNldCBz
YW5lIGRlZmF1bHRzIGlmIC1EPGZsYWduYW1lPXZhbHVlPiB3YXNuJ3QgcHJvdmlkZWQgdmlhIGNv
bXBpbGVyIGFyZ3MKLSNpZiBkZWZpbmVkKEpTQ0NPTExFQ1RPUl9WSVJUVUFMTUVNX1JFU0VSVkFU
SU9OKQotICAgIC8vIEtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBzeW1iaWFuIGJ1
aWxkIHN5c3RlbQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmlydHVhbE1lbW9yeVJlc2VydmF0
aW9uID0gSlNDQ09MTEVDVE9SX1ZJUlRVQUxNRU1fUkVTRVJWQVRJT047Ci0jZWxpZiBkZWZpbmVk
KF9fV0lOU19fKQotICAgIC8vIEVtdWxhdG9yIGhhcyBsaW1pdGVkIHZpcnR1YWwgYWRkcmVzcyBz
cGFjZQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmlydHVhbE1lbW9yeVJlc2VydmF0aW9uID0g
MHg0MDAwMDA7Ci0jZWxzZQotICAgIC8vIEhXIGhhcyBwbGVudHkgb2YgdmlydHVhbCBhZGRyZXNz
ZXMKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHZpcnR1YWxNZW1vcnlSZXNlcnZhdGlvbiA9IDB4
ODAwMDAwMDsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4gY2xhc3Mg
QWxpZ25lZE1lbW9yeTsKLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+IGNsYXNzIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3I7Ci0KLSNpZiBIQVZFKFBBR0VfQUxMT0NBVEVfQUxJR05FRCkKLQotdGVt
cGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I7Ci0K
LXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1jbGFzcyBBbGlnbmVkTWVtb3J5IHsKLXB1Ymxp
YzoKLSAgICB2b2lkIGRlYWxsb2NhdGUoKTsKLSAgICB2b2lkKiBiYXNlKCk7Ci0KLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPjsKLQot
ICAgIEFsaWduZWRNZW1vcnkoUGFnZUFsbG9jYXRpb24pOwotCi0gICAgUGFnZUFsbG9jYXRpb24g
bV9hbGxvY2F0aW9uOwotfTsKLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWNsYXNzIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IgewotcHVibGljOgotICAgIHZvaWQgZGVzdHJveSgpOwotICAg
IEFsaWduZWRNZW1vcnk8YmxvY2tTaXplPiBhbGxvY2F0ZSgpOwotfTsKLQotdGVtcGxhdGU8c2l6
ZV90IGJsb2NrU2l6ZT4KLWlubGluZSB2b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tT
aXplPjo6ZGVzdHJveSgpCi17Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1pbmxp
bmUgQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+IEFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tT
aXplPjo6YWxsb2NhdGUoKQotewotICAgIHJldHVybiBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4o
UGFnZUFsbG9jYXRpb246OmFsbG9jYXRlQWxpZ25lZChibG9ja1NpemUsIE9TQWxsb2NhdG9yOjpK
U0dDSGVhcFBhZ2VzKSk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1pbmxpbmUg
dm9pZCBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT46OmRlYWxsb2NhdGUoKQotewotICAgIG1fYWxs
b2NhdGlvbi5kZWFsbG9jYXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1p
bmxpbmUgdm9pZCogQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+OjpiYXNlKCkKLXsKLSAgICByZXR1
cm4gbV9hbGxvY2F0aW9uLmJhc2UoKTsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4K
LWlubGluZSBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT46OkFsaWduZWRNZW1vcnkoUGFnZUFsbG9j
YXRpb24gYWxsb2NhdGlvbikKLSAgICA6IG1fYWxsb2NhdGlvbihhbGxvY2F0aW9uKQotewotfQot
Ci0jZWxzZQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotY2xhc3MgQWxpZ25lZE1lbW9y
eSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBkZWFsbG9jYXRlKCk7Ci0gICAgdm9pZCogYmFzZSgpOwot
Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2Nr
U2l6ZT47Ci0KLSAgICBBbGlnbmVkTWVtb3J5KHZvaWQqIGJhc2UsIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I8YmxvY2tTaXplPiogYWxsb2NhdG9yKTsKLQotICAgIHZvaWQqIG1fYmFzZTsKLSAgICBB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT4qIG1fYWxsb2NhdG9yOwotfTsKLQotdGVt
cGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Igewot
cHVibGljOgotICAgIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKTsKLSAgICB+QWxpZ25lZE1lbW9y
eUFsbG9jYXRvcigpOwotCi0gICAgdm9pZCBkZXN0cm95KCk7Ci0gICAgQWxpZ25lZE1lbW9yeTxi
bG9ja1NpemU+IGFsbG9jYXRlKCk7Ci0gICAgdm9pZCBmcmVlKEFsaWduZWRNZW1vcnk8YmxvY2tT
aXplPik7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCByZXNlcnZhdGlvblNp
emUgPSBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yQ29uc3RhbnRzOjp2aXJ0dWFsTWVtb3J5UmVzZXJ2
YXRpb247Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBiaXRtYXBTaXplID0gcmVzZXJ2YXRpb25T
aXplIC8gYmxvY2tTaXplOwotCi0gICAgUGFnZVJlc2VydmF0aW9uIG1fcmVzZXJ2YXRpb247Ci0g
ICAgc2l6ZV90IG1fbmV4dEZyZWU7Ci0gICAgdWludHB0cl90IG1fcmVzZXJ2YXRpb25CYXNlOwot
ICAgIFdURjo6Qml0bWFwPGJpdG1hcFNpemU+IG1fYml0bWFwOwotfTsKLQotdGVtcGxhdGU8c2l6
ZV90IGJsb2NrU2l6ZT4KLUFsaWduZWRNZW1vcnlBbGxvY2F0b3I8YmxvY2tTaXplPjo6QWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcigpCi0gICAgOiBtX3Jlc2VydmF0aW9uKFBhZ2VSZXNlcnZhdGlvbjo6
cmVzZXJ2ZShyZXNlcnZhdGlvblNpemUgKyBibG9ja1NpemUsIE9TQWxsb2NhdG9yOjpKU0dDSGVh
cFBhZ2VzKSkKLSAgICAsIG1fbmV4dEZyZWUoMCkKLXsKLSAgICAvLyBjaGVjayB0aGF0IGJsb2Nr
U2l6ZSBhbmQgcmVzZXJ2YXRpb25TaXplIGFyZSBwb3dlcnMgb2YgdHdvCi0gICAgQVNTRVJUKCEo
YmxvY2tTaXplICYgKGJsb2NrU2l6ZSAtIDEpKSk7Ci0gICAgQVNTRVJUKCEocmVzZXJ2YXRpb25T
aXplICYgKHJlc2VydmF0aW9uU2l6ZSAtIDEpKSk7Ci0KLSAgICAvLyBjaGVjayB0aGF0IGJsb2Nr
U2l6ZSBpcyBhIG11bHRpcGxlIG9mIHBhZ2VTaXplIGFuZCB0aGF0Ci0gICAgLy8gcmVzZXJ2YXRp
b25TaXplIGlzIGEgbXVsdGlwbGUgb2YgYmxvY2tTaXplCi0gICAgQVNTRVJUKCEoYmxvY2tTaXpl
ICYgKFBhZ2VBbGxvY2F0aW9uOjpwYWdlU2l6ZSgpIC0gMSkpKTsKLSAgICBBU1NFUlQoIShyZXNl
cnZhdGlvblNpemUgJiAoYmxvY2tTaXplIC0gMSkpKTsKLQotICAgIEFTU0VSVChtX3Jlc2VydmF0
aW9uKTsKLQotICAgIG1fcmVzZXJ2YXRpb25CYXNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKTsKLSAgICBtX3Jlc2VydmF0aW9uQmFzZSA9IChtX3Jl
c2VydmF0aW9uQmFzZSArIGJsb2NrU2l6ZSkgJiB+KGJsb2NrU2l6ZSAtIDEpOwotfQotCi10ZW1w
bGF0ZTxzaXplX3QgYmxvY2tTaXplPgotQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+
Ojp+QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpCi17Ci0gICAgZGVzdHJveSgpOwotICAgIG1fcmVz
ZXJ2YXRpb24uZGVhbGxvY2F0ZSgpOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgot
aW5saW5lIHZvaWQgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+OjpkZXN0cm95KCkK
LXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYml0bWFwU2l6ZTsgKytpKSB7Ci0gICAg
ICAgIGlmIChtX2JpdG1hcC5nZXQoaSkpIHsKLSAgICAgICAgICAgIHZvaWQqIGJsb2NrQWRkcmVz
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fcmVzZXJ2YXRpb25CYXNlICsgbV9uZXh0RnJl
ZSAqIGJsb2NrU2l6ZSk7Ci0gICAgICAgICAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KGJsb2Nr
QWRkcmVzcywgYmxvY2tTaXplKTsKLQotICAgICAgICAgICAgbV9iaXRtYXAuY2xlYXIoaSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBibG9ja1NpemU+Ci1BbGlnbmVk
TWVtb3J5PGJsb2NrU2l6ZT4gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9ja1NpemU+OjphbGxv
Y2F0ZSgpCi17Ci0gICAgd2hpbGUgKG1fbmV4dEZyZWUgPCBiaXRtYXBTaXplKSB7Ci0gICAgICAg
IGlmICghbV9iaXRtYXAuZ2V0KG1fbmV4dEZyZWUpKSB7Ci0gICAgICAgICAgICB2b2lkKiBibG9j
a0FkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihtX3Jlc2VydmF0aW9uQmFzZSArIG1f
bmV4dEZyZWUgKiBibG9ja1NpemUpOwotICAgICAgICAgICAgbV9yZXNlcnZhdGlvbi5jb21taXQo
YmxvY2tBZGRyZXNzLCBibG9ja1NpemUpOwotCi0gICAgICAgICAgICBtX2JpdG1hcC5zZXQobV9u
ZXh0RnJlZSk7Ci0gICAgICAgICAgICArK21fbmV4dEZyZWU7Ci0KLSAgICAgICAgICAgIHJldHVy
biBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4oYmxvY2tBZGRyZXNzLCB0aGlzKTsKLSAgICAgICAg
fQotICAgICAgICBtX2JpdG1hcC5hZHZhbmNlVG9OZXh0RnJlZUJpdChtX25leHRGcmVlKTsKLSAg
ICB9Ci0KLSAgICBpZiAobV9iaXRtYXAuaXNGdWxsKCkpCi0gICAgICAgIHJldHVybiBBbGlnbmVk
TWVtb3J5PGJsb2NrU2l6ZT4oMCwgdGhpcyk7Ci0KLSAgICBtX25leHRGcmVlID0gMDsKLQotICAg
IHJldHVybiBhbGxvY2F0ZSgpOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotdm9p
ZCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT46OmZyZWUoQWxpZ25lZE1lbW9yeTxi
bG9ja1NpemU+IGFsbG9jYXRpb24pCi17Ci0gICAgQVNTRVJUKGFsbG9jYXRpb24uYmFzZSgpKTsK
LSAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KGFsbG9jYXRpb24uYmFzZSgpLCBibG9ja1NpemUp
OwotCi0gICAgc2l6ZV90IGRpZmYgPSAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFsbG9j
YXRpb24uYmFzZSgpKSAtIG1fcmVzZXJ2YXRpb25CYXNlKTsKLSAgICBBU1NFUlQoIShkaWZmICYg
KGJsb2NrU2l6ZSAtIDEpKSk7Ci0KLSAgICBzaXplX3QgaSA9IGRpZmYgLyBibG9ja1NpemU7Ci0g
ICAgQVNTRVJUKG1fYml0bWFwLmdldChpKSk7Ci0KLSAgICBtX2JpdG1hcC5jbGVhcihpKTsKLX0K
LQotdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLWlubGluZSB2b2lkIEFsaWduZWRNZW1vcnk8
YmxvY2tTaXplPjo6ZGVhbGxvY2F0ZSgpCi17Ci0gICAgbV9hbGxvY2F0b3ItPmZyZWUoKnRoaXMp
OwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgotaW5saW5lIHZvaWQqIEFsaWduZWRN
ZW1vcnk8YmxvY2tTaXplPjo6YmFzZSgpCi17Ci0gICAgcmV0dXJuIG1fYmFzZTsKLX0KLQotdGVt
cGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KLUFsaWduZWRNZW1vcnk8YmxvY2tTaXplPjo6QWxpZ25l
ZE1lbW9yeSh2b2lkKiBiYXNlLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPGJsb2NrU2l6ZT4qIGFs
bG9jYXRvcikKLSAgICA6IG1fYmFzZShiYXNlKQotICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9y
KQotewotfQotCi0jZW5kaWYKLQotfQotCi0jZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsOSArMTcxLDYgQEAgdm9pZCBI
ZWFwOjpkZXN0cm95KCkKIAogICAgIGZyZWVCbG9ja3MoKTsKIAotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3dlYWtHQ0hhbmRsZVBvb2xzLnNpemUoKTsgKytpKQotICAgICAgICBtX3dl
YWtHQ0hhbmRsZVBvb2xzW2ldLmRlYWxsb2NhdGUoKTsKLQogI2lmIEVOQUJMRShKU0NfTVVMVElQ
TEVfVEhSRUFEUykKICAgICBpZiAobV9jdXJyZW50VGhyZWFkUmVnaXN0cmFyKSB7CiAgICAgICAg
IGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2RlbGV0ZShtX2N1cnJlbnRUaHJlYWRSZWdpc3RyYXIp
OwpAQCAtMTg3LDEzICsxODQsMTIgQEAgdm9pZCBIZWFwOjpkZXN0cm95KCkKICAgICAgICAgdCA9
IG5leHQ7CiAgICAgfQogI2VuZGlmCi0gICAgbV9ibG9ja2FsbG9jYXRvci5kZXN0cm95KCk7CiAg
ICAgbV9nbG9iYWxEYXRhID0gMDsKIH0KIAogTkVWRVJfSU5MSU5FIENvbGxlY3RvckJsb2NrKiBI
ZWFwOjphbGxvY2F0ZUJsb2NrKCkKIHsKLSAgICBBbGlnbmVkQ29sbGVjdG9yQmxvY2sgYWxsb2Nh
dGlvbiA9IG1fYmxvY2thbGxvY2F0b3IuYWxsb2NhdGUoKTsKKyAgICBQYWdlQWxsb2NhdGlvbkFs
aWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoQkxPQ0tf
U0laRSwgQkxPQ0tfU0laRSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOwogICAgIENvbGxl
Y3RvckJsb2NrKiBibG9jayA9IHN0YXRpY19jYXN0PENvbGxlY3RvckJsb2NrKj4oYWxsb2NhdGlv
bi5iYXNlKCkpOwogICAgIGlmICghYmxvY2spCiAgICAgICAgIENSQVNIKCk7CkBAIC0yMTEsMTIg
KzIwNywxMiBAQCBORVZFUl9JTkxJTkUgQ29sbGVjdG9yQmxvY2sqIEhlYXA6OmFsbG9jCiAKICAg
ICBzaXplX3QgbnVtQmxvY2tzID0gbV9oZWFwLm51bUJsb2NrczsKICAgICBpZiAobV9oZWFwLnVz
ZWRCbG9ja3MgPT0gbnVtQmxvY2tzKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
TnVtQmxvY2tzID0gVUxPTkdfTUFYIC8gc2l6ZW9mKEFsaWduZWRDb2xsZWN0b3JCbG9jaykgLyBH
Uk9XVEhfRkFDVE9SOworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heE51bUJsb2NrcyA9
IFVMT05HX01BWCAvIHNpemVvZihQYWdlQWxsb2NhdGlvbkFsaWduZWQpIC8gR1JPV1RIX0ZBQ1RP
UjsKICAgICAgICAgaWYgKG51bUJsb2NrcyA+IG1heE51bUJsb2NrcykKICAgICAgICAgICAgIENS
QVNIKCk7CiAgICAgICAgIG51bUJsb2NrcyA9IG1heChNSU5fQVJSQVlfU0laRSwgbnVtQmxvY2tz
ICogR1JPV1RIX0ZBQ1RPUik7CiAgICAgICAgIG1faGVhcC5udW1CbG9ja3MgPSBudW1CbG9ja3M7
Ci0gICAgICAgIG1faGVhcC5ibG9ja3MgPSBzdGF0aWNfY2FzdDxBbGlnbmVkQ29sbGVjdG9yQmxv
Y2sqPihmYXN0UmVhbGxvYyhtX2hlYXAuYmxvY2tzLCBudW1CbG9ja3MgKiBzaXplb2YoQWxpZ25l
ZENvbGxlY3RvckJsb2NrKSkpOworICAgICAgICBtX2hlYXAuYmxvY2tzID0gc3RhdGljX2Nhc3Q8
UGFnZUFsbG9jYXRpb25BbGlnbmVkKj4oZmFzdFJlYWxsb2MobV9oZWFwLmJsb2NrcywgbnVtQmxv
Y2tzICogc2l6ZW9mKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCkpKTsKICAgICB9CiAgICAgbV9oZWFw
LmJsb2Nrc1ttX2hlYXAudXNlZEJsb2NrcysrXSA9IGFsbG9jYXRpb247CiAKQEAgLTIzOSw3ICsy
MzUsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpmcmVlQmxvY2soc2l6ZV90CiAKICAgICBp
ZiAobV9oZWFwLm51bUJsb2NrcyA+IE1JTl9BUlJBWV9TSVpFICYmIG1faGVhcC51c2VkQmxvY2tz
IDwgbV9oZWFwLm51bUJsb2NrcyAvIExPV19XQVRFUl9GQUNUT1IpIHsKICAgICAgICAgbV9oZWFw
Lm51bUJsb2NrcyA9IG1faGVhcC5udW1CbG9ja3MgLyBHUk9XVEhfRkFDVE9SOyAKLSAgICAgICAg
bV9oZWFwLmJsb2NrcyA9IHN0YXRpY19jYXN0PEFsaWduZWRDb2xsZWN0b3JCbG9jayo+KGZhc3RS
ZWFsbG9jKG1faGVhcC5ibG9ja3MsIG1faGVhcC5udW1CbG9ja3MgKiBzaXplb2YoQWxpZ25lZENv
bGxlY3RvckJsb2NrKSkpOworICAgICAgICBtX2hlYXAuYmxvY2tzID0gc3RhdGljX2Nhc3Q8UGFn
ZUFsbG9jYXRpb25BbGlnbmVkKj4oZmFzdFJlYWxsb2MobV9oZWFwLmJsb2NrcywgbV9oZWFwLm51
bUJsb2NrcyAqIHNpemVvZihQYWdlQWxsb2NhdGlvbkFsaWduZWQpKSk7CiAgICAgfQogfQogCkBA
IC03NTQsMTAgKzc1MCwxMCBAQCBXZWFrR0NIYW5kbGUqIEhlYXA6OmFkZFdlYWtHQ0hhbmRsZShK
U0NlCiAgICAgICAgIGlmICghd2Vha0dDSGFuZGxlUG9vbChpKS0+aXNGdWxsKCkpCiAgICAgICAg
ICAgICByZXR1cm4gd2Vha0dDSGFuZGxlUG9vbChpKS0+YWxsb2NhdGUocHRyKTsKIAotICAgIEFs
aWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+IGFsbG9jYXRpb24gPSBtX3dl
YWtHQ0hhbmRsZVBvb2xBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKyAgICBQYWdlQWxsb2NhdGlvbkFs
aWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoV2Vha0dD
SGFuZGxlUG9vbDo6cG9vbFNpemUsIFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplLCBPU0FsbG9j
YXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgbV93ZWFrR0NIYW5kbGVQb29scy5hcHBlbmQoYWxs
b2NhdGlvbik7CiAKLSAgICBXZWFrR0NIYW5kbGVQb29sKiBwb29sID0gbmV3IChhbGxvY2F0aW9u
KSBXZWFrR0NIYW5kbGVQb29sKCk7CisgICAgV2Vha0dDSGFuZGxlUG9vbCogcG9vbCA9IG5ldyAo
YWxsb2NhdGlvbi5iYXNlKCkpIFdlYWtHQ0hhbmRsZVBvb2woKTsKICAgICByZXR1cm4gcG9vbC0+
YWxsb2NhdGUocHRyKTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5oCShy
ZXZpc2lvbiA3NDQyMSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpZm5kZWYgQ29sbGVjdG9yX2gKICNkZWZp
bmUgQ29sbGVjdG9yX2gKIAotI2luY2x1ZGUgIkFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJHQ0hhbmRsZS5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlIDxzdGRk
ZWYuaD4KQEAgLTM0LDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KQEAgLTY0LDEzICs2NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjb25z
dCBzaXplX3QgQkxPQ0tfU0laRSA9IDI1NiAqIDEwMjQ7IC8vIDI1NmsKICNlbmRpZgogCi0gICAg
dHlwZWRlZiBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPEJMT0NLX1NJWkU+IENvbGxlY3RvckJsb2Nr
QWxsb2NhdG9yOwotICAgIHR5cGVkZWYgQWxpZ25lZE1lbW9yeTxCTE9DS19TSVpFPiBBbGlnbmVk
Q29sbGVjdG9yQmxvY2s7Ci0KICAgICBzdHJ1Y3QgQ29sbGVjdG9ySGVhcCB7CiAgICAgICAgIHNp
emVfdCBuZXh0QmxvY2s7CiAgICAgICAgIHNpemVfdCBuZXh0Q2VsbDsKLSAgICAgICAgQWxpZ25l
ZENvbGxlY3RvckJsb2NrKiBibG9ja3M7CisgICAgICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCog
YmxvY2tzOwogICAgICAgICAKICAgICAgICAgdm9pZCogbmV4dE51bWJlcjsKIApAQCAtMTkxLDcg
KzE4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb2xsZWN0b3JIZWFwIG1faGVhcDsK
IAogICAgICAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7Ci0gICAgICAgIFdU
Rjo6VmVjdG9yPEFsaWduZWRNZW1vcnk8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+ID4gbV93
ZWFrR0NIYW5kbGVQb29sczsKKyAgICAgICAgV1RGOjpWZWN0b3I8UGFnZUFsbG9jYXRpb25BbGln
bmVkPiBtX3dlYWtHQ0hhbmRsZVBvb2xzOwogICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlZlY3Rv
cjxWYWx1ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0b3JzOwogCiAgICAgICAgIEhh
c2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiogbV9tYXJrTGlzdFNldDsKQEAgLTIwOSwxMCAr
MjA2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHB0aHJlYWRfa2V5X3QgbV9jdXJyZW50
VGhyZWFkUmVnaXN0cmFyOwogI2VuZGlmCiAKLSAgICAgICAgLy8gQWxsb2NhdGVzIGNvbGxlY3Rv
ciBibG9ja3Mgd2l0aCBjb3JyZWN0IGFsaWdubWVudAotICAgICAgICBDb2xsZWN0b3JCbG9ja0Fs
bG9jYXRvciBtX2Jsb2NrYWxsb2NhdG9yOyAKLSAgICAgICAgV2Vha0dDSGFuZGxlUG9vbDo6QWxs
b2NhdG9yIG1fd2Vha0dDSGFuZGxlUG9vbEFsbG9jYXRvcjsgCi0gICAgICAgIAogICAgICAgICBK
U0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICAgICB9OwogCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dDSGFuZGxlLmNwcAkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dDSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsOSArODMsNCBAQCB2b2lkIFdl
YWtHQ0hhbmRsZVBvb2w6OmZyZWUoV2Vha0dDSGFuZGxlCiAgICAgLS1tX2VudHJpZXNTaXplOwog
fQogCi12b2lkKiBXZWFrR0NIYW5kbGVQb29sOjpvcGVyYXRvciBuZXcoc2l6ZV90LCBBbGlnbmVk
TWVtb3J5PFdlYWtHQ0hhbmRsZVBvb2w6OnBvb2xTaXplPiYgYWxsb2NhdGlvbikKLXsKLSAgICBy
ZXR1cm4gYWxsb2NhdGlvbi5iYXNlKCk7Ci19Ci0KIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dD
SGFuZGxlLmgJKHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0hh
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEdDSGFuZGxl
X2gKICNkZWZpbmUgR0NIYW5kbGVfaAogCi0jaW5jbHVkZSAiQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC05MSw4ICs5MSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBvb2xNYXNr
ID0gfihwb29sU2l6ZSAtIDEpOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtUG9vbEVudHJp
ZXMgPSAocG9vbFNpemUgLSBzaXplb2YoSGVhcCopIC0gMyAqIHNpemVvZih1bnNpZ25lZCkpIC8g
c2l6ZW9mKFdlYWtHQ0hhbmRsZSk7CiAKLSAgICB0eXBlZGVmIEFsaWduZWRNZW1vcnlBbGxvY2F0
b3I8V2Vha0dDSGFuZGxlUG9vbDo6cG9vbFNpemU+IEFsbG9jYXRvcjsKLQogICAgIFdlYWtHQ0hh
bmRsZVBvb2woKTsKIAogICAgIFdlYWtHQ0hhbmRsZSogYWxsb2NhdGUoSlNDZWxsKiBjZWxsKTsK
QEAgLTEwNiw4ICsxMDQsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZSgpOwogCi0gICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgQWxpZ25lZE1lbW9yeTxXZWFrR0NIYW5kbGVQb29s
Ojpwb29sU2l6ZT4mKTsKLQogcHJpdmF0ZToKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgdW5zaWdu
ZWQgbV9lbnRyaWVzU2l6ZTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAkocmV2
aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9Owog
CiAgICAgICAgIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZVN0YWNrKHNpemVfdCBzaXplKSB7IHJldHVy
biBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplKTsgfQotICAgICAgICBzdGF0aWMg
dm9pZCByZWxlYXNlU3RhY2sodm9pZCogYWRkciwgc2l6ZV90IHNpemUpIHsgT1NBbGxvY2F0b3I6
OnJlbGVhc2UoYWRkciwgc2l6ZSk7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgcmVsZWFzZVN0YWNr
KHZvaWQqIGFkZHIsIHNpemVfdCBzaXplKSB7IE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVh
c2UoYWRkciwgc2l6ZSk7IH0KIAogICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGFnZXNp
emUoKTsKICAgICAgICAgc3RhdGljIHNpemVfdCBwYWdlU2l6ZSgpCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvT1NBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
T1NBbGxvY2F0b3IuaAkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvT1NB
bGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDU0IEBAIHB1YmxpYzoKICAg
ICAgICAgSlNKSVRDb2RlUGFnZXMgPSBWTV9UQUdfRk9SX0VYRUNVVEFCTEVBTExPQ0FUT1JfTUVN
T1JZLAogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZShzaXplX3QsIFVzYWdlID0g
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UpOwotICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBV
bmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxz
ZSk7Ci0KKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVVbmNvbW1p
dHRlZCBhbGxvY2F0ZXMgVk0gaW4gYW4gdW5jb21taXR0ZWQgc3RhdGUsCisgICAgLy8gcmVsZWFz
ZURlY29tbWl0dGVkIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVk
IGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAorICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3Vy
cmVudGx5IGJlIGluIGEgZGVjb21taXR0ZWQgc3RhdGUuCisgICAgc3RhdGljIHZvaWQqIHJlc2Vy
dmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxl
ID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UpOworICAgIHN0YXRpYyB2b2lkIHJlbGVh
c2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKKworICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IHN5bW1ldHJpYzsgdGVoeSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24gb2YgVk0gKHVuY29t
bWl0dGVkIFZNIHNob3VsZAorICAgIC8vIG5ldmVyIGJlIGFjY2Vzc2VkLCBzaW5jZSB0aGUgT1Mg
bWF5IG5vdCBoYXZlIGF0dGFjaGVkIHBoeXNpY2FsIG1lbW9yeSBmb3IgdGhlc2UgcmVnaW9ucyku
CisgICAgLy8gQ2xpZW50cyBzaG91bGQgb25seSBjYWxsIGNvbW1pdCBvbiB1bmNvbW1pdHRlZCBy
ZWdpb25zIGFuZCBkZWNvbW1pdCBvbiBjb21taXR0ZWQgcmVnaW9ucy4KICAgICBzdGF0aWMgdm9p
ZCBjb21taXQodm9pZCosIHNpemVfdCwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKTsK
ICAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdCh2b2lkKiwgc2l6ZV90KTsKIAotICAgIHN0YXRpYyB2
b2lkIHJlbGVhc2Uodm9pZCosIHNpemVfdCk7CisgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3lt
bWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBWTSBpbiBhbiBjb21taXR0ZWQgc3Rh
dGUsCisgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdp
b24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAorICAgIC8vIHRoZSBt
ZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29tbWl0dGVkIHN0YXRlLgorICAgIHN0
YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2Us
IGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CisgICAgc3Rh
dGljIHZvaWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKKwor
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1p
dEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIgdGhhbgorICAgIC8vIGNvbW1pdHRp
bmcvZGVjb21taXR0aW5nIHRoZSBlbnRpcmUgcmVnaW9uIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBh
bGxvdyBhIHN1YnJlZ2lvbiB0byBiZQorICAgIC8vIHNwZWNpZmllZC4KKyAgICBzdGF0aWMgdm9p
ZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXpl
LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0
YWJsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCog
cmVsZWFzZUJhc2UsIHNpemVfdCByZWxlYXNlU2l6ZSwgdm9pZCogZGVjb21taXRCYXNlLCBzaXpl
X3QgZGVjb21taXRTaXplKTsKIH07CiAKK2lubGluZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2
ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQoreworICAgIHZvaWQqIGJhc2Ug
PSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSk7CisgICAgY29tbWl0KGJhc2UsIGNvbW1pdFNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxl
KTsKKyAgICByZXR1cm4gYmFzZTsKK30KKworaW5saW5lIHZvaWQgT1NBbGxvY2F0b3I6OmRlY29t
bWl0QW5kUmVsZWFzZSh2b2lkKiByZWxlYXNlQmFzZSwgc2l6ZV90IHJlbGVhc2VTaXplLCB2b2lk
KiBkZWNvbW1pdEJhc2UsIHNpemVfdCBkZWNvbW1pdFNpemUpCit7CisgICAgQVNTRVJUKGRlY29t
bWl0QmFzZSA+PSByZWxlYXNlQmFzZSAmJiAoc3RhdGljX2Nhc3Q8Y2hhcio+KGRlY29tbWl0QmFz
ZSkgKyBkZWNvbW1pdFNpemUpIDw9IChzdGF0aWNfY2FzdDxjaGFyKj4ocmVsZWFzZUJhc2UpICsg
cmVsZWFzZVNpemUpKTsKKyNpZiBPUyhXSU5DRSkKKyAgICAvLyBPbiBtb3N0IHBsYXRmb3JtcyB3
ZSBjYW4gYWN0dWFsbHkgc2tpcCB0aGlzIGZpbmFsIGRlY29tbWl0OyByZWxlYXNpbmcgdGhlIFZN
IHdpbGwKKyAgICAvLyBpbXBsaWNpdGx5IGRlY29tbWl0IGFueSBwaHlzaWNhbCBtZW1vcnkgaW4g
dGhlIHJlZ2lvbi4gVGhpcyBpcyBub3QgdHJ1ZSBvbiBXSU5DRS4KKyAgICBkZWNvbW1pdChkZWNv
bW1pdEJhc2UsIGRlY29tbWl0U2l6ZSk7CisjZW5kaWYKKyAgICByZWxlYXNlRGVjb21taXR0ZWQo
cmVsZWFzZUJhc2UsIHJlbGVhc2VTaXplKTsKK30KKworaW5saW5lIHZvaWQgT1NBbGxvY2F0b3I6
OmRlY29tbWl0QW5kUmVsZWFzZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBkZWNv
bW1pdEFuZFJlbGVhc2UoYmFzZSwgc2l6ZSwgYmFzZSwgc2l6ZSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6Ok9TQWxsb2NhdG9yOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL09TQWxsb2NhdG9yUG9zaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9PU0FsbG9jYXRvclBvc2l4LmNwcAkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvT1NBbGxvY2F0b3JQb3NpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlKHNpemVf
dCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKK3Zv
aWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQogewogICAgIHZvaWQqIHJlc3Vs
dCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7
CiAjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0UpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBPU0Fs
bG9jYXRvcjo6ZGVjb21taXQodm9pZCogYWRkcmVzcwogI2VuZGlmCiB9CiAKLXZvaWQgT1NBbGxv
Y2F0b3I6OnJlbGVhc2Uodm9pZCogYWRkcmVzcywgc2l6ZV90IGJ5dGVzKQordm9pZCBPU0FsbG9j
YXRvcjo6cmVsZWFzZURlY29tbWl0dGVkKHZvaWQqIGFkZHJlc3MsIHNpemVfdCBieXRlcykKIHsK
ICAgICBpbnQgcmVzdWx0ID0gbXVubWFwKGFkZHJlc3MsIGJ5dGVzKTsKICAgICBpZiAocmVzdWx0
ID09IC0xKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yU3ltYmlhbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yU3ltYmlhbi5jcHAJ
KHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yU3ltYmlh
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdURiB7
CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlKHNpemVfdCwgVXNhZ2UsIGJvb2wsIGJvb2wp
Cit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UsIGJv
b2wsIGJvb2wpCiB7CiAgICAgcmV0dXJuIGZhc3RNYWxsb2MoYnl0ZXMpOwogfQpAQCAtNDgsNyAr
NDgsNyBAQCB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1pdCh2b2lkKiwgc2l6ZV90CiB7CiB9CiAK
LXZvaWQgT1NBbGxvY2F0b3I6OnJlbGVhc2Uodm9pZCogYWRkcmVzcywgc2l6ZV90KQordm9pZCBP
U0FsbG9jYXRvcjo6cmVsZWFzZURlY29tbWl0dGVkKHZvaWQqIGFkZHJlc3MsIHNpemVfdCkKIHsK
ICAgICBmYXN0RnJlZShhZGRyZXNzKTsKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9PU0Fs
bG9jYXRvcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2Nh
dG9yV2luLmNwcAkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxv
Y2F0b3JXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBpbmxp
bmUgRFdPUkQgcHJvdGVjdGlvbihib29sIHdyaXQKICAgICAgICAgKHdyaXRhYmxlID8gUEFHRV9S
RUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2Vy
dmUoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQor
dm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdl
LCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCiB7CiAgICAgdm9pZCogcmVzdWx0ID0g
VmlydHVhbEFsbG9jKDAsIGJ5dGVzLCBNRU1fUkVTRVJWRSwgcHJvdGVjdGlvbih3cml0YWJsZSwg
ZXhlY3V0YWJsZSkpOwogICAgIGlmICghcmVzdWx0KQpAQCAtNjgsMTggKzY4LDEyIEBAIHZvaWQg
T1NBbGxvY2F0b3I6OmRlY29tbWl0KHZvaWQqIGFkZHJlc3MKICAgICAgICAgQ1JBU0goKTsKIH0K
IAotdm9pZCBPU0FsbG9jYXRvcjo6cmVsZWFzZSh2b2lkKiBhZGRyZXNzLCBzaXplX3QgYnl0ZXMp
Cit2b2lkIE9TQWxsb2NhdG9yOjpyZWxlYXNlRGVjb21taXR0ZWQodm9pZCogYWRkcmVzcywgc2l6
ZV90IGJ5dGVzKQogewotI2lmIE9TKFdJTkNFKQotICAgIGRlY29tbWl0KGFkZHJlc3MsIGJ5dGVz
KTsKLSNlbmRpZgogICAgIC8vIEFjY29yZGluZyB0byBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29t
L2VuLXVzL2xpYnJhcnkvYWEzNjY4OTIoVlMuODUpLmFzcHgsCiAgICAgLy8gZHdTaXplIG11c3Qg
YmUgMCBpZiBkd0ZyZWVUeXBlIGlzIE1FTV9SRUxFQVNFLgogICAgIGJvb2wgcmVzdWx0ID0gVmly
dHVhbEZyZWUoYWRkcmVzcywgMCwgTUVNX1JFTEVBU0UpOwotCi0gICAgLy8gRklYTUU6IFJlc3Rv
cmUgdGhpcyBlcnJvciBjaGVja2luZyBvbmNlIGFsaWduZWQgYWxsb2NhdGlvbiBpcyBmaXhlZCBu
b3QKLSAgICAvLyB0byBwYWlyIG1hbGxvYyB3aXRoIFZpcnR1YWxGcmVlLgotICAgIGlmICghcmVz
dWx0ICYmIDApCisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIENSQVNIKCk7CiB9CiAKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbi5oCShyZXZpc2lvbiA3NDQyMSkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw0NyAr
NzcsMzUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgQ2FsbGVycyBtYXkgYWxzbyBvcHRpbmFsbHkg
cHJvdmlkZSBhIGZsYWcgaW5kaWNhdGluZyB0aGUgdXNhZ2UgKGZvciB1c2UgYnkKICAgICBzeXN0
ZW0gbWVtb3J5IHVzYWdlIHRyYWNraW5nIHRvb2xzLCB3aGVyZSBpbXBsZW1lbnRlZCksIGFuZCBi
b29sZWFuIHZhbHVlcwogICAgIHNwZWNpZnlpbmcgdGhlIHJlcXVpcmVkIHByb3RlY3Rpb24gKGRl
ZmF1bHRpbmcgdG8gd3JpdGFibGUsIG5vbi1leGVjdXRhYmxlKS4KLQotICAgIFdoZXJlIEhBVkUo
UEFHRV9BTExPQ0FURV9BTElHTkVEKSBpcyBhdmFpbGFibGUgbWVtb3J5IG1heSBhbHNvIGJlIGFs
bG9jYXRlZAotICAgIHdpdGggYSBzcGVjaWZpZWQgYWxpZ25tZW50LiAgUGFnZUFsbG9jYXRpb246
OmFsbG9jYXRlQWxpZ25lZCByZXF1aXJlcyB0aGF0IHRoZQotICAgIHNpemUgaXMgYSBwb3dlciBv
ZiB0d28gdGhhdCBpcyA+PSBzeXN0ZW0gcGFnZSBzaXplLgogKi8KIAogY2xhc3MgUGFnZUFsbG9j
YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9jayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhZ2VBbGxv
Y2F0aW9uIGFsbG9jYXRlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBP
U0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVj
dXRhYmxlID0gZmFsc2UpCisgICAgUGFnZUFsbG9jYXRpb24oKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAgICByZXR1cm4gUGFnZUFsbG9jYXRpb24o
T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVj
dXRhYmxlKSwgc2l6ZSk7CiAgICAgfQogCi0jaWYgSEFWRShQQUdFX0FMTE9DQVRFX0FMSUdORUQp
Ci0gICAgc3RhdGljIFBhZ2VBbGxvY2F0aW9uIGFsbG9jYXRlQWxpZ25lZChzaXplX3Qgc2l6ZSwg
T1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSkKKyAg
ICB1c2luZyBQYWdlQmxvY2s6Om9wZXJhdG9yIGJvb2w7CisgICAgdXNpbmcgUGFnZUJsb2NrOjpz
aXplOworICAgIHVzaW5nIFBhZ2VCbG9jazo6YmFzZTsKKworICAgIHN0YXRpYyBQYWdlQWxsb2Nh
dGlvbiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NB
bGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0
YWJsZSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkp
OwotICAgICAgICBBU1NFUlQoaXNQb3dlck9mVHdvKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIHN5
c3RlbUFsbG9jYXRlQWxpZ25lZChzaXplLCB1c2FnZSk7CisgICAgICAgIHJldHVybiBQYWdlQWxs
b2NhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplLCB1c2FnZSwgd3JpdGFi
bGUsIGV4ZWN1dGFibGUpLCBzaXplKTsKICAgICB9Ci0jZW5kaWYKLQotICAgIFBhZ2VBbGxvY2F0
aW9uKCk7Ci0KLSAgICB1c2luZyBQYWdlQmxvY2s6Om9wZXJhdG9yIGJvb2w7Ci0gICAgdXNpbmcg
UGFnZUJsb2NrOjpiYXNlOwotICAgIHVzaW5nIFBhZ2VCbG9jazo6c2l6ZTsKIAogICAgIHZvaWQg
ZGVhbGxvY2F0ZSgpCiAgICAgewotICAgICAgICBBU1NFUlQoKnRoaXMpOworICAgICAgICAvLyBD
bGVhciBiYXNlICYgc2l6ZSBiZWZvcmUgY2FsbGluZyByZWxlYXNlOyBpZiB0aGlzIGlzICppbnNp
ZGUqIGFsbG9jYXRpb24KKyAgICAgICAgLy8gdGhlbiB3ZSB3b24ndCBiZSBhYmxlIHRvIGNsZWFy
IHRoZW4gYWZ0ZXIgZGVhbGxvY2F0aW5nIHRoZSBtZW1vcnkuCisgICAgICAgIFBhZ2VBbGxvY2F0
aW9uIHRtcDsKKyAgICAgICAgc3RkOjpzd2FwKHRtcCwgKnRoaXMpOwogCi0gICAgICAgIC8vIFpl
cm8gdGhlc2UgYmVmb3JlIGNhbGxpbmcgcmVsZWFzZTsgaWYgdGhpcyBpcyAqaW5zaWRlKiBhbGxv
Y2F0aW9uLAotICAgICAgICAvLyB3ZSB3b24ndCBiZSBhYmxlIHRvIGNsZWFyIHRoZW4gYWZ0ZXIg
dGhlIGNhbGwgdG8gT1NBbGxvY2F0b3I6OnJlbGVhc2UuCi0gICAgICAgIHZvaWQqIGJhc2UgPSBt
X2Jhc2U7Ci0gICAgICAgIHNpemVfdCBzaXplID0gbV9zaXplOwotICAgICAgICBtX2Jhc2UgPSAw
OwotICAgICAgICBtX3NpemUgPSAwOworICAgICAgICBBU1NFUlQodG1wKTsKKyAgICAgICAgQVNT
RVJUKCEqdGhpcyk7CiAKLSAgICAgICAgT1NBbGxvY2F0b3I6OnJlbGVhc2UoYmFzZSwgc2l6ZSk7
CisgICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UodG1wLmJhc2UoKSwgdG1w
LnNpemUoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTI1LDgxICsxMTMsOSBAQCBwcml2YXRl
OgogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplKQogICAgIHsKICAgICB9Ci0KLSNpZiBI
QVZFKFBBR0VfQUxMT0NBVEVfQUxJR05FRCkKLSAgICBzdGF0aWMgUGFnZUFsbG9jYXRpb24gc3lz
dGVtQWxsb2NhdGVBbGlnbmVkKHNpemVfdCwgT1NBbGxvY2F0b3I6OlVzYWdlKTsKLSNlbmRpZgog
fTsKIAotaW5saW5lIFBhZ2VBbGxvY2F0aW9uOjpQYWdlQWxsb2NhdGlvbigpCi0gICAgOiBQYWdl
QmxvY2soKQotewotfQotCi0KLSNpZiBIQVZFKE1NQVApCi0KLWlubGluZSBQYWdlQWxsb2NhdGlv
biBQYWdlQWxsb2NhdGlvbjo6c3lzdGVtQWxsb2NhdGVBbGlnbmVkKHNpemVfdCBzaXplLCBPU0Fs
bG9jYXRvcjo6VXNhZ2UgdXNhZ2UpCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIHZtX2FkZHJlc3Nf
dCBhZGRyZXNzID0gMDsKLSAgICBpbnQgZmxhZ3MgPSBWTV9GTEFHU19BTllXSEVSRTsKLSAgICBp
ZiAodXNhZ2UgIT0gLTEpCi0gICAgICAgIGZsYWdzIHw9IHVzYWdlOwotICAgIHZtX21hcChjdXJy
ZW50X3Rhc2soKSwgJmFkZHJlc3MsIHNpemUsIChzaXplIC0gMSksIGZsYWdzLCBNRU1PUllfT0JK
RUNUX05VTEwsIDAsIEZBTFNFLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBQUk9UX1JFQUQgfCBQ
Uk9UX1dSSVRFIHwgUFJPVF9FWEVDLCBWTV9JTkhFUklUX0RFRkFVTFQpOwotICAgIHJldHVybiBQ
YWdlQWxsb2NhdGlvbihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzKSwgc2l6ZSk7Ci0j
ZWxpZiBIQVZFKFBPU0lYX01FTUFMSUdOKQotICAgIHZvaWQqIGFkZHJlc3M7Ci0gICAgcG9zaXhf
bWVtYWxpZ24oJmFkZHJlc3MsIHNpemUsIHNpemUpOwotICAgIHJldHVybiBQYWdlQWxsb2NhdGlv
bihhZGRyZXNzLCBzaXplKTsKLSNlbHNlCi0gICAgc2l6ZV90IGV4dHJhID0gc2l6ZSAtIHBhZ2VT
aXplKCk7Ci0KLSAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cuCi0gICAgaWYgKChzaXplICsgZXh0
cmEpIDwgc2l6ZSkKLSAgICAgICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKDAsIHNpemUpOwotCi0j
aWYgT1MoREFSV0lOKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikKLSAgICBpbnQgZmQg
PSB1c2FnZTsKLSNlbHNlCi0gICAgaW50IGZkID0gLTE7Ci0jZW5kaWYKLSAgICB2b2lkKiBtbWFw
UmVzdWx0ID0gbW1hcCgwLCBzaXplICsgZXh0cmEsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1B
UF9QUklWQVRFIHwgTUFQX0FOT04sIGZkLCAwKTsKLSAgICBpZiAobW1hcFJlc3VsdCA9PSBNQVBf
RkFJTEVEKQotICAgICAgICByZXR1cm4gUGFnZUFsbG9jYXRpb24oMCwgc2l6ZSk7Ci0gICAgdWlu
dHB0cl90IGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obW1hcFJlc3VsdCk7
Ci0KLSAgICBzaXplX3QgYWRqdXN0ID0gMDsKLSAgICBpZiAoKGFkZHJlc3MgJiAoc2l6ZSAtIDEp
KSkKLSAgICAgICAgYWRqdXN0ID0gc2l6ZSAtIChhZGRyZXNzICYgKHNpemUgLSAxKSk7Ci0gICAg
aWYgKGFkanVzdCA+IDApCi0gICAgICAgIG11bm1hcChyZWludGVycHJldF9jYXN0PGNoYXIqPihh
ZGRyZXNzKSwgYWRqdXN0KTsKLSAgICBpZiAoYWRqdXN0IDwgZXh0cmEpCi0gICAgICAgIG11bm1h
cChyZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzICsgYWRqdXN0ICsgc2l6ZSksIGV4dHJh
IC0gYWRqdXN0KTsKLSAgICBhZGRyZXNzICs9IGFkanVzdDsKLQotICAgIHJldHVybiBQYWdlQWxs
b2NhdGlvbihyZWludGVycHJldF9jYXN0PHZvaWQqPihhZGRyZXNzKSwgc2l6ZSk7Ci0jZW5kaWYK
LX0KLQotI2VsaWYgSEFWRShWSVJUVUFMQUxMT0MpCi0KLSNpZiBIQVZFKEFMSUdORURfTUFMTE9D
KQotaW5saW5lIFBhZ2VBbGxvY2F0aW9uIFBhZ2VBbGxvY2F0aW9uOjpzeXN0ZW1BbGxvY2F0ZUFs
aWduZWQoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSkKLXsKLSNpZiBDT01Q
SUxFUihNSU5HVykgJiYgIUNPTVBJTEVSKE1JTkdXNjQpCi0gICAgdm9pZCogYWRkcmVzcyA9IF9f
bWluZ3dfYWxpZ25lZF9tYWxsb2Moc2l6ZSwgc2l6ZSk7Ci0jZWxzZQotICAgIHZvaWQqIGFkZHJl
c3MgPSBfYWxpZ25lZF9tYWxsb2Moc2l6ZSwgc2l6ZSk7Ci0jZW5kaWYKLSAgICBtZW1zZXQoYWRk
cmVzcywgMCwgc2l6ZSk7Ci0gICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKGFkZHJlc3MsIHNpemUp
OwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi19Cit9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpQYWdlQWxsb2NhdGlvbjsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxv
Y2F0aW9uQWxpZ25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VB
bGxvY2F0aW9uQWxpZ25lZC5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
UGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWdlQWxsb2NhdGlv
bkFsaWduZWQuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK1BhZ2VBbGxvY2F0aW9uQWxpZ25lZCBQ
YWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25t
ZW50LCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0
YWJsZSkKK3sKKyAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7CisgICAgQVNTRVJUKGlz
UGFnZUFsaWduZWQoYWxpZ25tZW50KSk7CisgICAgQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1l
bnQpKTsKKyAgICBBU1NFUlQoc2l6ZSA+PSBhbGlnbm1lbnQpOworICAgIHNpemVfdCBhbGlnbm1l
bnRNYXNrID0gYWxpZ25tZW50IC0gMTsKKworI2lmIE9TKERBUldJTikKKyAgICBpbnQgZmxhZ3Mg
PSBWTV9GTEFHU19BTllXSEVSRTsKKyAgICBpZiAodXNhZ2UgIT0gT1NBbGxvY2F0b3I6OlVua25v
d25Vc2FnZSkKKyAgICAgICAgZmxhZ3MgfD0gdXNhZ2U7CisgICAgaW50IHByb3RlY3Rpb24gPSBQ
Uk9UX1JFQUQ7CisgICAgaWYgKHdyaXRhYmxlKQorICAgICAgICBwcm90ZWN0aW9uIHw9IFBST1Rf
V1JJVEU7CisgICAgaWYgKGV4ZWN1dGFibGUpCisgICAgICAgIHByb3RlY3Rpb24gfD0gUFJPVF9F
WEVDOworCisgICAgdm1fYWRkcmVzc190IGFkZHJlc3MgPSAwOworICAgIHZtX21hcChjdXJyZW50
X3Rhc2soKSwgJmFkZHJlc3MsIHNpemUsIGFsaWdubWVudE1hc2ssIGZsYWdzLCBNRU1PUllfT0JK
RUNUX05VTEwsIDAsIEZBTFNFLCBwcm90ZWN0aW9uLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwg
UFJPVF9FWEVDLCBWTV9JTkhFUklUX0RFRkFVTFQpOworICAgIHJldHVybiBQYWdlQWxsb2NhdGlv
bkFsaWduZWQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYWRkcmVzcyksIHNpemUpOworI2Vsc2UK
KyAgICBzaXplX3QgYWxpZ25tZW50RGVsdGEgPSBhbGlnbm1lbnQgLSBwYWdlU2l6ZSgpOworCisg
ICAgLy8gUmVzZXJlcnZlIHdpdGggc3VmZmNpZW50IGFkZGl0aW9uYWwgVk0gdG8gY29ycmVjdGx5
IGFsaWduLgorICAgIHNpemVfdCByZXNlcnZhdGlvblNpemUgPSBzaXplICsgYWxpZ25tZW50RGVs
dGE7CisgICAgdm9pZCogcmVzZXJ2YXRpb25CYXNlID0gT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNv
bW1pdHRlZChyZXNlcnZhdGlvblNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CisK
KyAgICAvLyBTZWxlY3QgYW4gYWxpZ25lZCByZWdpb24gd2l0aGluIHRoZSByZXNlcnZhdGlvbiBh
bmQgY29tbWl0LgorICAgIHZvaWQqIGFsaWduZWRCYXNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHJlc2VydmF0aW9uQmFzZSkgJiBhbGlnbm1lbnRNYXNrCisgICAgICAgID8gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXNlcnZhdGlv
bkJhc2UpICYgfmFsaWdubWVudE1hc2spICsgYWxpZ25tZW50KQorICAgICAgICA6IHJlc2VydmF0
aW9uQmFzZTsKKyAgICBPU0FsbG9jYXRvcjo6Y29tbWl0KGFsaWduZWRCYXNlLCBzaXplLCB3cml0
YWJsZSwgZXhlY3V0YWJsZSk7CisKKyAgICByZXR1cm4gUGFnZUFsbG9jYXRpb25BbGlnbmVkKGFs
aWduZWRCYXNlLCBzaXplLCByZXNlcnZhdGlvbkJhc2UsIHJlc2VydmF0aW9uU2l6ZSk7CisjZW5k
aWYKK30KKwordm9pZCBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmRlYWxsb2NhdGUoKQoreworICAg
IC8vIENsZWFyIGJhc2UgJiBzaXplIGJlZm9yZSBjYWxsaW5nIHJlbGVhc2U7IGlmIHRoaXMgaXMg
Kmluc2lkZSogYWxsb2NhdGlvbgorICAgIC8vIHRoZW4gd2Ugd29uJ3QgYmUgYWJsZSB0byBjbGVh
ciB0aGVuIGFmdGVyIGRlYWxsb2NhdGluZyB0aGUgbWVtb3J5LgorICAgIFBhZ2VBbGxvY2F0aW9u
QWxpZ25lZCB0bXA7CisgICAgc3RkOjpzd2FwKHRtcCwgKnRoaXMpOworCisgICAgQVNTRVJUKHRt
cCk7CisgICAgQVNTRVJUKCEqdGhpcyk7CisKKyNpZiBPUyhEQVJXSU4pCisgICAgdm1fZGVhbGxv
Y2F0ZShjdXJyZW50X3Rhc2soKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KHRtcC5i
YXNlKCkpLCB0bXAuc2l6ZSgpKTsKKyNlbHNlCisgICAgQVNTRVJUKHRtcC5tX3Jlc2VydmF0aW9u
LmNvbnRhaW5zKHRtcC5iYXNlKCksIHRtcC5zaXplKCkpKTsKKyAgICBPU0FsbG9jYXRvcjo6ZGVj
b21taXRBbmRSZWxlYXNlKHRtcC5tX3Jlc2VydmF0aW9uLmJhc2UoKSwgdG1wLm1fcmVzZXJ2YXRp
b24uc2l6ZSgpLCB0bXAuYmFzZSgpLCB0bXAuc2l6ZSgpKTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlvbkFsaWdu
ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25BbGln
bmVkLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9jYXRpb25B
bGlnbmVkLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZF9oCisjZGVmaW5lIFBhZ2VBbGxvY2F0aW9uQWxpZ25l
ZF9oCisKKyNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvUGFnZVJl
c2VydmF0aW9uLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQYWdlQWxsb2NhdGlvbkFs
aWduZWQgOiBwcml2YXRlIFBhZ2VCbG9jayB7CitwdWJsaWM6CisgICAgUGFnZUFsbG9jYXRpb25B
bGlnbmVkKCkKKyAgICB7CisgICAgfQorCisgICAgdXNpbmcgUGFnZUJsb2NrOjpvcGVyYXRvciBi
b29sOworICAgIHVzaW5nIFBhZ2VCbG9jazo6c2l6ZTsKKyAgICB1c2luZyBQYWdlQmxvY2s6OmJh
c2U7CisKKyAgICBzdGF0aWMgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRlKHNpemVfdCBz
aXplLCBzaXplX3QgYWxpZ25tZW50LCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9j
YXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxl
ID0gZmFsc2UpOworCisgICAgdm9pZCBkZWFsbG9jYXRlKCk7CisKK3ByaXZhdGU6CisjaWYgT1Mo
REFSV0lOKQorICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6
ZSkKKyAgICAgICAgOiBQYWdlQmxvY2soYmFzZSwgc2l6ZSkKKyAgICB7CisgICAgfQorI2Vsc2UK
KyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQodm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIHZvaWQq
IHJlc2VydmF0aW9uQmFzZSwgc2l6ZV90IHJlc2VydmF0aW9uU2l6ZSkKKyAgICAgICAgOiBQYWdl
QmxvY2soYmFzZSwgc2l6ZSkKKyAgICAgICAgLCBtX3Jlc2VydmF0aW9uKHJlc2VydmF0aW9uQmFz
ZSwgcmVzZXJ2YXRpb25TaXplKQorICAgIHsKKyAgICB9CisKKyAgICBQYWdlQmxvY2sgbV9yZXNl
cnZhdGlvbjsKKyNlbmRpZgorfTsKKworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpQYWdlQWxsb2NhdGlvbkFsaWduZWQ7CisKKyNlbmRpZiAvLyBQYWdlQWxsb2NhdGlvbkFsaWdu
ZWRfaApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaAkocmV2aXNpb24gNzQ0MjEpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvUGFnZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDEz
IEBAIHB1YmxpYzoKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYmFz
ZTsgfQogCi1wcm90ZWN0ZWQ6CisgICAgYm9vbCBjb250YWlucyh2b2lkKiBjb250YWluZWRCYXNl
LCBzaXplX3QgY29udGFpbmVkU2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb250YWluZWRC
YXNlID49IG1fYmFzZQorICAgICAgICAgICAgJiYgKHN0YXRpY19jYXN0PGNoYXIqPihjb250YWlu
ZWRCYXNlKSArIGNvbnRhaW5lZFNpemUpIDw9IChzdGF0aWNfY2FzdDxjaGFyKj4obV9iYXNlKSAr
IG1fc2l6ZSk7CisgICAgfQorCitwcml2YXRlOgogICAgIHZvaWQqIG1fYmFzZTsKICAgICBzaXpl
X3QgbV9zaXplOwogfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVzZXJ2YXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZVJlc2VydmF0aW9uLmgJKHJl
dmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFBh
Z2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKIHB1YmxpYzoKICAgICBQYWdlUmVz
ZXJ2YXRpb24oKQorICAgICAgICA6IG1fd3JpdGFibGUoZmFsc2UpCisgICAgICAgICwgbV9leGVj
dXRhYmxlKGZhbHNlKQorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLCBtX2NvbW1pdHRlZCgwKQor
I2VuZGlmCiAgICAgewogICAgIH0KICAgICAKQEAgLTY5LDYgKzc0LDcgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoKnRoaXMpOwogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzdGFydCkp
OwogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7CisgICAgICAgIEFTU0VSVChj
b250YWlucyhzdGFydCwgc2l6ZSkpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2NvbW1p
dHRlZCArPSBzaXplOwpAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgq
dGhpcyk7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHN0YXJ0KSk7CiAgICAgICAgIEFT
U0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5zKHN0YXJ0
LCBzaXplKSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fY29tbWl0dGVkIC09IHNpemU7
CkBAIC05MSw0MCArOTgsNDAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24g
cmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0
b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9
IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAg
ICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlKHNpemUsIHVz
YWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsK
KyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29t
bWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxl
LCBleGVjdXRhYmxlKTsKICAgICB9CiAKICAgICB2b2lkIGRlYWxsb2NhdGUoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX2NvbW1pdHRlZCk7Ci0gICAgICAgIEFTU0VSVCgqdGhpcyk7CiAKLSAg
ICAgICAgLy8gWmVybyB0aGVzZSBiZWZvcmUgY2FsbGluZyByZWxlYXNlOyBpZiB0aGlzIGlzICpp
bnNpZGUqIGFsbG9jYXRpb24sCi0gICAgICAgIC8vIHdlIHdvbid0IGJlIGFibGUgdG8gY2xlYXIg
dGhlbiBhZnRlciB0aGUgY2FsbCB0byBPU0FsbG9jYXRvcjo6cmVsZWFzZS4KLSAgICAgICAgdm9p
ZCogYmFzZSA9IG1fYmFzZTsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBtX3NpemU7Ci0gICAgICAg
IG1fYmFzZSA9IDA7Ci0gICAgICAgIG1fc2l6ZSA9IDA7CisgICAgICAgIC8vIENsZWFyIGJhc2Ug
JiBzaXplIGJlZm9yZSBjYWxsaW5nIHJlbGVhc2U7IGlmIHRoaXMgaXMgKmluc2lkZSogYWxsb2Nh
dGlvbgorICAgICAgICAvLyB0aGVuIHdlIHdvbid0IGJlIGFibGUgdG8gY2xlYXIgdGhlbiBhZnRl
ciBkZWFsbG9jYXRpbmcgdGhlIG1lbW9yeS4KKyAgICAgICAgUGFnZVJlc2VydmF0aW9uIHRtcDsK
KyAgICAgICAgc3RkOjpzd2FwKHRtcCwgKnRoaXMpOwogCi0gICAgICAgIE9TQWxsb2NhdG9yOjpy
ZWxlYXNlKGJhc2UsIHNpemUpOworICAgICAgICBBU1NFUlQodG1wKTsKKyAgICAgICAgQVNTRVJU
KCEqdGhpcyk7CisKKyAgICAgICAgT1NBbGxvY2F0b3I6OnJlbGVhc2VEZWNvbW1pdHRlZCh0bXAu
YmFzZSgpLCB0bXAuc2l6ZSgpKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgUGFnZVJlc2VydmF0
aW9uKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFi
bGUpCiAgICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUpCisgICAgICAgICwgbV93cml0YWJs
ZSh3cml0YWJsZSkKKyAgICAgICAgLCBtX2V4ZWN1dGFibGUoZXhlY3V0YWJsZSkKICNpZm5kZWYg
TkRFQlVHCiAgICAgICAgICwgbV9jb21taXR0ZWQoMCkKICNlbmRpZgotICAgICAgICAsIG1fd3Jp
dGFibGUod3JpdGFibGUpCi0gICAgICAgICwgbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCiAgICAg
ewogICAgIH0KIAorICAgIGJvb2wgbV93cml0YWJsZTsKKyAgICBib29sIG1fZXhlY3V0YWJsZTsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgc2l6ZV90IG1fY29tbWl0dGVkOwogI2VuZGlmCi0gICAgYm9v
bCBtX3dyaXRhYmxlOwotICAgIGJvb2wgbV9leGVjdXRhYmxlOwogfTsKIAogfQpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyMSwxMyArODIxLDYgQEAKIAogI2VuZGlmCiAK
LSNpZiBIQVZFKE1NQVApIHx8IChIQVZFKFZJUlRVQUxBTExPQykgJiYgSEFWRShBTElHTkVEX01B
TExPQykpCi0jZGVmaW5lIEhBVkVfUEFHRV9BTExPQ0FURV9BTElHTkVEIDEKLSNlbmRpZgotI2lm
IEhBVkUoTU1BUCkKLSNkZWZpbmUgSEFWRV9QQUdFX0FMTE9DQVRFX0FUIDEKLSNlbmRpZgotCiAv
KiBFTkFCTEUgbWFjcm8gZGVmYXVsdHMgKi8KIAogI2lmIFBMQVRGT1JNKFFUKQpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L3d0Zi5wcmkJKHJldmlzaW9uIDc0NDIxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgd3RmL3F0
L01haW5UaHJlYWRRdC5jcHAgXAogICAgIHd0Zi9xdC9TdHJpbmdRdC5jcHAgXAogICAgIHd0Zi9x
dC9UaHJlYWRpbmdRdC5jcHAgXAorICAgIHd0Zi9QYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwIFwK
ICAgICB3dGYvUGFnZUJsb2NrLmNwcCBcCiAgICAgd3RmL1JhbmRvbU51bWJlci5jcHAgXAogICAg
IHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwK
</data>
<flag name="review"
          id="68203"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>