<?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>226351</bug_id>
          
          <creation_ts>2021-05-27 13:22:47 -0700</creation_ts>
          <short_desc>Add copy of std::span so that we can use it pre-moving to c++20</short_desc>
          <delta_ts>2021-06-08 13:08:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1764471</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-27 13:22:47 -0700</bug_when>
    <thetext>Add copy of std::span so that we can use it pre-moving to c++20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764473</commentid>
    <comment_count>1</comment_count>
      <attachid>429917</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-27 13:25:46 -0700</bug_when>
    <thetext>Created attachment 429917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764502</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-27 14:22:46 -0700</bug_when>
    <thetext>Thoughts on whether we should keep this named std::span or rename it to WTF::Span?

I prefer keeping it std::span, but am open to arguments against it.

If we do keep it std::span, I need to add guards that we only use this when compiling as c++17 and use the standard one when in c++20.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764508</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-27 14:36:24 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #2)
&gt; Thoughts on whether we should keep this named std::span or rename it to
&gt; WTF::Span?
&gt; 
&gt; I prefer keeping it std::span, but am open to arguments against it.
&gt; 
&gt; If we do keep it std::span, I need to add guards that we only use this when
&gt; compiling as c++17 and use the standard one when in c++20.

I don&apos;t mind using std::span at all but we called std::expected WTF::Expected for some reason?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764511</commentid>
    <comment_count>4</comment_count>
      <attachid>429931</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-27 14:37:20 -0700</bug_when>
    <thetext>Created attachment 429931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764515</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-27 15:01:58 -0700</bug_when>
    <thetext>Using std::span saves us potentially a lot of work once we have C++20 across all the compilers, so I like it.

Using std::span makes us vulnerable if there are differences between what our code depends on and what shows up in any of our supported compilers and their standard libraries. We could suddenly have a lot of work to do in a hurry when some new version comes out and we want to compile with it.

Those are the arguments for and against I can think of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764686</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-27 22:51:45 -0700</bug_when>
    <thetext>Using WTF::Span would make it feasible to add custom code such as WTF::Vector specific constructors. Not saying this would weigh more than using the standard naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764688</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-27 22:56:34 -0700</bug_when>
    <thetext>... though since std::span does not have specialisations for containers such as std::vector, it probably is not a problem as whatever the solution there is, it should be applicable to WTF containers too..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764824</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-28 10:40:20 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #6)
&gt; Using WTF::Span would make it feasible to add custom code such as
&gt; WTF::Vector specific constructors. Not saying this would weigh more than
&gt; using the standard naming.

Can we accomplish the same thing by putting a conversion operator in WTF::Vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765164</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-29 18:34:37 -0700</bug_when>
    <thetext>Looking at the implementation in libc++, it seems like as long as WTF::Vector&lt;&gt; conforms to the __is_span_compatible_container trait, it should just work (I believe this is sort of a pre-Ranges &quot;hack&quot; to allow contiguous containers to work). The constraints are currently:

// is not a specialization of span
// is not a specialization of array
// is_array_v&lt;Container&gt; is false,
// data(cont) and size(cont) are well formed
// remove_pointer_t&lt;decltype(data(cont))&gt;(*)[] is convertible to ElementType(*)[]

That said, I am having a trouble working through the MSVC error, so... :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766494</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-03 13:23:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78833286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767222</commentid>
    <comment_count>11</comment_count>
      <attachid>430685</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-06 09:54:21 -0700</bug_when>
    <thetext>Created attachment 430685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767223</commentid>
    <comment_count>12</comment_count>
      <attachid>430686</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-06 09:55:36 -0700</bug_when>
    <thetext>Created attachment 430686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767450</commentid>
    <comment_count>13</comment_count>
      <attachid>430686</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-07 08:32:18 -0700</bug_when>
    <thetext>Comment on attachment 430686
Patch

My general apprehension around using std:: and the issues trying to make it work have led to this version that calls it Span (or WTF::Span with a using). I can keep trying to make the std:: span work if the consensus was that was better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767601</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2021-06-07 16:54:52 -0700</bug_when>
    <thetext>Out of curiosity, is there a reason this is using a Boost copy of std::span instead the one from libc++? Compatibility with GCC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767612</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-07 17:39:13 -0700</bug_when>
    <thetext>(In reply to Anders Carlsson from comment #14)
&gt; Out of curiosity, is there a reason this is using a Boost copy of std::span
&gt; instead the one from libc++? Compatibility with GCC?

Couldn&apos;t get the libc++ one to build with MSVC. (https://ews-build.webkit.org/#/builders/10/builds/94221/steps/11/logs/stdio)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767667</commentid>
    <comment_count>16</comment_count>
      <attachid>430686</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-06-07 22:01:42 -0700</bug_when>
    <thetext>Comment on attachment 430686
Patch

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

std::expected has not been standardized but std::span has.  That&apos;s the difference between this and WTF::Expected.

Do we want to introduce a use of this as we add it, such as the one I suggested in https://bugs.webkit.org/show_bug.cgi?id=225988 ?

&gt; Source/WTF/wtf/Span.h:3
&gt; +//    (See accompanying file ../../LICENSE_1_0-Boost.txt or copy at

We should probably change this to just ../LICENSE_1_0-Boost.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767768</commentid>
    <comment_count>17</comment_count>
      <attachid>430837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-08 07:33:06 -0700</bug_when>
    <thetext>Created attachment 430837
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767782</commentid>
    <comment_count>18</comment_count>
      <attachid>430843</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-08 08:05:55 -0700</bug_when>
    <thetext>Created attachment 430843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767808</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 09:54:42 -0700</bug_when>
    <thetext>Committed r278616 (238602@main): &lt;https://commits.webkit.org/238602@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430843.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767815</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-08 10:23:15 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #16)
&gt; Comment on attachment 430686 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430686&amp;action=review
&gt; 
&gt; Do we want to introduce a use of this as we add it, such as the one I
&gt; suggested in https://bugs.webkit.org/show_bug.cgi?id=225988 ?

I wanted to do it separate, but I did do it https://bugs.webkit.org/show_bug.cgi?id=226773.

&gt; 
&gt; &gt; Source/WTF/wtf/Span.h:3
&gt; &gt; +//    (See accompanying file ../../LICENSE_1_0-Boost.txt or copy at
&gt; 
&gt; We should probably change this to just ../LICENSE_1_0-Boost.txt

Fixed. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429917</attachid>
            <date>2021-05-27 13:25:46 -0700</date>
            <delta_ts>2021-06-06 09:54:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226351-20210527132545.patch</filename>
            <type>text/plain</type>
            <size>35454</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzgxNzQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcG9ydHMgYSBjb3B5IG9mIDxzcGFuPiBmcm9tIGU4OTI3
MDVkNzRjNzM2NmExNDA0YTNiMzQ3MTAwMWVkYWE3NjU5Zjggb2YgdGhlCisgICAgICAgIGxpYmMr
KyBwcm9qZWN0IChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0KSBhbmQg
bW9kaWZpZXMgaXQgdG8gCisgICAgICAgIHdvcmsgb24gdG9wIG9mIGFueSBzdGFuZGFyZCBsaWJy
YXJ5IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TdGRT
cGFuLmg6IEFkZGVkLgorCiAyMDIxLTA1LTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgYE5TTG9jYWxlYCBTUEkgZm9yIGNvbXBhcmluZyBsYW5ndWFn
ZSBpZGVudGlmaWVycyBpbnN0ZWFkIG9mIHN0cmluZyBjb21wYXJpc29uCkluZGV4OiBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODE2NCkKKysrIFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTY4OCw2ICs2ODgsNyBAQAogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9y
eUZvb3RwcmludENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lbW9yeUZvb3RwcmludENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkNFRjlBM0EyNjYwMEYwQjAwOUI5MjFGIC8qIFN0ZFNwYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rk
U3Bhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRTFGNjFEMTMwMDBD
OTIyMkMgLyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGFuZ3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRjFG
NjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCQ0ZDNDEx
RjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMjcwLDYgKzEyNzEsNyBAQAogCQkJCUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBT
dGRMaXN0LmggKi8sCiAJCQkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlBOTNEIC8qIFN0ZE1hcC5oICov
LAogCQkJCTUzRjA4QTFCQTM5RDQ5QThCQUQzNjlBMSAvKiBTdGRTZXQuaCAqLywKKwkJCQlCQ0VG
OUEzQTI2NjAwRjBCMDA5QjkyMUYgLyogU3RkU3Bhbi5oICovLAogCQkJCTc5M0JGQUREOUNFRDQ0
QjhCOUZCQ0ExNiAvKiBTdGRVbm9yZGVyZWRNYXAuaCAqLywKIAkJCQkxMzI3NDM5MjRGQzU0RTQ2
OUY1QThFNkUgLyogU3RkVW5vcmRlcmVkU2V0LmggKi8sCiAJCQkJQzRGOEE5MzYxOUM2NUVCNDAw
QjJCMTVEIC8qIFN0b3B3YXRjaC5oICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDI3ODE2NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0yNTIsNiArMjUyLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN0ZExp
c3QuaAogICAgIFN0ZE1hcC5oCiAgICAgU3RkU2V0LmgKKyAgICBTdGRTcGFuLmgKICAgICBTdGRV
bm9yZGVyZWRNYXAuaAogICAgIFN0ZFVub3JkZXJlZFNldC5oCiAgICAgU3RvcHdhdGNoLmgKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZFNwYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9TdGRTcGFuLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU3RkU3Bhbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTg0IEBACisvLyAtKi0gQysrIC0qLQorLy89PT0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3BhbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6
Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisv
Lz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKy8vIEltcG9ydHMgYSBjb3B5IG9mIDxzcGFuPiBmcm9t
IGU4OTI3MDVkNzRjNzM2NmExNDA0YTNiMzQ3MTAwMWVkYWE3NjU5Zjggb2YgdGhlCisvLyBsaWJj
KysgcHJvamVjdCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0LmdpdCkgYW5k
IG1vZGlmaWVzIGl0IHRvIAorLy8gd29yayBvbiB0b3Agb2YgYW55IHN0YW5kYXJkIGxpYnJhcnkg
aW1wbGVtZW50YXRpb24uCisvLworLy8gLSBSZW5hbWVzIG1hY3JvcyB3aXRoIF9MSUJDUFBfIHBy
ZWZpeCB0byB1c2UgdGhlIHByZWZpeCBfV1RGX0xJQkNQUF8KKy8vIC0gQWRkcyBtYWNybyBkZWZp
bnRpb25zIGZvciBuZXcgX1dURl9MSUJDUFBfIG1hY3Jvcy4KKy8vIC0gU3RvcCAjaW5jbHVkaW5n
IGludGVybmFsIGxpYmMrKyBoZWFkZXJzLgorLy8gLSBSZW1vdmUgY2hlY2sgZm9yID4gYysrMTcu
CisvLyAtIFJlbW92ZSBwdXNoL3BvcCBhdmFpbGFiaWxpdHkgb2YgbWluL21heCBtYWNyb3MuCisK
KyNpZm5kZWYgX1dURl9MSUJDUFBfU1BBTgorI2RlZmluZSBfV1RGX0xJQkNQUF9TUEFOCisKKy8q
CisgICAgc3BhbiBzeW5vcHNpcworCituYW1lc3BhY2Ugc3RkIHsKKworLy8gY29uc3RhbnRzCitp
bmxpbmUgY29uc3RleHByIHNpemVfdCBkeW5hbWljX2V4dGVudCA9IG51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpOworCisvLyBbdmlld3Muc3Bhbl0sIGNsYXNzIHRlbXBsYXRlIHNwYW4KK3Rl
bXBsYXRlIDxjbGFzcyBFbGVtZW50VHlwZSwgc2l6ZV90IEV4dGVudCA9IGR5bmFtaWNfZXh0ZW50
PgorICAgIGNsYXNzIHNwYW47CisKK3RlbXBsYXRlPGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3Qg
RXh0ZW50PgorICAgIGlubGluZSBjb25zdGV4cHIgYm9vbCByYW5nZXM6OmVuYWJsZV9ib3Jyb3dl
ZF9yYW5nZTxzcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+PiA9IHRydWU7CisKKy8vIFtzcGFuLm9i
amVjdHJlcF0sIHZpZXdzIG9mIG9iamVjdCByZXByZXNlbnRhdGlvbgordGVtcGxhdGUgPGNsYXNz
IEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50PgorICAgIHNwYW48Y29uc3QgYnl0ZSwgKChFeHRl
bnQgPT0gZHluYW1pY19leHRlbnQpID8gZHluYW1pY19leHRlbnQgOgorICAgICAgICAoc2l6ZW9m
KEVsZW1lbnRUeXBlKSAqIEV4dGVudCkpPiBhc19ieXRlcyhzcGFuPEVsZW1lbnRUeXBlLCBFeHRl
bnQ+IHMpIG5vZXhjZXB0OworCit0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudFR5cGUsIHNpemVfdCBF
eHRlbnQ+CisgICAgc3BhbjwgICAgICBieXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4dGVudCkg
PyBkeW5hbWljX2V4dGVudCA6CisgICAgICAgIChzaXplb2YoRWxlbWVudFR5cGUpICogRXh0ZW50
KSk+IGFzX3dyaXRhYmxlX2J5dGVzKHNwYW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNl
cHQ7CisKKwordGVtcGxhdGUgPGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50ID0gZHlu
YW1pY19leHRlbnQ+CitjbGFzcyBzcGFuIHsKK3B1YmxpYzoKKyAgICAvLyBjb25zdGFudHMgYW5k
IHR5cGVzCisgICAgdXNpbmcgZWxlbWVudF90eXBlID0gRWxlbWVudFR5cGU7CisgICAgdXNpbmcg
dmFsdWVfdHlwZSA9IHJlbW92ZV9jdl90PEVsZW1lbnRUeXBlPjsKKyAgICB1c2luZyBzaXplX3R5
cGUgPSBzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAg
IHVzaW5nIHBvaW50ZXIgPSBlbGVtZW50X3R5cGUqOworICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIg
PSBjb25zdCBlbGVtZW50X3R5cGUqOworICAgIHVzaW5nIHJlZmVyZW5jZSA9IGVsZW1lbnRfdHlw
ZSY7CisgICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3QgZWxlbWVudF90eXBlJjsKKyAg
ICB1c2luZyBpdGVyYXRvciA9IGltcGxlbWVudGF0aW9uLWRlZmluZWQ7CisgICAgdXNpbmcgcmV2
ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0ZW50ID0gRXh0ZW50OworCisgICAgLy8gW3NwYW4u
Y29uc10sIHNwYW4gY29uc3RydWN0b3JzLCBjb3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3Rv
cgorICAgIGNvbnN0ZXhwciBzcGFuKCkgbm9leGNlcHQ7CisgICAgY29uc3RleHByIGV4cGxpY2l0
KEV4dGVudCAhPSBkeW5hbWljX2V4dGVudCkgc3Bhbihwb2ludGVyIHB0ciwgc2l6ZV90eXBlIGNv
dW50KTsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQoRXh0ZW50ICE9IGR5bmFtaWNfZXh0ZW50KSBz
cGFuKHBvaW50ZXIgZmlyc3RFbGVtLCBwb2ludGVyIGxhc3RFbGVtKTsKKyAgICB0ZW1wbGF0ZSA8
c2l6ZV90IE4+CisgICAgICAgIGNvbnN0ZXhwciBzcGFuKGVsZW1lbnRfdHlwZSAoJmFycilbTl0p
IG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxzaXplX3QgTj4KKyAgICAgICAgY29uc3RleHByIHNw
YW4oYXJyYXk8dmFsdWVfdHlwZSwgTj4mIGFycikgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPHNp
emVfdCBOPgorICAgICAgICBjb25zdGV4cHIgc3Bhbihjb25zdCBhcnJheTx2YWx1ZV90eXBlLCBO
PiYgYXJyKSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgorICAgICAg
ICBjb25zdGV4cHIgZXhwbGljaXQoRXh0ZW50ICE9IGR5bmFtaWNfZXh0ZW50KSBzcGFuKENvbnRh
aW5lciYgY29udCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4KKyAgICAgICAgY29u
c3RleHByIGV4cGxpY2l0KEV4dGVudCAhPSBkeW5hbWljX2V4dGVudCkgc3Bhbihjb25zdCBDb250
YWluZXImIGNvbnQpOworICAgIGNvbnN0ZXhwciBzcGFuKGNvbnN0IHNwYW4mIG90aGVyKSBub2V4
Y2VwdCA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIE90aGVyRWxlbWVudFR5cGUsIHNp
emVfdCBPdGhlckV4dGVudD4KKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0KEV4dGVudCAhPSBk
eW5hbWljX2V4dGVudCkgc3Bhbihjb25zdCBzcGFuPE90aGVyRWxlbWVudFR5cGUsIE90aGVyRXh0
ZW50PiYgcykgbm9leGNlcHQ7CisgICAgfnNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisgICAg
Y29uc3RleHByIHNwYW4mIG9wZXJhdG9yPShjb25zdCBzcGFuJiBvdGhlcikgbm9leGNlcHQgPSBk
ZWZhdWx0OworCisgICAgLy8gW3NwYW4uc3ViXSwgc3BhbiBzdWJ2aWV3cworICAgIHRlbXBsYXRl
IDxzaXplX3QgQ291bnQ+CisgICAgICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgQ291
bnQ+IGZpcnN0KCkgY29uc3Q7CisgICAgdGVtcGxhdGUgPHNpemVfdCBDb3VudD4KKyAgICAgICAg
Y29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBDb3VudD4gbGFzdCgpIGNvbnN0OworICAgIHRl
bXBsYXRlIDxzaXplX3QgT2Zmc2V0LCBzaXplX3QgQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAg
ICAgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBzZWUgYmVsb3c+IHN1YnNwYW4oKSBj
b25zdDsKKworICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+
IGZpcnN0KHNpemVfdHlwZSBjb3VudCkgY29uc3Q7CisgICAgY29uc3RleHByIHNwYW48ZWxlbWVu
dF90eXBlLCBkeW5hbWljX2V4dGVudD4gbGFzdChzaXplX3R5cGUgY291bnQpIGNvbnN0OworICAg
IGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IHN1YnNwYW4oc2l6
ZV90eXBlIG9mZnNldCwgc2l6ZV90eXBlIGNvdW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0Owor
CisgICAgLy8gW3NwYW4ub2JzXSwgc3BhbiBvYnNlcnZlcnMKKyAgICBjb25zdGV4cHIgc2l6ZV90
eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdDsKKyAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVf
Ynl0ZXMoKSBjb25zdCBub2V4Y2VwdDsKKyAgICBjb25zdGV4cHIgYm9vbCBlbXB0eSgpIGNvbnN0
IG5vZXhjZXB0OworCisgICAgLy8gW3NwYW4uZWxlbV0sIHNwYW4gZWxlbWVudCBhY2Nlc3MKKyAg
ICBjb25zdGV4cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIGlkeCkgY29uc3Q7Cisg
ICAgY29uc3RleHByIHJlZmVyZW5jZSBmcm9udCgpIGNvbnN0OworICAgIGNvbnN0ZXhwciByZWZl
cmVuY2UgYmFjaygpIGNvbnN0OworICAgIGNvbnN0ZXhwciBwb2ludGVyIGRhdGEoKSBjb25zdCBu
b2V4Y2VwdDsKKworICAgIC8vIFtzcGFuLml0ZXJhdG9yc10sIHNwYW4gaXRlcmF0b3Igc3VwcG9y
dAorICAgIGNvbnN0ZXhwciBpdGVyYXRvciBiZWdpbigpIGNvbnN0IG5vZXhjZXB0OworICAgIGNv
bnN0ZXhwciBpdGVyYXRvciBlbmQoKSBjb25zdCBub2V4Y2VwdDsKKyAgICBjb25zdGV4cHIgcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCBub2V4Y2VwdDsKKyAgICBjb25zdGV4cHIgcmV2
ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3Qgbm9leGNlcHQ7CisKK3ByaXZhdGU6CisgICAgcG9p
bnRlciBkYXRhXzsgICAgLy8gZXhwb3NpdGlvbiBvbmx5CisgICAgc2l6ZV90eXBlIHNpemVfOyAg
Ly8gZXhwb3NpdGlvbiBvbmx5Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBULCBzaXplX3QgTj4KKyAg
ICBzcGFuKFQgKCYpW05dKSAtPiBzcGFuPFQsIE4+OworCit0ZW1wbGF0ZTxjbGFzcyBULCBzaXpl
X3QgTj4KKyAgICBzcGFuKGFycmF5PFQsIE4+JikgLT4gc3BhbjxULCBOPjsKKwordGVtcGxhdGU8
Y2xhc3MgVCwgc2l6ZV90IE4+CisgICAgc3Bhbihjb25zdCBhcnJheTxULCBOPiYpIC0+IHNwYW48
Y29uc3QgVCwgTj47CisKK3RlbXBsYXRlPGNsYXNzIENvbnRhaW5lcj4KKyAgICBzcGFuKENvbnRh
aW5lciYpIC0+IHNwYW48dHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlPjsKKwordGVtcGxh
dGU8Y2xhc3MgQ29udGFpbmVyPgorICAgIHNwYW4oY29uc3QgQ29udGFpbmVyJikgLT4gc3Bhbjxj
b25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+OworCit9IC8vIG5hbWVzcGFjZSBz
dGQKKworKi8KKworI2luY2x1ZGUgPGFycmF5PiAgICAgICAgLy8gZm9yIGFycmF5CisjaW5jbHVk
ZSA8Y3N0ZGRlZj4gICAgICAvLyBmb3IgYnl0ZQorI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgLy8g
Zm9yIGl0ZXJhdG9ycworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPiAgLy8gZm9yIHJlbW92ZV9jdiwg
ZXRjCisKKy8vIEFkZHMgc29tZSBtYWNybyBkZWZpbmVzIHVzdWFsbHkgZGVmaW5lZCBpbiBfX2Nv
bmZpZy4KKworI2RlZmluZSBfV1RGX0xJQkNQUF9BQklfU1BBTl9QT0lOVEVSX0lURVJBVE9SUwor
I2RlZmluZSBfV1RGX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1REIG5hbWVzcGFjZSBzdGQgewor
I2RlZmluZSBfV1RGX0xJQkNQUF9ERUJVR19MRVZFTCAwCisjZGVmaW5lIF9XVEZfTElCQ1BQX0VO
RF9OQU1FU1BBQ0VfU1REICB9CisjZGVmaW5lIF9XVEZfTElCQ1BQX0hBU19OT19QUkFHTUFfU1lT
VEVNX0hFQURFUiAxCisjZGVmaW5lIF9XVEZfTElCQ1BQX0hBU19OT19SQU5HRVMKKyNkZWZpbmUg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyNkZWZpbmUgX1dURl9MSUJDUFBfVEVNUExB
VEVfVklTCisjZGVmaW5lIF9XVEZfVlNURCBzdGQKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjZGVmaW5lIF9XVEZfTElCQ1BQX0FTU0VSVCBBU1NFUlQKKworI2lmICFkZWZpbmVkKF9X
VEZfTElCQ1BQX0hBU19OT19QUkFHTUFfU1lTVEVNX0hFQURFUikKKyNwcmFnbWEgR0NDIHN5c3Rl
bV9oZWFkZXIKKyNlbmRpZgorCitfV1RGX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECisKK2lu
bGluZSBjb25zdGV4cHIgc2l6ZV90IGR5bmFtaWNfZXh0ZW50ID0gbnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwLCBzaXplX3QgX0V4dGVudCA9IGR5
bmFtaWNfZXh0ZW50PiBjbGFzcyBzcGFuOworCisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1
Y3QgX19pc19zcGFuX2ltcGwgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPGNs
YXNzIF9UcCwgc2l6ZV90IF9FeHRlbnQ+CitzdHJ1Y3QgX19pc19zcGFuX2ltcGw8c3BhbjxfVHAs
IF9FeHRlbnQ+PiA6IHB1YmxpYyB0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+
CitzdHJ1Y3QgX19pc19zcGFuIDogcHVibGljIF9faXNfc3Bhbl9pbXBsPHJlbW92ZV9jdl90PF9U
cD4+IHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfc3RkX2FycmF5X2lt
cGwgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc2l6ZV90
IF9Tej4KK3N0cnVjdCBfX2lzX3N0ZF9hcnJheV9pbXBsPGFycmF5PF9UcCwgX1N6Pj4gOiBwdWJs
aWMgdHJ1ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfc3Rk
X2FycmF5IDogcHVibGljIF9faXNfc3RkX2FycmF5X2ltcGw8cmVtb3ZlX2N2X3Q8X1RwPj4ge307
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9FbGVtZW50VHlwZSwgY2xhc3MgPSB2b2lk
Pgorc3RydWN0IF9faXNfc3Bhbl9jb21wYXRpYmxlX2NvbnRhaW5lciA6IHB1YmxpYyBmYWxzZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRWxlbWVudFR5cGU+CitzdHJ1
Y3QgX19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9UcCwgX0VsZW1lbnRUeXBlLAorICAg
ICAgICB2b2lkX3Q8CisgICAgICAgIC8vIGlzIG5vdCBhIHNwZWNpYWxpemF0aW9uIG9mIHNwYW4K
KyAgICAgICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjwhX19pc19zcGFuPF9UcD46OnZhbHVlLCBu
dWxscHRyX3Q+Ojp0eXBlLAorICAgICAgICAvLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBh
cnJheQorICAgICAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lmPCFfX2lzX3N0ZF9hcnJheTxfVHA+
Ojp2YWx1ZSwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAgICAgLy8gaXNfYXJyYXlfdjxDb250YWlu
ZXI+IGlzIGZhbHNlLAorICAgICAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lmPCFpc19hcnJheV92
PF9UcD4sIG51bGxwdHJfdD46OnR5cGUsCisgICAgICAgIC8vIGRhdGEoY29udCkgYW5kIHNpemUo
Y29udCkgYXJlIHdlbGwgZm9ybWVkCisgICAgICAgICAgICBkZWNsdHlwZShkYXRhKGRlY2x2YWw8
X1RwPigpKSksCisgICAgICAgICAgICBkZWNsdHlwZShzaXplKGRlY2x2YWw8X1RwPigpKSksCisg
ICAgICAgIC8vIHJlbW92ZV9wb2ludGVyX3Q8ZGVjbHR5cGUoZGF0YShjb250KSk+KCopW10gaXMg
Y29udmVydGlibGUgdG8gRWxlbWVudFR5cGUoKilbXQorICAgICAgICAgICAgdHlwZW5hbWUgZW5h
YmxlX2lmPAorICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlX3Y8cmVtb3ZlX3BvaW50ZXJf
dDxkZWNsdHlwZShkYXRhKGRlY2x2YWw8X1RwICY+KCkpKT4oKilbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9FbGVtZW50VHlwZSgqKVtdPiwKKyAgICAgICAgICAgICAgICBu
dWxscHRyX3Q+Ojp0eXBlCisgICAgICAgID4+CisgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9Owor
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBfVHAsIHNpemVfdCBfRXh0ZW50PgorY2xhc3MgX1dURl9M
SUJDUFBfVEVNUExBVEVfVklTIHNwYW4geworcHVibGljOgorLy8gIGNvbnN0YW50cyBhbmQgdHlw
ZXMKKyAgICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAgIHVzaW5nIHZh
bHVlX3R5cGUgICAgICAgICAgICAgPSByZW1vdmVfY3ZfdDxfVHA+OworICAgIHVzaW5nIHNpemVf
dHlwZSAgICAgICAgICAgICAgPSBzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAg
ICAgICA9IHB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgICAgID0gX1Rw
ICo7CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9UcCAqOworICAg
IHVzaW5nIHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2luZyBjb25zdF9y
ZWZlcmVuY2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xF
VkVMID09IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRP
UlMpCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7CisjZWxzZQor
ICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsK
KyNlbmRpZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJl
dmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5
cGUgZXh0ZW50ID0gX0V4dGVudDsKKworLy8gW3NwYW4uY29uc10sIHNwYW4gY29uc3RydWN0b3Jz
LCBjb3B5LCBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvcgorICAgIHRlbXBsYXRlIDxzaXplX3Qg
X1N6ID0gX0V4dGVudCwgZW5hYmxlX2lmX3Q8X1N6ID09IDAsIG51bGxwdHJfdD4gPSBudWxscHRy
PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBzcGFuKCkgbm9l
eGNlcHQgOiBfX2RhdGF7bnVsbHB0cn0ge30KKworICAgIGNvbnN0ZXhwciBzcGFuICAgICAgICAg
ICAoY29uc3Qgc3BhbiYpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgc3BhbiYg
b3BlcmF0b3I9KGNvbnN0IHNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisKKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgZXhwbGljaXQgc3Bhbihwb2ludGVyIF9f
cHRyLCBzaXplX3R5cGUgX19jb3VudCkgOiBfX2RhdGF7X19wdHJ9CisgICAgICAgIHsgKHZvaWQp
X19jb3VudDsgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gX19jb3VudCwgInNpemUgbWlz
bWF0Y2ggaW4gc3BhbidzIGNvbnN0cnVjdG9yIChwdHIsIGxlbikiKTsgfQorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBleHBsaWNpdCBzcGFuKHBvaW50ZXIgX19m
LCBwb2ludGVyIF9fbCkgOiBfX2RhdGF7X19mfQorICAgICAgICB7ICh2b2lkKV9fbDsgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVChfRXh0ZW50ID09IGRpc3RhbmNlKF9fZiwgX19sKSwgInNpemUgbWlz
bWF0Y2ggaW4gc3BhbidzIGNvbnN0cnVjdG9yIChwdHIsIHB0cikiKTsgfQorCisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNwYW4oZWxlbWVudF90eXBlICgmX19h
cnIpW19FeHRlbnRdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0ge30KKworICAg
IHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKKyAgICAgICAgICAgICAgZW5hYmxl
X2lmX3Q8aXNfY29udmVydGlibGVfdjxfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVtZW50X3R5
cGUgKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuKGFycmF5PF9PdGhlckVsZW1lbnRUeXBlLCBf
RXh0ZW50PiYgX19hcnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0ge30KKworICAg
IHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVtZW50VHlwZSwKKyAgICAgICAgICAgICAgZW5hYmxl
X2lmX3Q8aXNfY29udmVydGlibGVfdjxjb25zdCBfT3RoZXJFbGVtZW50VHlwZSgqKVtdLCBlbGVt
ZW50X3R5cGUgKCopW10+LCBudWxscHRyX3Q+ID0gbnVsbHB0cj4KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuKGNvbnN0IGFycmF5PF9PdGhlckVs
ZW1lbnRUeXBlLCBfRXh0ZW50PiYgX19hcnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEo
KX0ge30KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgorICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBzcGFuKCAgICAg
IF9Db250YWluZXImIF9fYywKKyAgICAgICAgICAgIGVuYWJsZV9pZl90PF9faXNfc3Bhbl9jb21w
YXRpYmxlX2NvbnRhaW5lcjxfQ29udGFpbmVyLCBfVHA+Ojp2YWx1ZSwgbnVsbHB0cl90PiA9IG51
bGxwdHIpCisgICAgICAgIDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSB7CisgICAgICAg
ICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfV1RGX1ZTVEQ6OnNpemUoX19jKSwg
InNpemUgbWlzbWF0Y2ggaW4gc3BhbidzIGNvbnN0cnVjdG9yIChyYW5nZSkiKTsKKyAgICAgICAg
fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IHNwYW4oY29uc3QgX0Nv
bnRhaW5lciYgX19jLAorICAgICAgICAgICAgZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGli
bGVfY29udGFpbmVyPGNvbnN0IF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBudWxscHRyX3Q+ID0g
bnVsbHB0cikKKyAgICAgICAgOiBfX2RhdGF7X1dURl9WU1REOjpkYXRhKF9fYyl9IHsKKyAgICAg
ICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfRXh0ZW50ID09IF9XVEZfVlNURDo6c2l6ZShfX2Mp
LCAic2l6ZSBtaXNtYXRjaCBpbiBzcGFuJ3MgY29uc3RydWN0b3IgKHJhbmdlKSIpOworICAgICAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGU+CisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIHNwYW4oY29uc3Qgc3Bh
bjxfT3RoZXJFbGVtZW50VHlwZSwgX0V4dGVudD4mIF9fb3RoZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgIGVuYWJsZV9pZl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0
aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9f
ZGF0YXtfX290aGVyLmRhdGEoKX0ge30KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfT3RoZXJFbGVt
ZW50VHlwZT4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBjb25z
dGV4cHIgZXhwbGljaXQgc3Bhbihjb25zdCBzcGFuPF9PdGhlckVsZW1lbnRUeXBlLCBkeW5hbWlj
X2V4dGVudD4mIF9fb3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9pZl90PAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRU
eXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHJfdD4gPSBudWxscHRyKSBub2V4Y2VwdAorICAgICAgICA6IF9fZGF0YXtfX290aGVy
LmRhdGEoKX0geyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4dGVudCA9PSBfX290aGVyLnNpemUoKSwg
InNpemUgbWlzbWF0Y2ggaW4gc3BhbidzIGNvbnN0cnVjdG9yIChvdGhlciBzcGFuKSIpOyB9CisK
KworLy8gIH5zcGFuKCkgbm9leGNlcHQgPSBkZWZhdWx0OworCisgICAgdGVtcGxhdGUgPHNpemVf
dCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4
cHIgc3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gZmlyc3QoKSBjb25zdCBub2V4Y2VwdAorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChfQ291bnQgPD0gX0V4dGVudCwgIkNvdW50IG91dCBv
ZiByYW5nZSBpbiBzcGFuOjpmaXJzdCgpIik7CisgICAgICAgIHJldHVybiBzcGFuPGVsZW1lbnRf
dHlwZSwgX0NvdW50PntkYXRhKCksIF9Db3VudH07CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNp
emVfdCBfQ291bnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25z
dGV4cHIgc3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0Cisg
ICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KF9Db3VudCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0
IG9mIHJhbmdlIGluIHNwYW46Omxhc3QoKSIpOworICAgICAgICByZXR1cm4gc3BhbjxlbGVtZW50
X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgc2l6ZSgpIC0gX0NvdW50LCBfQ291bnR9OworICAgIH0K
KworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIHNwYW48
ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gZmlyc3Qoc2l6ZV90eXBlIF9fY291bnQpIGNv
bnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8
PSBzaXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6Zmlyc3QoY291bnQpIik7Cisg
ICAgICAgIHJldHVybiB7ZGF0YSgpLCBfX2NvdW50fTsKKyAgICB9CisKKyAgICBfV1RGX0xJQkNQ
UF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgZHlu
YW1pY19leHRlbnQ+IGxhc3Qoc2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0CisgICAg
eworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXplKCksICJDb3VudCBv
dXQgb2YgcmFuZ2UgaW4gc3Bhbjo6bGFzdChjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRh
KCkgKyBzaXplKCkgLSBfX2NvdW50LCBfX2NvdW50fTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
c2l6ZV90IF9PZmZzZXQsIHNpemVfdCBfQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAgICBfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBhdXRvIHN1YnNwYW4oKSBj
b25zdCBub2V4Y2VwdAorICAgICAgICAtPiBzcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50ICE9IGR5
bmFtaWNfZXh0ZW50ID8gX0NvdW50IDogX0V4dGVudCAtIF9PZmZzZXQ+CisgICAgeworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KF9PZmZzZXQgPD0gX0V4dGVudCwgIk9mZnNldCBvdXQgb2YgcmFuZ2Ug
aW4gc3Bhbjo6c3Vic3BhbigpIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX0NvdW50ID09IGR5
bmFtaWNfZXh0ZW50IHx8IF9Db3VudCA8PSBfRXh0ZW50IC0gX09mZnNldCwgIk9mZnNldCArIGNv
dW50IG91dCBvZiByYW5nZSBpbiBzcGFuOjpzdWJzcGFuKCkiKTsKKworICAgICAgICB1c2luZyBf
UmV0dXJuVHlwZSA9IHNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQgIT0gZHluYW1pY19leHRlbnQg
PyBfQ291bnQgOiBfRXh0ZW50IC0gX09mZnNldD47CisgICAgICAgIHJldHVybiBfUmV0dXJuVHlw
ZXtkYXRhKCkgKyBfT2Zmc2V0LCBfQ291bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBf
T2Zmc2V0IDogX0NvdW50fTsKKyAgICB9CisKKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZCisgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4K
KyAgICAgICBzdWJzcGFuKHNpemVfdHlwZSBfX29mZnNldCwgc2l6ZV90eXBlIF9fY291bnQgPSBk
eW5hbWljX2V4dGVudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQ
X0FTU0VSVChfX29mZnNldCA8PSBzaXplKCksICJPZmZzZXQgb3V0IG9mIHJhbmdlIGluIHNwYW46
OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9f
Y291bnQgIDw9IHNpemUoKSB8fCBfX2NvdW50ID09IGR5bmFtaWNfZXh0ZW50LCAiQ291bnQgb3V0
IG9mIHJhbmdlIGluIHNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgaWYg
KF9fY291bnQgPT0gZHluYW1pY19leHRlbnQpCisgICAgICAgICAgICByZXR1cm4ge2RhdGEoKSAr
IF9fb2Zmc2V0LCBzaXplKCkgLSBfX29mZnNldH07CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VS
VChfX2NvdW50IDw9IHNpemUoKSAtIF9fb2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJh
bmdlIGluIHNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtk
YXRhKCkgKyBfX29mZnNldCwgX19jb3VudH07CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplKCkgICAgICAgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gX0V4dGVudDsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0
dXJuIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKTsgfQorICAgIF9XVEZfTElCQ1BQX0lO
TElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgICAgICAgICAgIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIF9FeHRlbnQgPT0gMDsgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBfX2lk
eCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2lk
eCA8IHNpemUoKSwgInNwYW48VCxOPltdIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAg
cmV0dXJuIF9fZGF0YVtfX2lkeF07CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBmcm9udCgpIGNvbnN0IG5vZXhjZXB0CisgICAg
eworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJzcGFuPFQsIE4+Ojpmcm9u
dCgpIG9uIGVtcHR5IHNwYW4iKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVswXTsKKyAgICB9CisK
KyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGJh
Y2soKSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFl
bXB0eSgpLCAic3BhbjxULCBOPjo6YmFjaygpIG9uIGVtcHR5IHNwYW4iKTsKKyAgICAgICAgcmV0
dXJuIF9fZGF0YVtzaXplKCktMV07CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJ
U0lCSUxJVFkgY29uc3RleHByIHBvaW50ZXIgZGF0YSgpICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fZGF0YTsgfQorCisvLyBbc3Bhbi5pdGVyXSwgc3Bh
biBpdGVyYXRvciBzdXBwb3J0CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29u
c3RleHByIGl0ZXJhdG9yICAgICAgICAgICAgICAgICBiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsg
cmV0dXJuIGl0ZXJhdG9yKGRhdGEoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgZW5kKCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpICsgc2l6ZSgpKTsgfQorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yICAgICAgICBy
YmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsg
fQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZXZlcnNlX2l0
ZXJhdG9yICAgICAgICAgIHJlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiByZXZlcnNlX2l0
ZXJhdG9yKGJlZ2luKCkpOyB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBz
cGFuPGNvbnN0IGJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT4gX19hc19ieXRl
cygpIGNvbnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4gc3Bhbjxjb25zdCBieXRlLCBfRXh0ZW50
ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk+e3JlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnl0ZSAqPihk
YXRhKCkpLCBzaXplX2J5dGVzKCl9OyB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBzcGFuPGJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT4gX19hc193cml0
YWJsZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4gc3BhbjxieXRlLCBfRXh0
ZW50ICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk+e3JlaW50ZXJwcmV0X2Nhc3Q8Ynl0ZSAqPihkYXRh
KCkpLCBzaXplX2J5dGVzKCl9OyB9CisKK3ByaXZhdGU6CisgICAgcG9pbnRlciAgICBfX2RhdGE7
CisKK307CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KK2NsYXNzIF9XVEZfTElCQ1BQX1RF
TVBMQVRFX1ZJUyBzcGFuPF9UcCwgZHluYW1pY19leHRlbnQ+IHsKK3ByaXZhdGU6CisKK3B1Ymxp
YzoKKy8vICBjb25zdGFudHMgYW5kIHR5cGVzCisgICAgdXNpbmcgZWxlbWVudF90eXBlICAgICAg
ICAgICA9IF9UcDsKKyAgICB1c2luZyB2YWx1ZV90eXBlICAgICAgICAgICAgID0gcmVtb3ZlX2N2
X3Q8X1RwPjsKKyAgICB1c2luZyBzaXplX3R5cGUgICAgICAgICAgICAgID0gc2l6ZV90OworICAg
IHVzaW5nIGRpZmZlcmVuY2VfdHlwZSAgICAgICAgPSBwdHJkaWZmX3Q7CisgICAgdXNpbmcgcG9p
bnRlciAgICAgICAgICAgICAgICA9IF9UcCAqOworICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgICAg
ICAgICAgPSBjb25zdCBfVHAgKjsKKyAgICB1c2luZyByZWZlcmVuY2UgICAgICAgICAgICAgID0g
X1RwICY7CisgICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlICAgICAgICA9IGNvbnN0IF9UcCAmOwor
I2lmIChfV1RGX0xJQkNQUF9ERUJVR19MRVZFTCA9PSAyKSB8fCBkZWZpbmVkKF9XVEZfTElCQ1BQ
X0FCSV9TUEFOX1BPSU5URVJfSVRFUkFUT1JTKQorICAgIHVzaW5nIGl0ZXJhdG9yICAgICAgICAg
ICAgICAgPSBwb2ludGVyOworI2Vsc2UKKyAgICB1c2luZyBpdGVyYXRvciAgICAgICAgICAgICAg
ID0gX193cmFwX2l0ZXI8cG9pbnRlcj47CisjZW5kaWYKKyAgICB1c2luZyByZXZlcnNlX2l0ZXJh
dG9yICAgICAgID0gX1dURl9WU1REOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKworICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90eXBlIGV4dGVudCA9IGR5bmFtaWNfZXh0ZW50OworCisv
LyBbc3Bhbi5jb25zXSwgc3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBk
ZXN0cnVjdG9yCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNw
YW4oKSBub2V4Y2VwdCA6IF9fZGF0YXtudWxscHRyfSwgX19zaXplezB9IHt9CisKKyAgICBjb25z
dGV4cHIgc3BhbiAgICAgICAgICAgKGNvbnN0IHNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7Cisg
ICAgY29uc3RleHByIHNwYW4mIG9wZXJhdG9yPShjb25zdCBzcGFuJikgbm9leGNlcHQgPSBkZWZh
dWx0OworCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNwYW4o
cG9pbnRlciBfX3B0ciwgc2l6ZV90eXBlIF9fY291bnQpIDogX19kYXRhe19fcHRyfSwgX19zaXpl
e19fY291bnR9IHt9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IHNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9LCBfX3NpemV7c3Rh
dGljX2Nhc3Q8c2l6ZV90PihkaXN0YW5jZShfX2YsIF9fbCkpfSB7fQorCisgICAgdGVtcGxhdGUg
PHNpemVfdCBfU3o+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25z
dGV4cHIgc3BhbihlbGVtZW50X3R5cGUgKCZfX2FycilbX1N6XSkgICAgICAgICAgbm9leGNlcHQg
OiBfX2RhdGF7X19hcnJ9LCBfX3NpemV7X1N6fSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9P
dGhlckVsZW1lbnRUeXBlLCBzaXplX3QgX1N6LAorICAgICAgICAgICAgICBlbmFibGVfaWZfdDxp
c19jb252ZXJ0aWJsZV92PF9PdGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilb
XT4sIG51bGxwdHJfdD4gPSBudWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZCisgICAgY29uc3RleHByIHNwYW4oYXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9Tej4mIF9f
YXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6fSB7fQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlLCBzaXplX3QgX1N6LAorICAgICAg
ICAgICAgICBlbmFibGVfaWZfdDxpc19jb252ZXJ0aWJsZV92PGNvbnN0IF9PdGhlckVsZW1lbnRU
eXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRyPgorICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIHNwYW4oY29uc3Qg
YXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9Tej4mIF9fYXJyKSBub2V4Y2VwdCA6IF9fZGF0YXtf
X2Fyci5kYXRhKCl9LCBfX3NpemV7X1N6fSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db250
YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3Rl
eHByIHNwYW4oICAgICAgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAgZW5hYmxlX2lmX3Q8
X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9Db250YWluZXIsIF9UcD46OnZhbHVlLCBu
dWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBfX2RhdGF7X1dURl9WU1REOjpkYXRhKF9f
Yyl9LCBfX3NpemV7KHNpemVfdHlwZSkgX1dURl9WU1REOjpzaXplKF9fYyl9IHt9CisKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWQorICAgICAgICBjb25zdGV4cHIgc3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAg
ICAgICAgICBlbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8Y29uc3Qg
X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6
IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZT
VEQ6OnNpemUoX19jKX0ge30KKworCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRU
eXBlLCBzaXplX3QgX090aGVyRXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZCisgICAgICAgIGNvbnN0ZXhwciBzcGFuKGNvbnN0IHNwYW48X090aGVyRWxlbWVudFR5cGUs
IF9PdGhlckV4dGVudD4mIF9fb3RoZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9p
Zl90PAorICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZV92PF9PdGhlckVs
ZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHJfdD4gPSBudWxscHRyKSBub2V4Y2VwdAorICAgICAgICA6IF9fZGF0YXtf
X290aGVyLmRhdGEoKX0sIF9fc2l6ZXtfX290aGVyLnNpemUoKX0ge30KKworLy8gICAgfnNwYW4o
KSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Db3VudD4KKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1l
bnRfdHlwZSwgX0NvdW50PiBmaXJzdCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBf
V1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBp
biBzcGFuOjpmaXJzdCgpIik7CisgICAgICAgIHJldHVybiBzcGFuPGVsZW1lbnRfdHlwZSwgX0Nv
dW50PntkYXRhKCksIF9Db3VudH07CisgICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBfQ291
bnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgc3Bh
bjxlbGVtZW50X3R5cGUsIF9Db3VudD4gbGFzdCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAg
ICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX0NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiBy
YW5nZSBpbiBzcGFuOjpsYXN0KCkiKTsKKyAgICAgICAgcmV0dXJuIHNwYW48ZWxlbWVudF90eXBl
LCBfQ291bnQ+e2RhdGEoKSArIHNpemUoKSAtIF9Db3VudCwgX0NvdW50fTsKKyAgICB9CisKKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1l
bnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGZpcnN0KHNpemVfdHlwZSBfX2NvdW50KSBjb25zdCBu
b2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6
ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OmZpcnN0KGNvdW50KSIpOworICAgICAg
ICByZXR1cm4ge2RhdGEoKSwgX19jb3VudH07CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5M
SU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgc3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNf
ZXh0ZW50PiBsYXN0IChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7Cisg
ICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBv
ZiByYW5nZSBpbiBzcGFuOjpsYXN0KGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSAr
IHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9OworICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXpl
X3QgX09mZnNldCwgc2l6ZV90IF9Db3VudCA9IGR5bmFtaWNfZXh0ZW50PgorICAgIF9XVEZfTElC
Q1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBf
Q291bnQ+IHN1YnNwYW4oKSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJD
UFBfQVNTRVJUKF9PZmZzZXQgPD0gc2l6ZSgpLCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBzcGFu
OjpzdWJzcGFuKCkiKTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9Db3VudCA9PSBkeW5h
bWljX2V4dGVudCB8fCBfQ291bnQgPD0gc2l6ZSgpIC0gX09mZnNldCwgIk9mZnNldCArIGNvdW50
IG91dCBvZiByYW5nZSBpbiBzcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAgcmV0dXJuIHNwYW48
ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSArIF9PZmZzZXQsIF9Db3VudCA9PSBkeW5hbWlj
X2V4dGVudCA/IHNpemUoKSAtIF9PZmZzZXQgOiBfQ291bnR9OworICAgIH0KKworICAgIGNvbnN0
ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBzdWJzcGFuKHNpemVfdHlwZSBfX29mZnNldCwgc2l6ZV90
eXBlIF9fY291bnQgPSBkeW5hbWljX2V4dGVudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAg
ICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfX29mZnNldCA8PSBzaXplKCksICJPZmZzZXQgb3V0IG9m
IHJhbmdlIGluIHNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAgICAgICAgX1dURl9M
SUJDUFBfQVNTRVJUKF9fY291bnQgIDw9IHNpemUoKSB8fCBfX2NvdW50ID09IGR5bmFtaWNfZXh0
ZW50LCAiY291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCki
KTsKKyAgICAgICAgaWYgKF9fY291bnQgPT0gZHluYW1pY19leHRlbnQpCisgICAgICAgICAgICBy
ZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBzaXplKCkgLSBfX29mZnNldH07CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSAtIF9fb2Zmc2V0LCAiT2Zmc2V0ICsg
Y291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OnN1YnNwYW4ob2Zmc2V0LCBjb3VudCkiKTsKKyAg
ICAgICAgcmV0dXJuIHtkYXRhKCkgKyBfX29mZnNldCwgX19jb3VudH07CisgICAgfQorCisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplKCkg
ICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19zaXplOyB9CisgICAgX1dURl9MSUJDUFBf
SU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5dGVzKCkgY29uc3Qg
bm9leGNlcHQgeyByZXR1cm4gX19zaXplICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7IH0KKyAgICBf
V1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgYm9vbCBlbXB0eSgpICAgICAg
ICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemUgPT0gMDsgfQorCisgICAgX1dURl9M
SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNp
emVfdHlwZSBfX2lkeCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQ
X0FTU0VSVChfX2lkeCA8IHNpemUoKSwgInNwYW48VD5bXSBpbmRleCBvdXQgb2YgYm91bmRzIik7
CisgICAgICAgIHJldHVybiBfX2RhdGFbX19pZHhdOworICAgIH0KKworICAgIF9XVEZfTElCQ1BQ
X0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgZnJvbnQoKSBjb25zdCBub2V4
Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKCFlbXB0eSgpLCAic3BhbjxU
PltdLmZyb250KCkgb24gZW1wdHkgc3BhbiIpOworICAgICAgICByZXR1cm4gX19kYXRhWzBdOwor
ICAgIH0KKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciByZWZl
cmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJQkNQUF9B
U1NFUlQoIWVtcHR5KCksICJzcGFuPFQ+W10uYmFjaygpIG9uIGVtcHR5IHNwYW4iKTsKKyAgICAg
ICAgcmV0dXJuIF9fZGF0YVtzaXplKCktMV07CisgICAgfQorCisKKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kYXRhOyB9CisKKy8vIFtzcGFuLml0
ZXJdLCBzcGFuIGl0ZXJhdG9yIHN1cHBvcnQKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJ
TElUWSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAgIGJlZ2luKCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAgICAgICAgICAgICBlbmQoKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkgKyBzaXplKCkpOyB9CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3Ig
ICAgICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3Io
ZW5kKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJl
dmVyc2VfaXRlcmF0b3IgICAgICAgICAgcmVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJ
QklMSVRZIHNwYW48Y29uc3QgYnl0ZSwgZHluYW1pY19leHRlbnQ+IF9fYXNfYnl0ZXMoKSBjb25z
dCBub2V4Y2VwdAorICAgIHsgcmV0dXJuIHtyZWludGVycHJldF9jYXN0PGNvbnN0IGJ5dGUgKj4o
ZGF0YSgpKSwgc2l6ZV9ieXRlcygpfTsgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgc3BhbjxieXRlLCBkeW5hbWljX2V4dGVudD4gX19hc193cml0YWJsZV9ieXRlcygpIGNv
bnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4ge3JlaW50ZXJwcmV0X2Nhc3Q8Ynl0ZSAqPihkYXRh
KCkpLCBzaXplX2J5dGVzKCl9OyB9CisKK3ByaXZhdGU6CisgICAgcG9pbnRlciAgIF9fZGF0YTsK
KyAgICBzaXplX3R5cGUgX19zaXplOworfTsKKworI2lmICFkZWZpbmVkKF9XVEZfTElCQ1BQX0hB
U19OT19SQU5HRVMpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzaXplX3QgX0V4dGVudD4KK2lubGlu
ZSBjb25zdGV4cHIgYm9vbCByYW5nZXM6OmVuYWJsZV9ib3Jyb3dlZF9yYW5nZTxzcGFuPF9UcCwg
X0V4dGVudD4gPiA9IHRydWU7CisjZW5kaWYgLy8gIWRlZmluZWQoX1dURl9MSUJDUFBfSEFTX05P
X1JBTkdFUykKKworLy8gIGFzX2J5dGVzICYgYXNfd3JpdGFibGVfYnl0ZXMKK3RlbXBsYXRlIDxj
bGFzcyBfVHAsIHNpemVfdCBfRXh0ZW50PgorX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkK
K2F1dG8gYXNfYnl0ZXMoc3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNlcHQKKy0+IGRlY2x0
eXBlKF9fcy5fX2FzX2J5dGVzKCkpCit7IHJldHVybiAgICBfX3MuX19hc19ieXRlcygpOyB9CisK
K3RlbXBsYXRlIDxjbGFzcyBfVHAsIHNpemVfdCBfRXh0ZW50PgorX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkKK2F1dG8gYXNfd3JpdGFibGVfYnl0ZXMoc3BhbjxfVHAsIF9FeHRlbnQ+IF9f
cykgbm9leGNlcHQKKy0+IGVuYWJsZV9pZl90PCFpc19jb25zdF92PF9UcD4sIGRlY2x0eXBlKF9f
cy5fX2FzX3dyaXRhYmxlX2J5dGVzKCkpPgoreyByZXR1cm4gX19zLl9fYXNfd3JpdGFibGVfYnl0
ZXMoKTsgfQorCisvLyAgRGVkdWN0aW9uIGd1aWRlcwordGVtcGxhdGU8Y2xhc3MgX1RwLCBzaXpl
X3QgX1N6PgorICAgIHNwYW4oX1RwICgmKVtfU3pdKSAtPiBzcGFuPF9UcCwgX1N6PjsKKwordGVt
cGxhdGU8Y2xhc3MgX1RwLCBzaXplX3QgX1N6PgorICAgIHNwYW4oYXJyYXk8X1RwLCBfU3o+Jikg
LT4gc3BhbjxfVHAsIF9Tej47CisKK3RlbXBsYXRlPGNsYXNzIF9UcCwgc2l6ZV90IF9Tej4KKyAg
ICBzcGFuKGNvbnN0IGFycmF5PF9UcCwgX1N6PiYpIC0+IHNwYW48Y29uc3QgX1RwLCBfU3o+Owor
Cit0ZW1wbGF0ZTxjbGFzcyBfQ29udGFpbmVyPgorICAgIHNwYW4oX0NvbnRhaW5lciYpIC0+IHNw
YW48dHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZT47CisKK3RlbXBsYXRlPGNsYXNzIF9D
b250YWluZXI+CisgICAgc3Bhbihjb25zdCBfQ29udGFpbmVyJikgLT4gc3Bhbjxjb25zdCB0eXBl
bmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlPjsKKworX1dURl9MSUJDUFBfRU5EX05BTUVTUEFD
RV9TVEQKKworI2VuZGlmIC8vIF9XVEZfTElCQ1BQX1NQQU4KSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODE3NCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTI3
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBz
dGQ6OnNwYW4gc28gdGhhdCB3ZSBjYW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYXNpYyBzdGQ6
OnNwYW4gdGVzdCB0byBtYWtlIHN1cmUgdGhpbmdzIGNvbXBpbGUgYW5kIHdvcmsuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3BwOiBBZGRlZC4KKwogMjAyMS0wNS0yNyAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbcnVu
LXdlYmtpdC10ZXN0c11bV2luXSBTdHJpcCBQSFAgc3VwcG9ydCBmcm9tIHdlYnNlcnZlcgpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzgxNjQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4
NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvU2NvcGVkTGFtYmRhLmNw
cAogICAgIFRlc3RzL1dURi9TZXRGb3JTY29wZS5jcHAKICAgICBUZXN0cy9XVEYvU3RkTGliRXh0
cmFzLmNwcAorICAgIFRlc3RzL1dURi9TdGRTcGFuLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdC
dWlsZGVyLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdDb25jYXRlbmF0ZS5jcHAKICAgICBUZXN0
cy9XVEYvU3RyaW5nSGFzaGVyLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI3ODE2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05ODIsNiArOTgyLDcgQEAKIAkJ
QkNBQTQ4NTYxNEEwNDQ0QzAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NTUxNEEwMjE2
NDAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgKi87IH07CiAJCUJDQjY4MDQyMTI2RkJGRjEw
MDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjY4MDQxMTI2
RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxl
LmNwcCAqLzsgfTsKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24ucG5nIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQzNzJF
MTI1QUJCRTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKKwkJQkNFRjlBM0QyNjYwMTI1NTAw
OUI5MjFGIC8qIFN0ZFNwYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNFRjlBM0MyNjYwMTI1NTAwOUI5MjFGIC8qIFN0ZFNwYW4uY3BwICovOyB9
OwogCQlDMDFBMjNGMjEyNjYxNTY3MDBDOUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAy
Qjc4ODIxMjY2MTU0MTAwMjZCRjBGIC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sICovOyB9Owog
CQlDMDdFNkNCMjEzRkQ3MzkzMDAzOEIyMkIgLyogZGV2aWNlUGl4ZWxSYXRpby5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwN0U2Q0Ix
MTNGRDczOEEwMDM4QjIyQiAvKiBkZXZpY2VQaXhlbFJhdGlvLmh0bWwgKi87IH07CiAJCUMwQURC
RTk2MTJGQ0E3OUIwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwQURCRTg0MTJGQ0E2QjYwMEQy
QzEyOSAvKiBzaW1wbGUtZm9ybS5odG1sICovOyB9OwpAQCAtMjc1MSw2ICsyNzUyLDcgQEAKIAkJ
QkNCRDM3MkUxMjVBQkJFNjAwRDJDMjlGIC8qIGljb24ucG5nICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gaWNvbi5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAv
KiBGcmFtZU1JTUVUeXBlUE5HLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZyYW1lTUlNRVR5cGVQTkcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0M4Qjk1QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYWlsZWRMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNFRjlBM0MyNjYwMTI1NTAwOUI5MjFGIC8qIFN0ZFNwYW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RkU3Bhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nT3BlcmF0b3JzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzAyQjc3RjExMjY2MTIxNDAwMjZCRjBGIC8qIFNwYWNl
YmFyU2Nyb2xsaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNw
YWNlYmFyU2Nyb2xsaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzAyQjc4
NTMxMjY2MTNBRTAwMjZCRjBGIC8qIENhcmJvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0g
Q2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC00NDczLDYgKzQ0
NzUsNyBAQAogCQkJCTMzQzJDOUMwMjY1MUY1QjkwMEU0MDdGNiAvKiBTbWFsbFNldC5jcHAgKi8s
CiAJCQkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLywK
IAkJCQlGRTJCQ0RDNjI0NzBGQzcwMDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAqLywKKwkJ
CQlCQ0VGOUEzQzI2NjAxMjU1MDA5QjkyMUYgLyogU3RkU3Bhbi5jcHAgKi8sCiAJCQkJODFCNTAx
OTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICovLAogCQkJCTdDRDRDMjZD
MUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0ZS5jcHAgKi8sCiAJCQkJOTNBQkE4
MDgxNkREQUI5MTAwMkRCMkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi8sCkBAIC01MjI5LDYgKzUy
MzIsNyBAQAogCQkJCTMzQzJDOUMxMjY1MUY1QjkwMEU0MDdGNiAvKiBTbWFsbFNldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlN
YXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUyQkNEQzcyNDcwRkRBMzAwREVDMzNCIC8qIFN0
ZExpYkV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0VGOUEzRDI2NjAxMjU1MDA5Qjky
MUYgLyogU3RkU3Bhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzMjFEMEE1OTBDMDBG
RUJDRjMgLyogU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q0QzI2RTFF
MkMwRTZFMDA5Mjk0NzAgLyogU3RyaW5nQ29uY2F0ZW5hdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMzYxRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ0hhc2hlci5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3BwCShu
b25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1N0ZFNwYW4uaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitURVNUKFN0ZFNwYW4sIENvbnN0cnVjdG9yKQoreworICAgIHN0ZDo6c3Bhbjx1
aW50OF90PiBhU3BhbjsKKyAgICBFWFBFQ1RfRVEoYVNwYW4uc2l6ZSgpLCAwdSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429931</attachid>
            <date>2021-05-27 14:37:20 -0700</date>
            <delta_ts>2021-06-06 09:54:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226351-20210527143719.patch</filename>
            <type>text/plain</type>
            <size>35547</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzgxNzQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA1LTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcG9ydHMgYSBjb3B5IG9mIDxzcGFuPiBmcm9tIGU4OTI3
MDVkNzRjNzM2NmExNDA0YTNiMzQ3MTAwMWVkYWE3NjU5Zjggb2YgdGhlCisgICAgICAgIGxpYmMr
KyBwcm9qZWN0IChodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0KSBhbmQg
bW9kaWZpZXMgaXQgdG8gCisgICAgICAgIHdvcmsgb24gdG9wIG9mIGFueSBzdGFuZGFyZCBsaWJy
YXJ5IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TdGRT
cGFuLmg6IEFkZGVkLgorCiAyMDIxLTA1LTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgYE5TTG9jYWxlYCBTUEkgZm9yIGNvbXBhcmluZyBsYW5ndWFn
ZSBpZGVudGlmaWVycyBpbnN0ZWFkIG9mIHN0cmluZyBjb21wYXJpc29uCkluZGV4OiBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODE2NCkKKysrIFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTY4OCw2ICs2ODgsNyBAQAogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJl
c3N1cmVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQURGMkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9y
eUZvb3RwcmludENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lbW9yeUZvb3RwcmludENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkNFRjlBM0EyNjYwMEYwQjAwOUI5MjFGIC8qIFN0ZFNwYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rk
U3Bhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRTFGNjFEMTMwMDBD
OTIyMkMgLyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTGFuZ3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRjFG
NjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGFuZ3VhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCQ0ZDNDEx
RjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMjcwLDYgKzEyNzEsNyBAQAogCQkJCUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBT
dGRMaXN0LmggKi8sCiAJCQkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlBOTNEIC8qIFN0ZE1hcC5oICov
LAogCQkJCTUzRjA4QTFCQTM5RDQ5QThCQUQzNjlBMSAvKiBTdGRTZXQuaCAqLywKKwkJCQlCQ0VG
OUEzQTI2NjAwRjBCMDA5QjkyMUYgLyogU3RkU3Bhbi5oICovLAogCQkJCTc5M0JGQUREOUNFRDQ0
QjhCOUZCQ0ExNiAvKiBTdGRVbm9yZGVyZWRNYXAuaCAqLywKIAkJCQkxMzI3NDM5MjRGQzU0RTQ2
OUY1QThFNkUgLyogU3RkVW5vcmRlcmVkU2V0LmggKi8sCiAJCQkJQzRGOEE5MzYxOUM2NUVCNDAw
QjJCMTVEIC8qIFN0b3B3YXRjaC5oICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDI3ODE2NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0yNTIsNiArMjUyLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN0ZExp
c3QuaAogICAgIFN0ZE1hcC5oCiAgICAgU3RkU2V0LmgKKyAgICBTdGRTcGFuLmgKICAgICBTdGRV
bm9yZGVyZWRNYXAuaAogICAgIFN0ZFVub3JkZXJlZFNldC5oCiAgICAgU3RvcHdhdGNoLmgKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZFNwYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9TdGRTcGFuLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU3RkU3Bhbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTk1IEBACisvLyAtKi0gQysrIC0qLQorLy89PT0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3BhbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6
Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgt
TGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisv
Lz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgX1dURl9MSUJDUFBfU1BBTgorI2RlZmlu
ZSBfV1RGX0xJQkNQUF9TUEFOCisKKy8vIEltcG9ydHMgYSBjb3B5IG9mIDxzcGFuPiBmcm9tIGU4
OTI3MDVkNzRjNzM2NmExNDA0YTNiMzQ3MTAwMWVkYWE3NjU5Zjggb2YgdGhlCisvLyBsaWJjKysg
cHJvamVjdCAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0LmdpdCkgYW5kIG1v
ZGlmaWVzIGl0IHRvIAorLy8gd29yayBvbiB0b3Agb2YgYW55IHN0YW5kYXJkIGxpYnJhcnkgaW1w
bGVtZW50YXRpb24uCisvLworLy8gLSBSZW5hbWVzIG1hY3JvcyB3aXRoIF9MSUJDUFBfIHByZWZp
eCB0byB1c2UgdGhlIHByZWZpeCBfV1RGX0xJQkNQUF8KKy8vIC0gQWRkcyBtYWNybyBkZWZpbnRp
b25zIGZvciBuZXcgX1dURl9MSUJDUFBfIG1hY3Jvcy4KKy8vIC0gU3RvcCAjaW5jbHVkaW5nIGlu
dGVybmFsIGxpYmMrKyBoZWFkZXJzLgorLy8gLSBSZW1vdmUgY2hlY2sgZm9yID4gYysrMTcuCisv
LyAtIFJlbW92ZSBwdXNoL3BvcCBhdmFpbGFiaWxpdHkgb2YgbWluL21heCBtYWNyb3MuCisKKyNp
bmNsdWRlIDx2ZXJzaW9uPgorCisjaWYgZGVmaW5lZChfX2NwcF9saWJfc3BhbikKKworI2luY2x1
ZGUgPHNwYW4+CisKKyNlbHNlCisKKworLyoKKyAgICBzcGFuIHN5bm9wc2lzCisKK25hbWVzcGFj
ZSBzdGQgeworCisvLyBjb25zdGFudHMKK2lubGluZSBjb25zdGV4cHIgc2l6ZV90IGR5bmFtaWNf
ZXh0ZW50ID0gbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CisKKy8vIFt2aWV3cy5zcGFu
XSwgY2xhc3MgdGVtcGxhdGUgc3BhbgordGVtcGxhdGUgPGNsYXNzIEVsZW1lbnRUeXBlLCBzaXpl
X3QgRXh0ZW50ID0gZHluYW1pY19leHRlbnQ+CisgICAgY2xhc3Mgc3BhbjsKKwordGVtcGxhdGU8
Y2xhc3MgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRlbnQ+CisgICAgaW5saW5lIGNvbnN0ZXhwciBi
b29sIHJhbmdlczo6ZW5hYmxlX2JvcnJvd2VkX3JhbmdlPHNwYW48RWxlbWVudFR5cGUsIEV4dGVu
dD4+ID0gdHJ1ZTsKKworLy8gW3NwYW4ub2JqZWN0cmVwXSwgdmlld3Mgb2Ygb2JqZWN0IHJlcHJl
c2VudGF0aW9uCit0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRlbnQ+Cisg
ICAgc3Bhbjxjb25zdCBieXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4dGVudCkgPyBkeW5hbWlj
X2V4dGVudCA6CisgICAgICAgIChzaXplb2YoRWxlbWVudFR5cGUpICogRXh0ZW50KSk+IGFzX2J5
dGVzKHNwYW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQ7CisKK3RlbXBsYXRlIDxj
bGFzcyBFbGVtZW50VHlwZSwgc2l6ZV90IEV4dGVudD4KKyAgICBzcGFuPCAgICAgIGJ5dGUsICgo
RXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50KSA/IGR5bmFtaWNfZXh0ZW50IDoKKyAgICAgICAgKHNp
emVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpKT4gYXNfd3JpdGFibGVfYnl0ZXMoc3BhbjxFbGVt
ZW50VHlwZSwgRXh0ZW50PiBzKSBub2V4Y2VwdDsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgRWxlbWVu
dFR5cGUsIHNpemVfdCBFeHRlbnQgPSBkeW5hbWljX2V4dGVudD4KK2NsYXNzIHNwYW4geworcHVi
bGljOgorICAgIC8vIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAgICB1c2luZyBlbGVtZW50X3R5cGUg
PSBFbGVtZW50VHlwZTsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gcmVtb3ZlX2N2X3Q8RWxlbWVu
dFR5cGU+OworICAgIHVzaW5nIHNpemVfdHlwZSA9IHNpemVfdDsKKyAgICB1c2luZyBkaWZmZXJl
bmNlX3R5cGUgPSBwdHJkaWZmX3Q7CisgICAgdXNpbmcgcG9pbnRlciA9IGVsZW1lbnRfdHlwZSo7
CisgICAgdXNpbmcgY29uc3RfcG9pbnRlciA9IGNvbnN0IGVsZW1lbnRfdHlwZSo7CisgICAgdXNp
bmcgcmVmZXJlbmNlID0gZWxlbWVudF90eXBlJjsKKyAgICB1c2luZyBjb25zdF9yZWZlcmVuY2Ug
PSBjb25zdCBlbGVtZW50X3R5cGUmOworICAgIHVzaW5nIGl0ZXJhdG9yID0gaW1wbGVtZW50YXRp
b24tZGVmaW5lZDsKKyAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0
ZXJhdG9yPGl0ZXJhdG9yPjsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBleHRlbnQg
PSBFeHRlbnQ7CisKKyAgICAvLyBbc3Bhbi5jb25zXSwgc3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHks
IGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisgICAgY29uc3RleHByIHNwYW4oKSBub2V4Y2Vw
dDsKKyAgICBjb25zdGV4cHIgZXhwbGljaXQoRXh0ZW50ICE9IGR5bmFtaWNfZXh0ZW50KSBzcGFu
KHBvaW50ZXIgcHRyLCBzaXplX3R5cGUgY291bnQpOworICAgIGNvbnN0ZXhwciBleHBsaWNpdChF
eHRlbnQgIT0gZHluYW1pY19leHRlbnQpIHNwYW4ocG9pbnRlciBmaXJzdEVsZW0sIHBvaW50ZXIg
bGFzdEVsZW0pOworICAgIHRlbXBsYXRlIDxzaXplX3QgTj4KKyAgICAgICAgY29uc3RleHByIHNw
YW4oZWxlbWVudF90eXBlICgmYXJyKVtOXSkgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPHNpemVf
dCBOPgorICAgICAgICBjb25zdGV4cHIgc3BhbihhcnJheTx2YWx1ZV90eXBlLCBOPiYgYXJyKSBu
b2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IE4+CisgICAgICAgIGNvbnN0ZXhwciBzcGFu
KGNvbnN0IGFycmF5PHZhbHVlX3R5cGUsIE4+JiBhcnIpIG5vZXhjZXB0OworICAgIHRlbXBsYXRl
IDxjbGFzcyBDb250YWluZXI+CisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdChFeHRlbnQgIT0g
ZHluYW1pY19leHRlbnQpIHNwYW4oQ29udGFpbmVyJiBjb250KTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgQ29udGFpbmVyPgorICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQoRXh0ZW50ICE9IGR5bmFt
aWNfZXh0ZW50KSBzcGFuKGNvbnN0IENvbnRhaW5lciYgY29udCk7CisgICAgY29uc3RleHByIHNw
YW4oY29uc3Qgc3BhbiYgb3RoZXIpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgT3RoZXJFbGVtZW50VHlwZSwgc2l6ZV90IE90aGVyRXh0ZW50PgorICAgICAgICBjb25z
dGV4cHIgZXhwbGljaXQoRXh0ZW50ICE9IGR5bmFtaWNfZXh0ZW50KSBzcGFuKGNvbnN0IHNwYW48
T3RoZXJFbGVtZW50VHlwZSwgT3RoZXJFeHRlbnQ+JiBzKSBub2V4Y2VwdDsKKyAgICB+c3Bhbigp
IG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgc3BhbiYgb3BlcmF0b3I9KGNvbnN0
IHNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisKKyAgICAvLyBbc3Bhbi5zdWJdLCBz
cGFuIHN1YnZpZXdzCisgICAgdGVtcGxhdGUgPHNpemVfdCBDb3VudD4KKyAgICAgICAgY29uc3Rl
eHByIHNwYW48ZWxlbWVudF90eXBlLCBDb3VudD4gZmlyc3QoKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZSA8c2l6ZV90IENvdW50PgorICAgICAgICBjb25zdGV4cHIgc3BhbjxlbGVtZW50X3R5cGUsIENv
dW50PiBsYXN0KCkgY29uc3Q7CisgICAgdGVtcGxhdGUgPHNpemVfdCBPZmZzZXQsIHNpemVfdCBD
b3VudCA9IGR5bmFtaWNfZXh0ZW50PgorICAgICAgICBjb25zdGV4cHIgc3BhbjxlbGVtZW50X3R5
cGUsIHNlZSBiZWxvdz4gc3Vic3BhbigpIGNvbnN0OworCisgICAgY29uc3RleHByIHNwYW48ZWxl
bWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gZmlyc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdDsK
KyAgICBjb25zdGV4cHIgc3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBsYXN0KHNp
emVfdHlwZSBjb3VudCkgY29uc3Q7CisgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBk
eW5hbWljX2V4dGVudD4gc3Vic3BhbihzaXplX3R5cGUgb2Zmc2V0LCBzaXplX3R5cGUgY291bnQg
PSBkeW5hbWljX2V4dGVudCkgY29uc3Q7CisKKyAgICAvLyBbc3Bhbi5vYnNdLCBzcGFuIG9ic2Vy
dmVycworICAgIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0OworICAg
IGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0OworICAgIGNv
bnN0ZXhwciBib29sIGVtcHR5KCkgY29uc3Qgbm9leGNlcHQ7CisKKyAgICAvLyBbc3Bhbi5lbGVt
XSwgc3BhbiBlbGVtZW50IGFjY2VzcworICAgIGNvbnN0ZXhwciByZWZlcmVuY2Ugb3BlcmF0b3Jb
XShzaXplX3R5cGUgaWR4KSBjb25zdDsKKyAgICBjb25zdGV4cHIgcmVmZXJlbmNlIGZyb250KCkg
Y29uc3Q7CisgICAgY29uc3RleHByIHJlZmVyZW5jZSBiYWNrKCkgY29uc3Q7CisgICAgY29uc3Rl
eHByIHBvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0OworCisgICAgLy8gW3NwYW4uaXRlcmF0
b3JzXSwgc3BhbiBpdGVyYXRvciBzdXBwb3J0CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2lu
KCkgY29uc3Qgbm9leGNlcHQ7CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IG5v
ZXhjZXB0OworICAgIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5v
ZXhjZXB0OworICAgIGNvbnN0ZXhwciByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCBub2V4
Y2VwdDsKKworcHJpdmF0ZToKKyAgICBwb2ludGVyIGRhdGFfOyAgICAvLyBleHBvc2l0aW9uIG9u
bHkKKyAgICBzaXplX3R5cGUgc2l6ZV87ICAvLyBleHBvc2l0aW9uIG9ubHkKK307CisKK3RlbXBs
YXRlPGNsYXNzIFQsIHNpemVfdCBOPgorICAgIHNwYW4oVCAoJilbTl0pIC0+IHNwYW48VCwgTj47
CisKK3RlbXBsYXRlPGNsYXNzIFQsIHNpemVfdCBOPgorICAgIHNwYW4oYXJyYXk8VCwgTj4mKSAt
PiBzcGFuPFQsIE4+OworCit0ZW1wbGF0ZTxjbGFzcyBULCBzaXplX3QgTj4KKyAgICBzcGFuKGNv
bnN0IGFycmF5PFQsIE4+JikgLT4gc3Bhbjxjb25zdCBULCBOPjsKKwordGVtcGxhdGU8Y2xhc3Mg
Q29udGFpbmVyPgorICAgIHNwYW4oQ29udGFpbmVyJikgLT4gc3Bhbjx0eXBlbmFtZSBDb250YWlu
ZXI6OnZhbHVlX3R5cGU+OworCit0ZW1wbGF0ZTxjbGFzcyBDb250YWluZXI+CisgICAgc3Bhbihj
b25zdCBDb250YWluZXImKSAtPiBzcGFuPGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVf
dHlwZT47CisKK30gLy8gbmFtZXNwYWNlIHN0ZAorCisqLworCisjaW5jbHVkZSA8YXJyYXk+ICAg
ICAgICAvLyBmb3IgYXJyYXkKKyNpbmNsdWRlIDxjc3RkZGVmPiAgICAgIC8vIGZvciBieXRlCisj
aW5jbHVkZSA8aXRlcmF0b3I+ICAgICAvLyBmb3IgaXRlcmF0b3JzCisjaW5jbHVkZSA8dHlwZV90
cmFpdHM+ICAvLyBmb3IgcmVtb3ZlX2N2LCBldGMKKworLy8gQWRkcyBzb21lIG1hY3JvIGRlZmlu
ZXMgdXN1YWxseSBkZWZpbmVkIGluIF9fY29uZmlnLgorCisjZGVmaW5lIF9XVEZfTElCQ1BQX0FC
SV9TUEFOX1BPSU5URVJfSVRFUkFUT1JTCisjZGVmaW5lIF9XVEZfTElCQ1BQX0JFR0lOX05BTUVT
UEFDRV9TVEQgbmFtZXNwYWNlIHN0ZCB7CisjZGVmaW5lIF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVM
IDAKKyNkZWZpbmUgX1dURl9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQgIH0KKyNkZWZpbmUgX1dU
Rl9MSUJDUFBfSEFTX05PX1BSQUdNQV9TWVNURU1fSEVBREVSIDEKKyNkZWZpbmUgX1dURl9MSUJD
UFBfSEFTX05PX1JBTkdFUworI2RlZmluZSBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQor
I2RlZmluZSBfV1RGX0xJQkNQUF9URU1QTEFURV9WSVMKKyNkZWZpbmUgX1dURl9WU1REIHN0ZAor
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNkZWZpbmUgX1dURl9MSUJDUFBfQVNTRVJU
IEFTU0VSVAorCisjaWYgIWRlZmluZWQoX1dURl9MSUJDUFBfSEFTX05PX1BSQUdNQV9TWVNURU1f
SEVBREVSKQorI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgorI2VuZGlmCisKK19XVEZfTElCQ1BQ
X0JFR0lOX05BTUVTUEFDRV9TVEQKKworaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgZHluYW1pY19l
eHRlbnQgPSBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBfVHAsIHNpemVfdCBfRXh0ZW50ID0gZHluYW1pY19leHRlbnQ+IGNsYXNzIHNwYW47CisKKwor
dGVtcGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCBfX2lzX3NwYW5faW1wbCA6IHB1YmxpYyBmYWxz
ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzaXplX3QgX0V4dGVudD4KK3N0cnVj
dCBfX2lzX3NwYW5faW1wbDxzcGFuPF9UcCwgX0V4dGVudD4+IDogcHVibGljIHRydWVfdHlwZSB7
fTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCBfX2lzX3NwYW4gOiBwdWJsaWMgX19p
c19zcGFuX2ltcGw8cmVtb3ZlX2N2X3Q8X1RwPj4ge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+
CitzdHJ1Y3QgX19pc19zdGRfYXJyYXlfaW1wbCA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OworCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzaXplX3QgX1N6Pgorc3RydWN0IF9faXNfc3RkX2FycmF5X2lt
cGw8YXJyYXk8X1RwLCBfU3o+PiA6IHB1YmxpYyB0cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDxj
bGFzcyBfVHA+CitzdHJ1Y3QgX19pc19zdGRfYXJyYXkgOiBwdWJsaWMgX19pc19zdGRfYXJyYXlf
aW1wbDxyZW1vdmVfY3ZfdDxfVHA+PiB7fTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0VsZW1lbnRUeXBlLCBjbGFzcyA9IHZvaWQ+CitzdHJ1Y3QgX19pc19zcGFuX2NvbXBhdGlibGVf
Y29udGFpbmVyIDogcHVibGljIGZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAs
IGNsYXNzIF9FbGVtZW50VHlwZT4KK3N0cnVjdCBfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWlu
ZXI8X1RwLCBfRWxlbWVudFR5cGUsCisgICAgICAgIHZvaWRfdDwKKyAgICAgICAgLy8gaXMgbm90
IGEgc3BlY2lhbGl6YXRpb24gb2Ygc3BhbgorICAgICAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lm
PCFfX2lzX3NwYW48X1RwPjo6dmFsdWUsIG51bGxwdHJfdD46OnR5cGUsCisgICAgICAgIC8vIGlz
IG5vdCBhIHNwZWNpYWxpemF0aW9uIG9mIGFycmF5CisgICAgICAgICAgICB0eXBlbmFtZSBlbmFi
bGVfaWY8IV9faXNfc3RkX2FycmF5PF9UcD46OnZhbHVlLCBudWxscHRyX3Q+Ojp0eXBlLAorICAg
ICAgICAvLyBpc19hcnJheV92PENvbnRhaW5lcj4gaXMgZmFsc2UsCisgICAgICAgICAgICB0eXBl
bmFtZSBlbmFibGVfaWY8IWlzX2FycmF5X3Y8X1RwPiwgbnVsbHB0cl90Pjo6dHlwZSwKKyAgICAg
ICAgLy8gZGF0YShjb250KSBhbmQgc2l6ZShjb250KSBhcmUgd2VsbCBmb3JtZWQKKyAgICAgICAg
ICAgIGRlY2x0eXBlKGRhdGEoZGVjbHZhbDxfVHA+KCkpKSwKKyAgICAgICAgICAgIGRlY2x0eXBl
KHNpemUoZGVjbHZhbDxfVHA+KCkpKSwKKyAgICAgICAgLy8gcmVtb3ZlX3BvaW50ZXJfdDxkZWNs
dHlwZShkYXRhKGNvbnQpKT4oKilbXSBpcyBjb252ZXJ0aWJsZSB0byBFbGVtZW50VHlwZSgqKVtd
CisgICAgICAgICAgICB0eXBlbmFtZSBlbmFibGVfaWY8CisgICAgICAgICAgICAgICAgaXNfY29u
dmVydGlibGVfdjxyZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRhdGEoZGVjbHZhbDxfVHAgJj4o
KSkpPigqKVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0VsZW1lbnRUeXBl
KCopW10+LAorICAgICAgICAgICAgICAgIG51bGxwdHJfdD46OnR5cGUKKyAgICAgICAgPj4KKyAg
ICA6IHB1YmxpYyB0cnVlX3R5cGUge307CisKKwordGVtcGxhdGUgPHR5cGVuYW1lIF9UcCwgc2l6
ZV90IF9FeHRlbnQ+CitjbGFzcyBfV1RGX0xJQkNQUF9URU1QTEFURV9WSVMgc3BhbiB7CitwdWJs
aWM6CisvLyAgY29uc3RhbnRzIGFuZCB0eXBlcworICAgIHVzaW5nIGVsZW1lbnRfdHlwZSAgICAg
ICAgICAgPSBfVHA7CisgICAgdXNpbmcgdmFsdWVfdHlwZSAgICAgICAgICAgICA9IHJlbW92ZV9j
dl90PF9UcD47CisgICAgdXNpbmcgc2l6ZV90eXBlICAgICAgICAgICAgICA9IHNpemVfdDsKKyAg
ICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgICAgICAgID0gcHRyZGlmZl90OworICAgIHVzaW5nIHBv
aW50ZXIgICAgICAgICAgICAgICAgPSBfVHAgKjsKKyAgICB1c2luZyBjb25zdF9wb2ludGVyICAg
ICAgICAgID0gY29uc3QgX1RwICo7CisgICAgdXNpbmcgcmVmZXJlbmNlICAgICAgICAgICAgICA9
IF9UcCAmOworICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSAgICAgICAgPSBjb25zdCBfVHAgJjsK
KyNpZiAoX1dURl9MSUJDUFBfREVCVUdfTEVWRUwgPT0gMikgfHwgZGVmaW5lZChfV1RGX0xJQkNQ
UF9BQklfU1BBTl9QT0lOVEVSX0lURVJBVE9SUykKKyAgICB1c2luZyBpdGVyYXRvciAgICAgICAg
ICAgICAgID0gcG9pbnRlcjsKKyNlbHNlCisgICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAg
ICA9IF9fd3JhcF9pdGVyPHBvaW50ZXI+OworI2VuZGlmCisgICAgdXNpbmcgcmV2ZXJzZV9pdGVy
YXRvciAgICAgICA9IF9XVEZfVlNURDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdHlwZSBleHRlbnQgPSBfRXh0ZW50OworCisvLyBbc3Bh
bi5jb25zXSwgc3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVj
dG9yCisgICAgdGVtcGxhdGUgPHNpemVfdCBfU3ogPSBfRXh0ZW50LCBlbmFibGVfaWZfdDxfU3og
PT0gMCwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgY29uc3RleHByIHNwYW4oKSBub2V4Y2VwdCA6IF9fZGF0YXtudWxscHRyfSB7fQorCisg
ICAgY29uc3RleHByIHNwYW4gICAgICAgICAgIChjb25zdCBzcGFuJikgbm9leGNlcHQgPSBkZWZh
dWx0OworICAgIGNvbnN0ZXhwciBzcGFuJiBvcGVyYXRvcj0oY29uc3Qgc3BhbiYpIG5vZXhjZXB0
ID0gZGVmYXVsdDsKKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhw
ciBleHBsaWNpdCBzcGFuKHBvaW50ZXIgX19wdHIsIHNpemVfdHlwZSBfX2NvdW50KSA6IF9fZGF0
YXtfX3B0cn0KKyAgICAgICAgeyAodm9pZClfX2NvdW50OyBfV1RGX0xJQkNQUF9BU1NFUlQoX0V4
dGVudCA9PSBfX2NvdW50LCAic2l6ZSBtaXNtYXRjaCBpbiBzcGFuJ3MgY29uc3RydWN0b3IgKHB0
ciwgbGVuKSIpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IGV4cGxpY2l0IHNwYW4ocG9pbnRlciBfX2YsIHBvaW50ZXIgX19sKSA6IF9fZGF0YXtfX2Z9Cisg
ICAgICAgIHsgKHZvaWQpX19sOyAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRlbnQgPT0gZGlz
dGFuY2UoX19mLCBfX2wpLCAic2l6ZSBtaXNtYXRjaCBpbiBzcGFuJ3MgY29uc3RydWN0b3IgKHB0
ciwgcHRyKSIpOyB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgc3BhbihlbGVtZW50X3R5cGUgKCZfX2FycilbX0V4dGVudF0pICAgICAgICAgIG5vZXhjZXB0
IDogX19kYXRhe19fYXJyfSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRU
eXBlLAorICAgICAgICAgICAgICBlbmFibGVfaWZfdDxpc19jb252ZXJ0aWJsZV92PF9PdGhlckVs
ZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4gPSBudWxscHRy
PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHByIHNwYW4o
YXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX2Fycikgbm9leGNlcHQgOiBfX2Rh
dGF7X19hcnIuZGF0YSgpfSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRU
eXBlLAorICAgICAgICAgICAgICBlbmFibGVfaWZfdDxpc19jb252ZXJ0aWJsZV92PGNvbnN0IF9P
dGhlckVsZW1lbnRUeXBlKCopW10sIGVsZW1lbnRfdHlwZSAoKilbXT4sIG51bGxwdHJfdD4gPSBu
dWxscHRyPgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3RleHBy
IHNwYW4oY29uc3QgYXJyYXk8X090aGVyRWxlbWVudFR5cGUsIF9FeHRlbnQ+JiBfX2Fycikgbm9l
eGNlcHQgOiBfX2RhdGF7X19hcnIuZGF0YSgpfSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9D
b250YWluZXI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29u
c3RleHByIGV4cGxpY2l0IHNwYW4oICAgICAgX0NvbnRhaW5lciYgX19jLAorICAgICAgICAgICAg
ZW5hYmxlX2lmX3Q8X19pc19zcGFuX2NvbXBhdGlibGVfY29udGFpbmVyPF9Db250YWluZXIsIF9U
cD46OnZhbHVlLCBudWxscHRyX3Q+ID0gbnVsbHB0cikKKyAgICAgICAgOiBfX2RhdGF7X1dURl9W
U1REOjpkYXRhKF9fYyl9IHsKKyAgICAgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfRXh0ZW50
ID09IF9XVEZfVlNURDo6c2l6ZShfX2MpLCAic2l6ZSBtaXNtYXRjaCBpbiBzcGFuJ3MgY29uc3Ry
dWN0b3IgKHJhbmdlKSIpOworICAgICAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRh
aW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBjb25zdGV4
cHIgZXhwbGljaXQgc3Bhbihjb25zdCBfQ29udGFpbmVyJiBfX2MsCisgICAgICAgICAgICBlbmFi
bGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8Y29uc3QgX0NvbnRhaW5lciwg
X1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6IF9fZGF0YXtfV1RG
X1ZTVEQ6OmRhdGEoX19jKX0geworICAgICAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9FeHRl
bnQgPT0gX1dURl9WU1REOjpzaXplKF9fYyksICJzaXplIG1pc21hdGNoIGluIHNwYW4ncyBjb25z
dHJ1Y3RvciAocmFuZ2UpIik7CisgICAgICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfT3Ro
ZXJFbGVtZW50VHlwZT4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAg
ICBjb25zdGV4cHIgc3Bhbihjb25zdCBzcGFuPF9PdGhlckVsZW1lbnRUeXBlLCBfRXh0ZW50PiYg
X19vdGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX2lmX3Q8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwg
ZWxlbWVudF90eXBlICgqKVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90
PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSB7fQorCisgICAg
dGVtcGxhdGUgPGNsYXNzIF9PdGhlckVsZW1lbnRUeXBlPgorICAgIF9XVEZfTElCQ1BQX0lOTElO
RV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBleHBsaWNpdCBzcGFuKGNvbnN0IHNwYW48
X090aGVyRWxlbWVudFR5cGUsIGR5bmFtaWNfZXh0ZW50PiYgX19vdGhlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2Nv
bnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIpIG5vZXhjZXB0
CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSB7IF9XVEZfTElCQ1BQX0FTU0VSVChf
RXh0ZW50ID09IF9fb3RoZXIuc2l6ZSgpLCAic2l6ZSBtaXNtYXRjaCBpbiBzcGFuJ3MgY29uc3Ry
dWN0b3IgKG90aGVyIHNwYW4pIik7IH0KKworCisvLyAgfnNwYW4oKSBub2V4Y2VwdCA9IGRlZmF1
bHQ7CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBm
aXJzdCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KF9Db3Vu
dCA8PSBfRXh0ZW50LCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OmZpcnN0KCkiKTsKKyAg
ICAgICAgcmV0dXJuIHNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSwgX0NvdW50fTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50
PiBsYXN0KCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX0Nv
dW50IDw9IF9FeHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6bGFzdCgpIik7Cisg
ICAgICAgIHJldHVybiBzcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PntkYXRhKCkgKyBzaXplKCkg
LSBfQ291bnQsIF9Db3VudH07CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkKKyAgICBjb25zdGV4cHIgc3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PiBm
aXJzdChzaXplX3R5cGUgX19jb3VudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9X
VEZfTElCQ1BQX0FTU0VSVChfX2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBp
biBzcGFuOjpmaXJzdChjb3VudCkiKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCksIF9fY291bnR9
OworICAgIH0KKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3Rl
eHByIHNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gbGFzdChzaXplX3R5cGUgX19j
b3VudCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChf
X2NvdW50IDw9IHNpemUoKSwgIkNvdW50IG91dCBvZiByYW5nZSBpbiBzcGFuOjpsYXN0KGNvdW50
KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIHNpemUoKSAtIF9fY291bnQsIF9fY291bnR9
OworICAgIH0KKworICAgIHRlbXBsYXRlIDxzaXplX3QgX09mZnNldCwgc2l6ZV90IF9Db3VudCA9
IGR5bmFtaWNfZXh0ZW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAg
Y29uc3RleHByIGF1dG8gc3Vic3BhbigpIGNvbnN0IG5vZXhjZXB0CisgICAgICAgIC0+IHNwYW48
ZWxlbWVudF90eXBlLCBfQ291bnQgIT0gZHluYW1pY19leHRlbnQgPyBfQ291bnQgOiBfRXh0ZW50
IC0gX09mZnNldD4KKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoX09mZnNldCA8PSBfRXh0
ZW50LCAiT2Zmc2V0IG91dCBvZiByYW5nZSBpbiBzcGFuOjpzdWJzcGFuKCkiKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChfQ291bnQgPT0gZHluYW1pY19leHRlbnQgfHwgX0NvdW50IDw9IF9FeHRl
bnQgLSBfT2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OnN1YnNw
YW4oKSIpOworCisgICAgICAgIHVzaW5nIF9SZXR1cm5UeXBlID0gc3BhbjxlbGVtZW50X3R5cGUs
IF9Db3VudCAhPSBkeW5hbWljX2V4dGVudCA/IF9Db3VudCA6IF9FeHRlbnQgLSBfT2Zmc2V0PjsK
KyAgICAgICAgcmV0dXJuIF9SZXR1cm5UeXBle2RhdGEoKSArIF9PZmZzZXQsIF9Db3VudCA9PSBk
eW5hbWljX2V4dGVudCA/IHNpemUoKSAtIF9PZmZzZXQgOiBfQ291bnR9OworICAgIH0KKworCisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgc3BhbjxlbGVt
ZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgorICAgICAgIHN1YnNwYW4oc2l6ZV90eXBlIF9fb2Zm
c2V0LCBzaXplX3R5cGUgX19jb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdCBub2V4Y2VwdAor
ICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fb2Zmc2V0IDw9IHNpemUoKSwgIk9m
ZnNldCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAg
ICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCAgPD0gc2l6ZSgpIHx8IF9fY291bnQgPT0g
ZHluYW1pY19leHRlbnQsICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6c3Vic3BhbihvZmZz
ZXQsIGNvdW50KSIpOworICAgICAgICBpZiAoX19jb3VudCA9PSBkeW5hbWljX2V4dGVudCkKKyAg
ICAgICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIHNpemUoKSAtIF9fb2Zmc2V0fTsK
KyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6ZSgpIC0gX19vZmZzZXQs
ICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6c3Vic3BhbihvZmZzZXQsIGNv
dW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0LCBfX2NvdW50fTsKKyAg
ICB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6ZV90
eXBlIHNpemUoKSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfRXh0ZW50OyB9CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHNpemVfdHlwZSBzaXplX2J5
dGVzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCAqIHNpemVvZihlbGVtZW50X3R5
cGUpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGJvb2wg
ZW1wdHkoKSAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX0V4dGVudCA9PSAwOyB9
CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNl
IG9wZXJhdG9yW10oc2l6ZV90eXBlIF9faWR4KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAg
ICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgpLCAic3BhbjxULE4+W10gaW5kZXgg
b3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gX19kYXRhW19faWR4XTsKKyAgICB9CisK
KyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmVmZXJlbmNlIGZy
b250KCkgY29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCgh
ZW1wdHkoKSwgInNwYW48VCwgTj46OmZyb250KCkgb24gZW1wdHkgc3BhbiIpOworICAgICAgICBy
ZXR1cm4gX19kYXRhWzBdOworICAgIH0KKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklM
SVRZIGNvbnN0ZXhwciByZWZlcmVuY2UgYmFjaygpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAg
ICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJzcGFuPFQsIE4+OjpiYWNrKCkgb24g
ZW1wdHkgc3BhbiIpOworICAgICAgICByZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKKyAgICB9CisK
KyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgcG9pbnRlciBkYXRh
KCkgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kYXRh
OyB9CisKKy8vIFtzcGFuLml0ZXJdLCBzcGFuIGl0ZXJhdG9yIHN1cHBvcnQKKyAgICBfV1RGX0xJ
QkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgaXRlcmF0b3IgICAgICAgICAgICAgICAg
IGJlZ2luKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gaXRlcmF0b3IoZGF0YSgpKTsgfQorICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAg
ICAgICAgICAgICBlbmQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkg
KyBzaXplKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHBy
IHJldmVyc2VfaXRlcmF0b3IgICAgICAgIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJu
IHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lC
SUxJVFkgY29uc3RleHByIHJldmVyc2VfaXRlcmF0b3IgICAgICAgICAgcmVuZCgpIGNvbnN0IG5v
ZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKworICAgIF9XVEZf
TElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHNwYW48Y29uc3QgYnl0ZSwgX0V4dGVudCAqIHNpemVv
ZihlbGVtZW50X3R5cGUpPiBfX2FzX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQKKyAgICB7IHJldHVy
biBzcGFuPGNvbnN0IGJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT57cmVpbnRl
cnByZXRfY2FzdDxjb25zdCBieXRlICo+KGRhdGEoKSksIHNpemVfYnl0ZXMoKX07IH0KKworICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHNwYW48Ynl0ZSwgX0V4dGVudCAqIHNpemVv
ZihlbGVtZW50X3R5cGUpPiBfX2FzX3dyaXRhYmxlX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQKKyAg
ICB7IHJldHVybiBzcGFuPGJ5dGUsIF9FeHRlbnQgKiBzaXplb2YoZWxlbWVudF90eXBlKT57cmVp
bnRlcnByZXRfY2FzdDxieXRlICo+KGRhdGEoKSksIHNpemVfYnl0ZXMoKX07IH0KKworcHJpdmF0
ZToKKyAgICBwb2ludGVyICAgIF9fZGF0YTsKKworfTsKKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
X1RwPgorY2xhc3MgX1dURl9MSUJDUFBfVEVNUExBVEVfVklTIHNwYW48X1RwLCBkeW5hbWljX2V4
dGVudD4geworcHJpdmF0ZToKKworcHVibGljOgorLy8gIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAg
ICB1c2luZyBlbGVtZW50X3R5cGUgICAgICAgICAgID0gX1RwOworICAgIHVzaW5nIHZhbHVlX3R5
cGUgICAgICAgICAgICAgPSByZW1vdmVfY3ZfdDxfVHA+OworICAgIHVzaW5nIHNpemVfdHlwZSAg
ICAgICAgICAgICAgPSBzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlICAgICAgICA9
IHB0cmRpZmZfdDsKKyAgICB1c2luZyBwb2ludGVyICAgICAgICAgICAgICAgID0gX1RwICo7Cisg
ICAgdXNpbmcgY29uc3RfcG9pbnRlciAgICAgICAgICA9IGNvbnN0IF9UcCAqOworICAgIHVzaW5n
IHJlZmVyZW5jZSAgICAgICAgICAgICAgPSBfVHAgJjsKKyAgICB1c2luZyBjb25zdF9yZWZlcmVu
Y2UgICAgICAgID0gY29uc3QgX1RwICY7CisjaWYgKF9XVEZfTElCQ1BQX0RFQlVHX0xFVkVMID09
IDIpIHx8IGRlZmluZWQoX1dURl9MSUJDUFBfQUJJX1NQQU5fUE9JTlRFUl9JVEVSQVRPUlMpCisg
ICAgdXNpbmcgaXRlcmF0b3IgICAgICAgICAgICAgICA9IHBvaW50ZXI7CisjZWxzZQorICAgIHVz
aW5nIGl0ZXJhdG9yICAgICAgICAgICAgICAgPSBfX3dyYXBfaXRlcjxwb2ludGVyPjsKKyNlbmRp
ZgorICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgICAgICAgPSBfV1RGX1ZTVEQ6OnJldmVyc2Vf
aXRlcmF0b3I8aXRlcmF0b3I+OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3R5cGUgZXh0
ZW50ID0gZHluYW1pY19leHRlbnQ7CisKKy8vIFtzcGFuLmNvbnNdLCBzcGFuIGNvbnN0cnVjdG9y
cywgY29weSwgYXNzaWdubWVudCwgYW5kIGRlc3RydWN0b3IKKyAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWSBjb25zdGV4cHIgc3BhbigpIG5vZXhjZXB0IDogX19kYXRhe251bGxwdHJ9
LCBfX3NpemV7MH0ge30KKworICAgIGNvbnN0ZXhwciBzcGFuICAgICAgICAgICAoY29uc3Qgc3Bh
biYpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgc3BhbiYgb3BlcmF0b3I9KGNv
bnN0IHNwYW4mKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWSBjb25zdGV4cHIgc3Bhbihwb2ludGVyIF9fcHRyLCBzaXplX3R5cGUgX19jb3Vu
dCkgOiBfX2RhdGF7X19wdHJ9LCBfX3NpemV7X19jb3VudH0ge30KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc3Bhbihwb2ludGVyIF9fZiwgcG9pbnRlciBfX2wp
IDogX19kYXRhe19fZn0sIF9fc2l6ZXtzdGF0aWNfY2FzdDxzaXplX3Q+KGRpc3RhbmNlKF9fZiwg
X19sKSl9IHt9CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Tej4KKyAgICBfV1RGX0xJQkNQUF9J
TkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuKGVsZW1lbnRfdHlwZSAoJl9fYXJy
KVtfU3pdKSAgICAgICAgICBub2V4Y2VwdCA6IF9fZGF0YXtfX2Fycn0sIF9fc2l6ZXtfU3p9IHt9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsIHNpemVfdCBfU3osCisg
ICAgICAgICAgICAgIGVuYWJsZV9pZl90PGlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5
cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwgbnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdGV4cHIgc3BhbihhcnJheTxf
T3RoZXJFbGVtZW50VHlwZSwgX1N6PiYgX19hcnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRh
dGEoKX0sIF9fc2l6ZXtfU3p9IHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVu
dFR5cGUsIHNpemVfdCBfU3osCisgICAgICAgICAgICAgIGVuYWJsZV9pZl90PGlzX2NvbnZlcnRp
YmxlX3Y8Y29uc3QgX090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgqKVtdPiwg
bnVsbHB0cl90PiA9IG51bGxwdHI+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkK
KyAgICBjb25zdGV4cHIgc3Bhbihjb25zdCBhcnJheTxfT3RoZXJFbGVtZW50VHlwZSwgX1N6PiYg
X19hcnIpIG5vZXhjZXB0IDogX19kYXRhe19fYXJyLmRhdGEoKX0sIF9fc2l6ZXtfU3p9IHt9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVf
VklTSUJJTElUWQorICAgICAgICBjb25zdGV4cHIgc3BhbiggICAgICBfQ29udGFpbmVyJiBfX2Ms
CisgICAgICAgICAgICBlbmFibGVfaWZfdDxfX2lzX3NwYW5fY29tcGF0aWJsZV9jb250YWluZXI8
X0NvbnRhaW5lciwgX1RwPjo6dmFsdWUsIG51bGxwdHJfdD4gPSBudWxscHRyKQorICAgICAgICA6
IF9fZGF0YXtfV1RGX1ZTVEQ6OmRhdGEoX19jKX0sIF9fc2l6ZXsoc2l6ZV90eXBlKSBfV1RGX1ZT
VEQ6OnNpemUoX19jKX0ge30KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgorICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIGNvbnN0ZXhwciBzcGFuKGNv
bnN0IF9Db250YWluZXImIF9fYywKKyAgICAgICAgICAgIGVuYWJsZV9pZl90PF9faXNfc3Bhbl9j
b21wYXRpYmxlX2NvbnRhaW5lcjxjb25zdCBfQ29udGFpbmVyLCBfVHA+Ojp2YWx1ZSwgbnVsbHB0
cl90PiA9IG51bGxwdHIpCisgICAgICAgIDogX19kYXRhe19XVEZfVlNURDo6ZGF0YShfX2MpfSwg
X19zaXpleyhzaXplX3R5cGUpIF9XVEZfVlNURDo6c2l6ZShfX2MpfSB7fQorCisKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX090aGVyRWxlbWVudFR5cGUsIHNpemVfdCBfT3RoZXJFeHRlbnQ+CisgICAg
X1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICAgICAgY29uc3RleHByIHNwYW4oY29u
c3Qgc3BhbjxfT3RoZXJFbGVtZW50VHlwZSwgX090aGVyRXh0ZW50PiYgX19vdGhlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgZW5hYmxlX2lmX3Q8CisgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzX2NvbnZlcnRpYmxlX3Y8X090aGVyRWxlbWVudFR5cGUoKilbXSwgZWxlbWVudF90eXBlICgq
KVtdPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cl90PiA9IG51bGxwdHIpIG5v
ZXhjZXB0CisgICAgICAgIDogX19kYXRhe19fb3RoZXIuZGF0YSgpfSwgX19zaXple19fb3RoZXIu
c2l6ZSgpfSB7fQorCisvLyAgICB+c3BhbigpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKworICAgIHRl
bXBsYXRlIDxzaXplX3QgX0NvdW50PgorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
CisgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+IGZpcnN0KCkgY29uc3Qg
bm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfQ291bnQgPD0gc2l6
ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OmZpcnN0KCkiKTsKKyAgICAgICAgcmV0
dXJuIHNwYW48ZWxlbWVudF90eXBlLCBfQ291bnQ+e2RhdGEoKSwgX0NvdW50fTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZSA8c2l6ZV90IF9Db3VudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklT
SUJJTElUWQorICAgIGNvbnN0ZXhwciBzcGFuPGVsZW1lbnRfdHlwZSwgX0NvdW50PiBsYXN0KCkg
Y29uc3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVChfQ291bnQg
PD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46Omxhc3QoKSIpOworICAgICAg
ICByZXR1cm4gc3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsgc2l6ZSgpIC0gX0Nv
dW50LCBfQ291bnR9OworICAgIH0KKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZ
CisgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4gZmlyc3Qo
c2l6ZV90eXBlIF9fY291bnQpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX19jb3VudCA8PSBzaXplKCksICJDb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bh
bjo6Zmlyc3QoY291bnQpIik7CisgICAgICAgIHJldHVybiB7ZGF0YSgpLCBfX2NvdW50fTsKKyAg
ICB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGNvbnN0ZXhwciBz
cGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+IGxhc3QgKHNpemVfdHlwZSBfX2NvdW50
KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291
bnQgPD0gc2l6ZSgpLCAiQ291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46Omxhc3QoY291bnQpIik7
CisgICAgICAgIHJldHVybiB7ZGF0YSgpICsgc2l6ZSgpIC0gX19jb3VudCwgX19jb3VudH07Cisg
ICAgfQorCisgICAgdGVtcGxhdGUgPHNpemVfdCBfT2Zmc2V0LCBzaXplX3QgX0NvdW50ID0gZHlu
YW1pY19leHRlbnQ+CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25z
dGV4cHIgc3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD4gc3Vic3BhbigpIGNvbnN0IG5vZXhjZXB0
CisgICAgeworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX09mZnNldCA8PSBzaXplKCksICJP
ZmZzZXQgb3V0IG9mIHJhbmdlIGluIHNwYW46OnN1YnNwYW4oKSIpOworICAgICAgICBfV1RGX0xJ
QkNQUF9BU1NFUlQoX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IF9Db3VudCA8PSBzaXplKCkg
LSBfT2Zmc2V0LCAiT2Zmc2V0ICsgY291bnQgb3V0IG9mIHJhbmdlIGluIHNwYW46OnN1YnNwYW4o
KSIpOworICAgICAgICByZXR1cm4gc3BhbjxlbGVtZW50X3R5cGUsIF9Db3VudD57ZGF0YSgpICsg
X09mZnNldCwgX0NvdW50ID09IGR5bmFtaWNfZXh0ZW50ID8gc2l6ZSgpIC0gX09mZnNldCA6IF9D
b3VudH07CisgICAgfQorCisgICAgY29uc3RleHByIHNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWlj
X2V4dGVudD4KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHN1YnNwYW4o
c2l6ZV90eXBlIF9fb2Zmc2V0LCBzaXplX3R5cGUgX19jb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBj
b25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fb2Zmc2V0
IDw9IHNpemUoKSwgIk9mZnNldCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6c3Vic3BhbihvZmZzZXQs
IGNvdW50KSIpOworICAgICAgICBfV1RGX0xJQkNQUF9BU1NFUlQoX19jb3VudCAgPD0gc2l6ZSgp
IHx8IF9fY291bnQgPT0gZHluYW1pY19leHRlbnQsICJjb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bh
bjo6c3Vic3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICBpZiAoX19jb3VudCA9PSBkeW5h
bWljX2V4dGVudCkKKyAgICAgICAgICAgIHJldHVybiB7ZGF0YSgpICsgX19vZmZzZXQsIHNpemUo
KSAtIF9fb2Zmc2V0fTsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9fY291bnQgPD0gc2l6
ZSgpIC0gX19vZmZzZXQsICJPZmZzZXQgKyBjb3VudCBvdXQgb2YgcmFuZ2UgaW4gc3Bhbjo6c3Vi
c3BhbihvZmZzZXQsIGNvdW50KSIpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIF9fb2Zmc2V0
LCBfX2NvdW50fTsKKyAgICB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgc2l6ZV90eXBlIHNpemUoKSAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBf
X3NpemU7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4cHIgc2l6
ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemUgKiBzaXpl
b2YoZWxlbWVudF90eXBlKTsgfQorICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNv
bnN0ZXhwciBib29sIGVtcHR5KCkgICAgICAgICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9f
c2l6ZSA9PSAwOyB9CisKKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdGV4
cHIgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9faWR4KSBjb25zdCBub2V4Y2VwdAor
ICAgIHsKKyAgICAgICAgX1dURl9MSUJDUFBfQVNTRVJUKF9faWR4IDwgc2l6ZSgpLCAic3BhbjxU
PltdIGluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIF9fZGF0YVtfX2lkeF07
CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIHJl
ZmVyZW5jZSBmcm9udCgpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICBfV1RGX0xJQkNQ
UF9BU1NFUlQoIWVtcHR5KCksICJzcGFuPFQ+W10uZnJvbnQoKSBvbiBlbXB0eSBzcGFuIik7Cisg
ICAgICAgIHJldHVybiBfX2RhdGFbMF07CisgICAgfQorCisgICAgX1dURl9MSUJDUFBfSU5MSU5F
X1ZJU0lCSUxJVFkgY29uc3RleHByIHJlZmVyZW5jZSBiYWNrKCkgY29uc3Qgbm9leGNlcHQKKyAg
ICB7CisgICAgICAgIF9XVEZfTElCQ1BQX0FTU0VSVCghZW1wdHkoKSwgInNwYW48VD5bXS5iYWNr
KCkgb24gZW1wdHkgc3BhbiIpOworICAgICAgICByZXR1cm4gX19kYXRhW3NpemUoKS0xXTsKKyAg
ICB9CisKKworICAgIF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBwb2lu
dGVyIGRhdGEoKSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVy
biBfX2RhdGE7IH0KKworLy8gW3NwYW4uaXRlcl0sIHNwYW4gaXRlcmF0b3Igc3VwcG9ydAorICAg
IF9XVEZfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0ZXhwciBpdGVyYXRvciAgICAgICAg
ICAgICAgICAgYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkp
OyB9CisgICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RleHByIGl0ZXJhdG9y
ICAgICAgICAgICAgICAgICAgIGVuZCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGl0ZXJhdG9y
KGRhdGEoKSArIHNpemUoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBj
b25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgcmJlZ2luKCkgY29uc3Qgbm9leGNlcHQg
eyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KKyAgICBfV1RGX0xJQkNQUF9JTkxJ
TkVfVklTSUJJTElUWSBjb25zdGV4cHIgcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgICByZW5kKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorCisg
ICAgX1dURl9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3Bhbjxjb25zdCBieXRlLCBkeW5hbWlj
X2V4dGVudD4gX19hc19ieXRlcygpIGNvbnN0IG5vZXhjZXB0CisgICAgeyByZXR1cm4ge3JlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgYnl0ZSAqPihkYXRhKCkpLCBzaXplX2J5dGVzKCl9OyB9CisKKyAg
ICBfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzcGFuPGJ5dGUsIGR5bmFtaWNfZXh0ZW50
PiBfX2FzX3dyaXRhYmxlX2J5dGVzKCkgY29uc3Qgbm9leGNlcHQKKyAgICB7IHJldHVybiB7cmVp
bnRlcnByZXRfY2FzdDxieXRlICo+KGRhdGEoKSksIHNpemVfYnl0ZXMoKX07IH0KKworcHJpdmF0
ZToKKyAgICBwb2ludGVyICAgX19kYXRhOworICAgIHNpemVfdHlwZSBfX3NpemU7Cit9OworCisj
aWYgIWRlZmluZWQoX1dURl9MSUJDUFBfSEFTX05PX1JBTkdFUykKK3RlbXBsYXRlIDxjbGFzcyBf
VHAsIHNpemVfdCBfRXh0ZW50PgoraW5saW5lIGNvbnN0ZXhwciBib29sIHJhbmdlczo6ZW5hYmxl
X2JvcnJvd2VkX3JhbmdlPHNwYW48X1RwLCBfRXh0ZW50PiA+ID0gdHJ1ZTsKKyNlbmRpZiAvLyAh
ZGVmaW5lZChfV1RGX0xJQkNQUF9IQVNfTk9fUkFOR0VTKQorCisvLyAgYXNfYnl0ZXMgJiBhc193
cml0YWJsZV9ieXRlcwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc2l6ZV90IF9FeHRlbnQ+CitfV1RG
X0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorYXV0byBhc19ieXRlcyhzcGFuPF9UcCwgX0V4dGVu
dD4gX19zKSBub2V4Y2VwdAorLT4gZGVjbHR5cGUoX19zLl9fYXNfYnl0ZXMoKSkKK3sgcmV0dXJu
ICAgIF9fcy5fX2FzX2J5dGVzKCk7IH0KKwordGVtcGxhdGUgPGNsYXNzIF9UcCwgc2l6ZV90IF9F
eHRlbnQ+CitfV1RGX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorYXV0byBhc193cml0YWJsZV9i
eXRlcyhzcGFuPF9UcCwgX0V4dGVudD4gX19zKSBub2V4Y2VwdAorLT4gZW5hYmxlX2lmX3Q8IWlz
X2NvbnN0X3Y8X1RwPiwgZGVjbHR5cGUoX19zLl9fYXNfd3JpdGFibGVfYnl0ZXMoKSk+Cit7IHJl
dHVybiBfX3MuX19hc193cml0YWJsZV9ieXRlcygpOyB9CisKKy8vICBEZWR1Y3Rpb24gZ3VpZGVz
Cit0ZW1wbGF0ZTxjbGFzcyBfVHAsIHNpemVfdCBfU3o+CisgICAgc3BhbihfVHAgKCYpW19Tel0p
IC0+IHNwYW48X1RwLCBfU3o+OworCit0ZW1wbGF0ZTxjbGFzcyBfVHAsIHNpemVfdCBfU3o+Cisg
ICAgc3BhbihhcnJheTxfVHAsIF9Tej4mKSAtPiBzcGFuPF9UcCwgX1N6PjsKKwordGVtcGxhdGU8
Y2xhc3MgX1RwLCBzaXplX3QgX1N6PgorICAgIHNwYW4oY29uc3QgYXJyYXk8X1RwLCBfU3o+Jikg
LT4gc3Bhbjxjb25zdCBfVHAsIF9Tej47CisKK3RlbXBsYXRlPGNsYXNzIF9Db250YWluZXI+Cisg
ICAgc3BhbihfQ29udGFpbmVyJikgLT4gc3Bhbjx0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90
eXBlPjsKKwordGVtcGxhdGU8Y2xhc3MgX0NvbnRhaW5lcj4KKyAgICBzcGFuKGNvbnN0IF9Db250
YWluZXImKSAtPiBzcGFuPGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGU+Owor
CitfV1RGX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURAorCisjZW5kaWYKKworI2VuZGlmIC8vIF9X
VEZfTElCQ1BQX1NQQU4KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODE3NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA1LTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYXNpYyBzdGQ6OnNwYW4gdGVzdCB0byBtYWtlIHN1
cmUgdGhpbmdzIGNvbXBpbGUgYW5kIHdvcmsuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0ZFNwYW4uY3BwOiBBZGRlZC4KKwogMjAyMS0wNS0yNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbcnVuLXdlYmtpdC10ZXN0c11bV2luXSBT
dHJpcCBQSFAgc3VwcG9ydCBmcm9tIHdlYnNlcnZlcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyNzgxNjQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBAIHNldChUZXN0V1RGX1NP
VVJDRVMKICAgICBUZXN0cy9XVEYvU2NvcGVkTGFtYmRhLmNwcAogICAgIFRlc3RzL1dURi9TZXRG
b3JTY29wZS5jcHAKICAgICBUZXN0cy9XVEYvU3RkTGliRXh0cmFzLmNwcAorICAgIFRlc3RzL1dU
Ri9TdGRTcGFuLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAogICAgIFRlc3Rz
L1dURi9TdHJpbmdDb25jYXRlbmF0ZS5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nSGFzaGVyLmNw
cApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODE2NCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC05ODIsNiArOTgyLDcgQEAKIAkJQkNBQTQ4NTYxNEEwNDQ0QzAwODhG
QUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NTUxNEEwMjE2NDAwODhGQUM0IC8qIHNpbXBsZS10
YWxsLmh0bWwgKi87IH07CiAJCUJDQjY4MDQyMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0
YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjY4MDQxMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1
bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQkNCRDM3
MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24ucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkQzNzJFMTI1QUJCRTYwMEQyQzI5RiAvKiBp
Y29uLnBuZyAqLzsgfTsKKwkJQkNFRjlBM0QyNjYwMTI1NTAwOUI5MjFGIC8qIFN0ZFNwYW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRjlBM0My
NjYwMTI1NTAwOUI5MjFGIC8qIFN0ZFNwYW4uY3BwICovOyB9OwogCQlDMDFBMjNGMjEyNjYxNTY3
MDBDOUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAyQjc4ODIxMjY2MTU0MTAwMjZCRjBG
IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sICovOyB9OwogCQlDMDdFNkNCMjEzRkQ3MzkzMDAz
OEIyMkIgLyogZGV2aWNlUGl4ZWxSYXRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwN0U2Q0IxMTNGRDczOEEwMDM4QjIyQiAvKiBk
ZXZpY2VQaXhlbFJhdGlvLmh0bWwgKi87IH07CiAJCUMwQURCRTk2MTJGQ0E3OUIwMEQyQzEyOSAv
KiBzaW1wbGUtZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMwQURCRTg0MTJGQ0E2QjYwMEQyQzEyOSAvKiBzaW1wbGUtZm9ybS5o
dG1sICovOyB9OwpAQCAtMjc1MSw2ICsyNzUyLDcgQEAKIAkJQkNCRDM3MkUxMjVBQkJFNjAwRDJD
MjlGIC8qIGljb24ucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gaWNvbi5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFtZU1JTUVUeXBlUE5HLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTUlNRVR5cGVQTkcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2
QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGYWlsZWRMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFRjlBM0My
NjYwMTI1NTAwOUI5MjFGIC8qIFN0ZFNwYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RkU3Bh
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwMTM2M0M3MTNDMzk5NzMwMEVG
Mzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RyaW5nT3BlcmF0b3JzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzAyQjc3RjExMjY2MTIxNDAwMjZCRjBGIC8qIFNwYWNlYmFyU2Nyb2xsaW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwYWNlYmFyU2Nyb2xsaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzAyQjc4NTMxMjY2MTNBRTAwMjZCRjBGIC8q
IENhcmJvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gQ2FyYm9uLmZyYW1ld29yazsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC00NDczLDYgKzQ0NzUsNyBAQAogCQkJCTMzQzJDOUMw
MjY1MUY1QjkwMEU0MDdGNiAvKiBTbWFsbFNldC5jcHAgKi8sCiAJCQkJOTNGQ0RCMzMyNjM2MzE1
NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLywKIAkJCQlGRTJCQ0RDNjI0NzBGQzcw
MDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAqLywKKwkJCQlCQ0VGOUEzQzI2NjAxMjU1MDA5
QjkyMUYgLyogU3RkU3Bhbi5jcHAgKi8sCiAJCQkJODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8q
IFN0cmluZ0J1aWxkZXIuY3BwICovLAogCQkJCTdDRDRDMjZDMUUyQzBFNkUwMDkyOTQ3MCAvKiBT
dHJpbmdDb25jYXRlbmF0ZS5jcHAgKi8sCiAJCQkJOTNBQkE4MDgxNkREQUI5MTAwMkRCMkZBIC8q
IFN0cmluZ0hhc2hlci5jcHAgKi8sCkBAIC01MjI5LDYgKzUyMzIsNyBAQAogCQkJCTMzQzJDOUMx
MjY1MUY1QjkwMEU0MDdGNiAvKiBTbWFsbFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0ZD
REIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkUyQkNEQzcyNDcwRkRBMzAwREVDMzNCIC8qIFN0ZExpYkV4dHJhcy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlCQ0VGOUEzRDI2NjAxMjU1MDA5QjkyMUYgLyogU3RkU3Bhbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYzMjFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nQnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q0QzI2RTFFMkMwRTZFMDA5Mjk0NzAgLyogU3Ry
aW5nQ29uY2F0ZW5hdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMzYxRDBBNTkwQzAw
RkVCQ0YzIC8qIFN0cmluZ0hhc2hlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3BwCShub25leGlzdGVudCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0ZFNwYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8
d3RmL1N0ZFNwYW4uaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFN0ZFNw
YW4sIENvbnN0cnVjdG9yKQoreworICAgIHN0ZDo6c3Bhbjx1aW50OF90PiBhU3BhbjsKKyAgICBF
WFBFQ1RfRVEoYVNwYW4uc2l6ZSgpLCAwdSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430685</attachid>
            <date>2021-06-06 09:54:21 -0700</date>
            <delta_ts>2021-06-06 09:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226351-20210606095420.patch</filename>
            <type>text/plain</type>
            <size>30526</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzg1MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTA2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcG9ydHMgYSBjb3B5IG9mIFRyaXN0YW4gQnJpbmRsZSdz
IEJvb3N0IGxpY2Vuc2VkIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6c3BhbiAKKyAgICAgICAgZnJv
bSA1ZDhkMzY2ZWNhOTE4ZDBlZDNkMmQxOTZjYmVhZTZhYmZkODc0NzM2IG9mIGh0dHBzOi8vZ2l0
aHViLmNvbS90Y2JyaW5kbGUvc3Bhbi4KKworICAgICAgICBJdCBoYXMgYmVlbiBmdXJ0aGVyIG1v
ZGlmaWVkIHRvIHJlbmFtZSB0Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgorCisgICAgICAgICogTElD
RU5TRV8xXzAtQm9vc3QudHh0OiBBZGRlZC4KKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3Rm
L1NwYW4uaDogQWRkZWQuCisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoKSBzaG91bGQgcmV0dXJu
IGRhdGEgYXMgYHZvaWQqYApJbmRleDogU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29zdC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29zdC50eHQJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29zdC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyMyBAQAorQm9vc3QgU29mdHdhcmUgTGljZW5zZSAtIFZlcnNpb24gMS4wIC0g
QXVndXN0IDE3dGgsIDIwMDMKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb3Igb3JnYW5pemF0aW9uCitvYnRhaW5pbmcgYSBjb3B5
IG9mIHRoZSBzb2Z0d2FyZSBhbmQgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gY292ZXJlZCBi
eQordGhpcyBsaWNlbnNlICh0aGUgIlNvZnR3YXJlIikgdG8gdXNlLCByZXByb2R1Y2UsIGRpc3Bs
YXksIGRpc3RyaWJ1dGUsCitleGVjdXRlLCBhbmQgdHJhbnNtaXQgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZQorU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgdGhpcmQtcGFydGllcyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8KK2Rv
IHNvLCBhbGwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nOgorCitUaGUgY29weXJpZ2h0IG5vdGlj
ZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlzIGVudGlyZSBzdGF0ZW1lbnQsIGluY2x1ZGluZwor
dGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQsIHRoaXMgcmVzdHJpY3Rpb24gYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciwKK211c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIGFuZAorYWxsIGRlcml2YXRpdmUgd29ya3Mgb2Yg
dGhlIFNvZnR3YXJlLCB1bmxlc3Mgc3VjaCBjb3BpZXMgb3IgZGVyaXZhdGl2ZQord29ya3MgYXJl
IHNvbGVseSBpbiB0aGUgZm9ybSBvZiBtYWNoaW5lLWV4ZWN1dGFibGUgb2JqZWN0IGNvZGUgZ2Vu
ZXJhdGVkIGJ5CithIHNvdXJjZSBsYW5ndWFnZSBwcm9jZXNzb3IuCisKK1RIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBU
SVRMRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQKK1NIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBPUiBBTllPTkUgRElTVFJJQlVUSU5HIFRIRSBTT0ZUV0FSRSBCRSBMSUFCTEUK
K0ZPUiBBTlkgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLAorQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCitERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3ODQ1NykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1Myw4ICs2NTMsOCBAQAogCQlBOEE0NzMyMjE1MUE4
MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzIzMTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RyaW5nQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlBOEE0NzMyNTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNFRSAvKiBTdHJp
bmdCdWlsZGVySW50ZXJuYWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmluZ0J1aWxkZXJJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThB
NDczMjUxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzMyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29uY2F0ZW5hdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjcxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
cmluZ0hhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyODE1MUE4MjVCMDA0MTIzRkYg
LyogU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5MCw2ICs2OTAs
NyBAQAogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURG
MkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUZvb3Rw
cmludENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMzBDN0YyNjZE
MzAzNDAwMEQyMzBDIC8qIFNwYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Bhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRTFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRjFGNjFEMTMwMDBDOTIyMkMgLyog
TGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFuZ3VhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8q
IExhbmd1YWdlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFu
Z3VhZ2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjU1LDYgKzEyNTYs
NyBAQAogCQkJCUEzMEQ0MTJEMUYwREUxM0YwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAog
CQkJCTkzMTU2QzhEMjYyQzk4MjIwMEVBRTI3QiAvKiBTb3J0ZWRBcnJheU1hcC5oICovLAogCQkJ
CTc5MDM4RTA1MjI0QjA1QTcwMDRDMDczOCAvKiBTcGFubmluZ1RyZWUuaCAqLywKKwkJCQlCQ0Ez
MEM3RjI2NkQzMDM0MDAwRDIzMEMgLyogU3Bhbi5oICovLAogCQkJCUE4QTQ3MzBEMTUxQTgyNUIw
MDQxMjNGRiAvKiBTcGVjdHJ1bS5oICovLAogCQkJCUE4QTQ3MzBFMTUxQTgyNUIwMDQxMjNGRiAv
KiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJQThBNDczMEYxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
YWNrQm91bmRzLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4NDU3
KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIz
OSw2ICsyMzksNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU21hbGxTZXQuaAogICAg
IFNvZnRMaW5raW5nLmgKICAgICBTb3J0ZWRBcnJheU1hcC5oCisgICAgU3Bhbi5oCiAgICAgU3Bh
bm5pbmdUcmVlLmgKICAgICBTcGVjdHJ1bS5oCiAgICAgU3RhY2tCb3VuZHMuaApJbmRleDogU291
cmNlL1dURi93dGYvU3Bhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TcGFuLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MjAgQEAKKy8vICAgICAgICAgIENvcHlyaWdodCBUcmlzdGFuIEJyaW5kbGUgMjAx
OC4KKy8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJz
aW9uIDEuMC4KKy8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgLi4vLi4vTElDRU5TRV8xXzAt
Qm9vc3QudHh0IG9yIGNvcHkgYXQKKy8vICAgICAgICAgIGh0dHBzOi8vd3d3LmJvb3N0Lm9yZy9M
SUNFTlNFXzFfMC50eHQpCisKKy8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgQysrMjAn
cyBzdGQ6OnNwYW4gaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9w
YXBlcnMvMjAxOS9uNDgyMC5wZGYKKworLy8gVGhpcyBoYXMgYmVlbiBtb2RpZmllZCBmcm9tIHRo
ZSBvcmlnaW5hbCB2ZXJzaW9uIHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorLy8gICBS
ZW5hbWVkIHRjYjo6c3BhbiB0byBXVEY6OlNwYW4uCisvLyAgIFJlbmFtZWQgdGNiOjphc19ieXRl
cyB0byBXVEY6OmFzQnl0ZXMuCisvLyAgIFJlbmFtZWQgdGNiOjphc193cml0YWJsZV9ieXRlcyB0
byBXVEY6OmFzV3JpdGFibGVCeXRlcy4KKworI2lmbmRlZiBUQ0JfU1BBTl9IUFBfSU5DTFVERUQK
KyNkZWZpbmUgVENCX1NQQU5fSFBQX0lOQ0xVREVECisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNs
dWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKKyNpZm5kZWYgVENCX1NQQU5fTk9fRVhDRVBUSU9OUworLy8gQXR0ZW1wdCB0byBkaXNjb3Zl
ciB3aGV0aGVyIHdlJ3JlIGJlaW5nIGNvbXBpbGVkIHdpdGggZXhjZXB0aW9uIHN1cHBvcnQKKyNp
ZiAhKGRlZmluZWQoX19jcHBfZXhjZXB0aW9ucykgfHwgZGVmaW5lZChfX0VYQ0VQVElPTlMpIHx8
IGRlZmluZWQoX0NQUFVOV0lORCkpCisjZGVmaW5lIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKKyNl
bmRpZgorI2VuZGlmCisKKyNpZm5kZWYgVENCX1NQQU5fTk9fRVhDRVBUSU9OUworI2luY2x1ZGUg
PGNzdGRpbz4KKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKworLy8gVmFyaW91cyBmZWF0
dXJlIHRlc3QgbWFjcm9zCisKKyNpZm5kZWYgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUKKyNkZWZp
bmUgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUgV1RGCisjZW5kaWYKKworI2lmIF9fY3BsdXNwbHVz
ID49IDIwMTcwM0wgfHwgKGRlZmluZWQoX01TVkNfTEFORykgJiYgX01TVkNfTEFORyA+PSAyMDE3
MDNMKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NQUDE3CisjZW5kaWYKKworI2lmIF9fY3BsdXNw
bHVzID49IDIwMTQwMkwgfHwgKGRlZmluZWQoX01TVkNfTEFORykgJiYgX01TVkNfTEFORyA+PSAy
MDE0MDJMKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NQUDE0CisjZW5kaWYKKworbmFtZXNwYWNl
IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIHsKKworLy8gRXN0YWJsaXNoIGRlZmF1bHQgY29udHJh
Y3QgY2hlY2tpbmcgYmVoYXZpb3IKKyNpZiAhZGVmaW5lZChUQ0JfU1BBTl9USFJPV19PTl9DT05U
UkFDVF9WSU9MQVRJT04pICYmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIWRlZmlu
ZWQoVENCX1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNUX1ZJT0xBVElPTikgJiYgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICFkZWZpbmVkKFRDQl9TUEFOX05PX0NPTlRSQUNUX0NIRUNLSU5H
KQorI2lmIGRlZmluZWQoTkRFQlVHKSB8fCAhZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE0KQor
I2RlZmluZSBUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORworI2Vsc2UKKyNkZWZpbmUgVENC
X1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNUX1ZJT0xBVElPTgorI2VuZGlmCisjZW5kaWYKKwor
I2lmIGRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQorc3RydWN0
IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvciA6IHN0ZDo6bG9naWNfZXJyb3IgeworICAgIGV4cGxp
Y2l0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvcihjb25zdCBjaGFyKiBtc2cpIDogc3RkOjpsb2dp
Y19lcnJvcihtc2cpCisgICAge30KK307CisKK2lubGluZSB2b2lkIGNvbnRyYWN0X3Zpb2xhdGlv
bihjb25zdCBjaGFyKiBtc2cpCit7CisgICAgdGhyb3cgY29udHJhY3RfdmlvbGF0aW9uX2Vycm9y
KG1zZyk7Cit9CisKKyNlbGlmIGRlZmluZWQoVENCX1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNU
X1ZJT0xBVElPTikKK1tbbm9yZXR1cm5dXSBpbmxpbmUgdm9pZCBjb250cmFjdF92aW9sYXRpb24o
Y29uc3QgY2hhciogLyp1bnVzZWQqLykKK3sKKyAgICBzdGQ6OnRlcm1pbmF0ZSgpOworfQorI2Vu
ZGlmCisKKyNpZiAhZGVmaW5lZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORykKKyNkZWZp
bmUgVENCX1NQQU5fU1RSSU5HSUZZKGNvbmQpICNjb25kCisjZGVmaW5lIFRDQl9TUEFOX0VYUEVD
VChjb25kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGNvbmQgPyAodm9pZCkgMCA6IGNvbnRyYWN0X3Zpb2xhdGlvbigiRXhwZWN0ZWQgIiBU
Q0JfU1BBTl9TVFJJTkdJRlkoY29uZCkpCisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9FWFBFQ1Qo
Y29uZCkKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZp
bmVkKF9fY3BwX2lubGluZV92YXJpYWJsZXMpCisjZGVmaW5lIFRDQl9TUEFOX0lOTElORV9WQVIg
aW5saW5lCisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9JTkxJTkVfVkFSCisjZW5kaWYKKworI2lm
IGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoZGVmaW5lZChfX2NwcF9jb25zdGV4cHIpICYmIF9f
Y3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQpCisjZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09O
U1RFWFBSCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNF9DT05TVEVY
UFIpCisjZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjE0IGNvbnN0ZXhwcgorI2Vsc2UKKyNkZWZp
bmUgVENCX1NQQU5fQ09OU1RFWFBSMTQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9I
QVZFX0NQUDE0X0NPTlNURVhQUikgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICghZGVmaW5lZChfTVNDX1ZFUikgfHwgX01TQ19WRVIgPiAxOTAwKQorI2RlZmluZSBU
Q0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOIGNvbnN0ZXhwcgorI2Vsc2UKKyNkZWZpbmUgVENCX1NQ
QU5fQ09OU1RFWFBSX0FTU0lHTgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX05PX0NP
TlRSQUNUX0NIRUNLSU5HKQorI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxMSBjb25zdGV4cHIK
KyNlbHNlCisjZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjExIFRDQl9TUEFOX0NPTlNURVhQUjE0
CisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChf
X2NwcF9kZWR1Y3Rpb25fZ3VpZGVzKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9H
VUlERVMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZp
bmVkKF9fY3BwX2xpYl9ieXRlKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX1NURF9CWVRFCisjZW5k
aWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9s
aWJfYXJyYXlfY29uc3RleHByKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NPTlNURVhQUl9TVERf
QVJSQVlfRVRDCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DT05TVEVYUFJf
U1REX0FSUkFZX0VUQykKKyNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIGNvbnN0ZXhw
cgorI2Vsc2UKKyNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSCisjZW5kaWYKKworI2lm
ZGVmIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKK3VzaW5nIGJ5dGUgPSBzdGQ6OmJ5dGU7CisjZWxz
ZQordXNpbmcgYnl0ZSA9IHVuc2lnbmVkIGNoYXI7CisjZW5kaWYKKworI2lmIGRlZmluZWQoVENC
X1NQQU5fSEFWRV9DUFAxNykKKyNkZWZpbmUgVENCX1NQQU5fTk9ESVNDQVJEIFtbbm9kaXNjYXJk
XV0KKyNlbHNlCisjZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRAorI2VuZGlmCisKK1RDQl9TUEFO
X0lOTElORV9WQVIgY29uc3RleHByIHN0ZDo6c2l6ZV90IGR5bmFtaWNfZXh0ZW50ID0gU0laRV9N
QVg7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50
ID0gZHluYW1pY19leHRlbnQ+CitjbGFzcyBTcGFuOworCituYW1lc3BhY2UgZGV0YWlsIHsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+CitzdHJ1Y3Qgc3Bhbl9zdG9yYWdl
IHsKKyAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0OworCisg
ICAgY29uc3RleHByIHNwYW5fc3RvcmFnZShFKiBwX3B0ciwgc3RkOjpzaXplX3QgLyp1bnVzZWQq
Lykgbm9leGNlcHQKKyAgICAgICA6IHB0cihwX3B0cikKKyAgICB7fQorCisgICAgRSogcHRyID0g
bnVsbHB0cjsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c2l6ZV90IHNpemUgPSBTOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEU+CitzdHJ1Y3Qgc3Bhbl9zdG9yYWdlPEUsIGR5bmFtaWNf
ZXh0ZW50PiB7CisgICAgY29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5vZXhjZXB0ID0gZGVmYXVs
dDsKKworICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IHBf
c2l6ZSkgbm9leGNlcHQKKyAgICAgICAgOiBwdHIocF9wdHIpLCBzaXplKHBfc2l6ZSkKKyAgICB7
fQorCisgICAgRSogcHRyID0gbnVsbHB0cjsKKyAgICBzdGQ6OnNpemVfdCBzaXplID0gMDsKK307
CisKKy8vIFJlaW1wbGVtZW50YXRpb24gb2YgQysrMTcgc3RkOjpzaXplKCkgYW5kIHN0ZDo6ZGF0
YSgpCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRlZmluZWQoX19jcHBfbGliX25vbm1l
bWJlcl9jb250YWluZXJfYWNjZXNzKQordXNpbmcgc3RkOjpkYXRhOwordXNpbmcgc3RkOjpzaXpl
OworI2Vsc2UKK3RlbXBsYXRlIDxjbGFzcyBDPgorY29uc3RleHByIGF1dG8gc2l6ZShjb25zdCBD
JiBjKSAtPiBkZWNsdHlwZShjLnNpemUoKSkKK3sKKyAgICByZXR1cm4gYy5zaXplKCk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgorY29uc3RleHByIHN0ZDo6c2l6ZV90
IHNpemUoY29uc3QgVCAoJilbTl0pIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIE47Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBDPgorY29uc3RleHByIGF1dG8gZGF0YShDJiBjKSAtPiBkZWNsdHlwZShj
LmRhdGEoKSkKK3sKKyAgICByZXR1cm4gYy5kYXRhKCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBD
PgorY29uc3RleHByIGF1dG8gZGF0YShjb25zdCBDJiBjKSAtPiBkZWNsdHlwZShjLmRhdGEoKSkK
K3sKKyAgICByZXR1cm4gYy5kYXRhKCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNp
emVfdCBOPgorY29uc3RleHByIFQqIGRhdGEoVCAoJmFycmF5KVtOXSkgbm9leGNlcHQKK3sKKyAg
ICByZXR1cm4gYXJyYXk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBFPgorY29uc3RleHByIGNvbnN0
IEUqIGRhdGEoc3RkOjppbml0aWFsaXplcl9saXN0PEU+IGlsKSBub2V4Y2VwdAoreworICAgIHJl
dHVybiBpbC5iZWdpbigpOworfQorI2VuZGlmIC8vIFRDQl9TUEFOX0hBVkVfQ1BQMTcKKworI2lm
IGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9saWJfdm9pZF90
KQordXNpbmcgc3RkOjp2b2lkX3Q7CisjZWxzZQordGVtcGxhdGUgPHR5cGVuYW1lLi4uPgordXNp
bmcgdm9pZF90ID0gdm9pZDsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5n
IHVuY3ZyZWZfdCA9CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lPgor
c3RydWN0IGlzX3NwYW4gOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzdGQ6OnNpemVfdCBTPgorc3RydWN0IGlzX3NwYW48U3BhbjxULCBTPj4gOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lPgorc3RydWN0IGlzX3N0ZF9hcnJheSA6
IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90
IE4+CitzdHJ1Y3QgaXNfc3RkX2FycmF5PHN0ZDo6YXJyYXk8VCwgTj4+IDogc3RkOjp0cnVlX3R5
cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0IGhh
c19zaXplX2FuZF9kYXRhIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBoYXNfc2l6ZV9hbmRfZGF0YTxULCB2b2lkX3Q8ZGVjbHR5cGUoZGV0YWls
OjpzaXplKHN0ZDo6ZGVjbHZhbDxUPigpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPj4KKyAgICA6
IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgVSA9
IHVuY3ZyZWZfdDxDPj4KK3N0cnVjdCBpc19jb250YWluZXIgeworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2YWx1ZSA9CisgICAgICAgICFpc19zcGFuPFU+Ojp2YWx1ZSAmJiAhaXNfc3RkX2Fy
cmF5PFU+Ojp2YWx1ZSAmJgorICAgICAgICAhc3RkOjppc19hcnJheTxVPjo6dmFsdWUgJiYgaGFz
X3NpemVfYW5kX2RhdGE8Qz46OnZhbHVlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1
c2luZyByZW1vdmVfcG9pbnRlcl90ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgor
c3RydWN0IGlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZSA6IHN0ZDo6ZmFsc2Vf
dHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+CitzdHJ1Y3QgaXNf
Y29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAgIFQsIEUsCisgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8ZGVjbHR5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZGF0
YShzdGQ6OmRlY2x2YWw8VD4oKSkpPjo6dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICB2b2lk
Pjo6dmFsdWU+Ojp0eXBlPgorICAgIDogc3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICBy
ZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkp
PiAoKilbXSwKKyAgICAgICAgICBFICgqKVtdPiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHNpemVfdD4KK3N0cnVjdCBpc19jb21wbGV0ZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfY29tcGxldGU8VCwgZGVjbHR5
cGUoc2l6ZW9mKFQpKT4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworfSAvLyBuYW1lc3BhY2UgZGV0
YWlsCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50
PgorY2xhc3MgU3BhbiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX29iamVjdDxFbGVtZW50
VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1lbnRUeXBlIG11
c3QgYmUgYW4gb2JqZWN0IHR5cGUgKG5vdCBhICIKKyAgICAgICAgICAgICAgICAgICJyZWZlcmVu
Y2UgdHlwZSBvciB2b2lkKSIpOworICAgIHN0YXRpY19hc3NlcnQoZGV0YWlsOjppc19jb21wbGV0
ZTxFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1l
bnRUeXBlIG11c3QgYmUgYSBjb21wbGV0ZSB0eXBlIChub3QgYSBmb3J3YXJkICIKKyAgICAgICAg
ICAgICAgICAgICJkZWNsYXJhdGlvbikiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Fi
c3RyYWN0PEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAiQSBTcGFuJ3Mg
RWxlbWVudFR5cGUgY2Fubm90IGJlIGFuIGFic3RyYWN0IGNsYXNzIHR5cGUiKTsKKworICAgIHVz
aW5nIHN0b3JhZ2VfdHlwZSA9IGRldGFpbDo6c3Bhbl9zdG9yYWdlPEVsZW1lbnRUeXBlLCBFeHRl
bnQ+OworCitwdWJsaWM6CisgICAgLy8gY29uc3RhbnRzIGFuZCB0eXBlcworICAgIHVzaW5nIGVs
ZW1lbnRfdHlwZSA9IEVsZW1lbnRUeXBlOworICAgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjxFbGVtZW50VHlwZT46OnR5cGU7CisgICAgdXNpbmcgc2l6ZV90eXBl
ID0gc3RkOjpzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjpwdHJkaWZm
X3Q7CisgICAgdXNpbmcgcG9pbnRlciA9IGVsZW1lbnRfdHlwZSo7CisgICAgdXNpbmcgY29uc3Rf
cG9pbnRlciA9IGNvbnN0IGVsZW1lbnRfdHlwZSo7CisgICAgdXNpbmcgcmVmZXJlbmNlID0gZWxl
bWVudF90eXBlJjsKKyAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBlbGVtZW50X3R5
cGUmOworICAgIHVzaW5nIGl0ZXJhdG9yID0gcG9pbnRlcjsKKyAgICB1c2luZyByZXZlcnNlX2l0
ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90eXBlIGV4dGVudCA9IEV4dGVudDsKKworICAgIC8vIFtzcGFuLmNvbnNd
LCBTcGFuIGNvbnN0cnVjdG9ycywgY29weSwgYXNzaWdubWVudCwgYW5kIGRlc3RydWN0b3IKKyAg
ICB0ZW1wbGF0ZSA8CisgICAgICAgIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPChFID09IGR5bmFtaWNfZXh0ZW50IHx8IEUgPD0gMCksIGlu
dD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQKKyAgICB7fQorCisg
ICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bhbihwb2ludGVyIHB0ciwgc2l6ZV90eXBlIGNvdW50
KQorICAgICAgICA6IHN0b3JhZ2VfKHB0ciwgY291bnQpCisgICAgeworICAgICAgICBUQ0JfU1BB
Tl9FWFBFQ1QoZXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IGNvdW50ID09IGV4dGVudCk7Cisg
ICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bhbihwb2ludGVyIGZpcnN0X2VsZW0s
IHBvaW50ZXIgbGFzdF9lbGVtKQorICAgICAgICA6IHN0b3JhZ2VfKGZpcnN0X2VsZW0sIGxhc3Rf
ZWxlbSAtIGZpcnN0X2VsZW0pCisgICAgeworICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoZXh0ZW50
ID09IGR5bmFtaWNfZXh0ZW50IHx8CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2VsZW0g
LSBmaXJzdF9lbGVtID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
c3RkOjpwdHJkaWZmX3Q+KGV4dGVudCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxzdGQ6OnNp
emVfdCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8
IE4gPT0gRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9l
bGVtZW50X3R5cGVfY29tcGF0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dF90eXBlICgmKVtOXSwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgIGlu
dD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKGVsZW1lbnRfdHlwZSAoJmFycilbTl0p
IG5vZXhjZXB0IDogc3RvcmFnZV8oYXJyLCBOKQorICAgIHt9CisKKyAgICB0ZW1wbGF0ZSA8c3Rk
OjpzaXplX3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAoRSA9PSBkeW5hbWljX2V4dGVu
dCB8fCBOID09IEUpICYmCisgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWlu
ZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgaW50Pjo6dHlwZSA9IDA+CisgICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNw
YW4oc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYgYXJyKSBub2V4Y2VwdAorICAgICAgICA6IHN0
b3JhZ2VfKGFyci5kYXRhKCksIE4pCisgICAge30KKworICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVf
dCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8IE4g
PT0gRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVt
ZW50X3R5cGVfY29tcGF0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjphcnJheTx2YWx1ZV90eXBlLCBOPiYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAg
ICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KKyAgICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3Bh
bihjb25zdCBzdGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiBhcnIpIG5vZXhjZXB0CisgICAgICAg
IDogc3RvcmFnZV8oYXJyLmRhdGEoKSwgTikKKyAgICB7fQorCisgICAgdGVtcGxhdGUgPAorICAg
ICAgICB0eXBlbmFtZSBDb250YWluZXIsIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVu
dCAmJiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxDb250YWluZXI+Ojp2YWx1ZSAmJgorICAgICAgICAg
ICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAg
ICAgICAgICAgICAgICAgICBDb250YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAg
ICAgICAgaW50Pjo6dHlwZSA9IDA+CisgICAgY29uc3RleHByIFNwYW4oQ29udGFpbmVyJiBjb250
KQorICAgICAgICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNv
bnQpKQorICAgIHt9CisKKyAgICB0ZW1wbGF0ZSA8CisgICAgICAgIHR5cGVuYW1lIENvbnRhaW5l
ciwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8CisgICAgICAgICAgICBFID09IGR5bmFtaWNfZXh0ZW50ICYmIGRldGFpbDo6aXNfY29udGFp
bmVyPENvbnRhaW5lcj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250
YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnRhaW5lciYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICBpbnQ+Ojp0eXBl
ID0gMD4KKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBDb250YWluZXImIGNvbnQpCisgICAgICAg
IDogc3RvcmFnZV8oZGV0YWlsOjpkYXRhKGNvbnQpLCBkZXRhaWw6OnNpemUoY29udCkpCisgICAg
e30KKworICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRl
ZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXJFbGVtZW50VHlwZSwgc3RkOjpz
aXplX3QgT3RoZXJFeHRlbnQsCisgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgICAgICAgKEV4dGVudCA9PSBPdGhlckV4dGVudCB8fCBFeHRlbnQgPT0g
ZHluYW1pY19leHRlbnQpICYmCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0
aWJsZTxPdGhlckVsZW1lbnRUeXBlICgqKVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWxlbWVudFR5cGUgKCopW10+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgIGludD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48T3RoZXJF
bGVtZW50VHlwZSwgT3RoZXJFeHRlbnQ+JiBvdGhlcikgbm9leGNlcHQKKyAgICAgICAgOiBzdG9y
YWdlXyhvdGhlci5kYXRhKCksIG90aGVyLnNpemUoKSkKKyAgICB7fQorCisgICAgflNwYW4oKSBu
b2V4Y2VwdCA9IGRlZmF1bHQ7CisKKyAgICBUQ0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOIFNwYW4m
CisgICAgb3BlcmF0b3I9KGNvbnN0IFNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisK
KyAgICAvLyBbc3Bhbi5zdWJdLCBzcGFuIHN1YnZpZXdzCisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6
ZV90IENvdW50PgorICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90eXBlLCBD
b3VudD4gZmlyc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKENvdW50
IDw9IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgpLCBDb3VudH07CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENvdW50PgorICAgIFRDQl9TUEFOX0NPTlNURVhQUjEx
IFNwYW48ZWxlbWVudF90eXBlLCBDb3VudD4gbGFzdCgpIGNvbnN0CisgICAgeworICAgICAgICBU
Q0JfU1BBTl9FWFBFQ1QoQ291bnQgPD0gc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkg
KyAoc2l6ZSgpIC0gQ291bnQpLCBDb3VudH07CisgICAgfQorCisgICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IE9mZnNldCwgc3RkOjpzaXplX3QgQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAgICB1
c2luZyBzdWJzcGFuX3JldHVybl90ID0KKyAgICAgICAgU3BhbjxFbGVtZW50VHlwZSwgQ291bnQg
IT0gZHluYW1pY19leHRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQ291bnQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKEV4dGVudCAhPSBkeW5hbWljX2V4dGVu
dCA/IEV4dGVudCAtIE9mZnNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogZHluYW1pY19leHRlbnQpPjsKKworICAgIHRlbXBsYXRl
IDxzdGQ6OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6ZV90IENvdW50ID0gZHluYW1pY19leHRlbnQ+
CisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgc3Vic3Bhbl9yZXR1cm5fdDxPZmZzZXQsIENvdW50
PiBzdWJzcGFuKCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VYUEVDVChPZmZzZXQg
PD0gc2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnQgPT0gZHluYW1pY19l
eHRlbnQgfHwgT2Zmc2V0ICsgQ291bnQgPD0gc2l6ZSgpKSk7CisgICAgICAgIHJldHVybiB7ZGF0
YSgpICsgT2Zmc2V0LAorICAgICAgICAgICAgICAgIENvdW50ICE9IGR5bmFtaWNfZXh0ZW50ID8g
Q291bnQgOiBzaXplKCkgLSBPZmZzZXR9OworICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNURVhQ
UjExIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KKyAgICBmaXJzdChzaXplX3R5
cGUgY291bnQpIGNvbnN0CisgICAgeworICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoY291bnQgPD0g
c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCksIGNvdW50fTsKKyAgICB9CisKKyAgICBU
Q0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+Cisg
ICAgbGFzdChzaXplX3R5cGUgY291bnQpIGNvbnN0CisgICAgeworICAgICAgICBUQ0JfU1BBTl9F
WFBFQ1QoY291bnQgPD0gc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyAoc2l6ZSgp
IC0gY291bnQpLCBjb3VudH07CisgICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bh
bjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgorICAgIHN1YnNwYW4oc2l6ZV90eXBlIG9m
ZnNldCwgc2l6ZV90eXBlIGNvdW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0CisgICAgeworICAg
ICAgICBUQ0JfU1BBTl9FWFBFQ1Qob2Zmc2V0IDw9IHNpemUoKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IG9mZnNldCArIGNvdW50IDw9IHNp
emUoKSkpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICBjb3VudCA9PSBkeW5hbWljX2V4dGVudCA/IHNpemUoKSAtIG9mZnNldCA6IGNvdW50fTsKKyAg
ICB9CisKKyAgICAvLyBbc3Bhbi5vYnNdLCBzcGFuIG9ic2VydmVycworICAgIGNvbnN0ZXhwciBz
aXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0b3JhZ2VfLnNpemU7IH0K
KworICAgIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0Cisg
ICAgeworICAgICAgICByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7CisgICAg
fQorCisgICAgVENCX1NQQU5fTk9ESVNDQVJEIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgY29uc3Qg
bm9leGNlcHQKKyAgICB7CisgICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsKKyAgICB9CisKKyAg
ICAvLyBbc3Bhbi5lbGVtXSwgc3BhbiBlbGVtZW50IGFjY2VzcworICAgIFRDQl9TUEFOX0NPTlNU
RVhQUjExIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBpZHgpIGNvbnN0CisgICAgewor
ICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoaWR4IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuICoo
ZGF0YSgpICsgaWR4KTsKKyAgICB9CisKKyAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSByZWZlcmVu
Y2UgZnJvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKCFlbXB0eSgp
KTsKKyAgICAgICAgcmV0dXJuICpkYXRhKCk7CisgICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RF
WFBSMTEgcmVmZXJlbmNlIGJhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQ
RUNUKCFlbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuICooZGF0YSgpICsgKHNpemUoKSAtIDEpKTsK
KyAgICB9CisKKyAgICBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gc3RvcmFnZV8ucHRyOyB9CisKKyAgICAvLyBbc3Bhbi5pdGVyYXRvcnNdLCBzcGFuIGl0
ZXJhdG9yIHN1cHBvcnQKKyAgICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0KKworICAgIGNvbnN0ZXhwciBpdGVyYXRvciBlbmQoKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KKworICAgIFRDQl9TUEFO
X0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0
CisgICAgeworICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7CisgICAgfQor
CisgICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNv
bnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RvcmFnZV90eXBlIHN0b3JhZ2Vfe307Cit9
OworCisjaWZkZWYgVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCisKKy8qIERlZHVjdGlv
biBHdWlkZXMgKi8KK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KK1NwYW4oVCAoJilbTl0p
LT5TcGFuPFQsIE4+OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitTcGFuKHN0ZDo6
YXJyYXk8VCwgTj4mKS0+U3BhbjxULCBOPjsKKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBO
PgorU3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIE4+JiktPlNwYW48Y29uc3QgVCwgTj47CisKK3Rl
bXBsYXRlIDxjbGFzcyBDb250YWluZXI+CitTcGFuKENvbnRhaW5lciYpLT5TcGFuPHR5cGVuYW1l
IENvbnRhaW5lcjo6dmFsdWVfdHlwZT47CisKK3RlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+CitT
cGFuKGNvbnN0IENvbnRhaW5lciYpLT5TcGFuPGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFs
dWVfdHlwZT47CisKKyNlbmRpZiAvLyBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9HVUlERVMKKwor
I2lmZGVmIFRDQl9TUEFOX0lOQ0xVREVfTUFLRV9TUEFOCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50PgorY29uc3RleHByIFNwYW48RWxlbWVudFR5
cGUsIEV4dGVudD4KK21ha2Vfc3BhbihTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhj
ZXB0Cit7CisgICAgcmV0dXJuIHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNp
emVfdCBOPgorY29uc3RleHByIFNwYW48VCwgTj4gbWFrZV9zcGFuKFQgKCZhcnIpW05dKSBub2V4
Y2VwdAoreworICAgIHJldHVybiB7YXJyfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0
ZDo6c2l6ZV90IE4+CitUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3BhbjxULCBOPiBtYWtlX3Nw
YW4oc3RkOjphcnJheTxULCBOPiYgYXJyKSBub2V4Y2VwdAoreworICAgIHJldHVybiB7YXJyfTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+CitUQ0JfU1BBTl9BUlJB
WV9DT05TVEVYUFIgU3Bhbjxjb25zdCBULCBOPgorbWFrZV9zcGFuKGNvbnN0IHN0ZDo6YXJyYXk8
VCwgTj4mIGFycikgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge2Fycn07Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDb250YWluZXI+Citjb25zdGV4cHIgU3Bhbjx0eXBlbmFtZSBDb250YWluZXI6
OnZhbHVlX3R5cGU+IG1ha2Vfc3BhbihDb250YWluZXImIGNvbnQpCit7CisgICAgcmV0dXJuIHtj
b250fTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK2NvbnN0ZXhwciBTcGFu
PGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4KK21ha2Vfc3Bhbihjb25zdCBD
b250YWluZXImIGNvbnQpCit7CisgICAgcmV0dXJuIHtjb250fTsKK30KKyNlbmRpZiAvLyBUQ0Jf
U1BBTl9JTkNMVURFX01BS0VfU1BBTgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUs
IHN0ZDo6c2l6ZV90IEV4dGVudD4KK1NwYW48Y29uc3QgYnl0ZSwgKChFeHRlbnQgPT0gZHluYW1p
Y19leHRlbnQpID8gZHluYW1pY19leHRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogc2l6ZW9mKEVsZW1lbnRUeXBlKSAqIEV4dGVudCk+Cithc0J5dGVz
KFNwYW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge3Jl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnl0ZSo+KHMuZGF0YSgpKSwgcy5zaXplX2J5dGVzKCl9Owor
fQorCit0ZW1wbGF0ZSA8CisgICAgY2xhc3MgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRlbnQsCisg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfY29uc3Q8RWxlbWVudFR5cGU+Ojp2
YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CitTcGFuPGJ5dGUsICgoRXh0ZW50ID09IGR5bmFtaWNfZXh0
ZW50KSA/IGR5bmFtaWNfZXh0ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgorYXNXcml0YWJsZUJ5dGVzKFNw
YW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge3JlaW50
ZXJwcmV0X2Nhc3Q8Ynl0ZSo+KHMuZGF0YSgpKSwgcy5zaXplX2J5dGVzKCl9OworfQorCit0ZW1w
bGF0ZSA8c3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgRSwgc3RkOjpzaXplX3QgUz4KK2NvbnN0ZXhw
ciBhdXRvIGdldChTcGFuPEUsIFM+IHMpIC0+IGRlY2x0eXBlKHNbTl0pCit7CisgICAgcmV0dXJu
IHNbTl07Cit9CisKK30gLy8gbmFtZXNwYWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FCisKK25h
bWVzcGFjZSBzdGQgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHNpemVfdCBF
eHRlbnQ+CitjbGFzcyB0dXBsZV9zaXplPFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpTcGFuPEVs
ZW1lbnRUeXBlLCBFeHRlbnQ+PgorICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVf
dCwgRXh0ZW50PiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgorY2xhc3Mg
dHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjwKKyAgICBFbGVtZW50VHlw
ZSwgVENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OmR5bmFtaWNfZXh0ZW50Pj47IC8vIG5vdCBkZWZp
bmVkCisKK3RlbXBsYXRlIDxzaXplX3QgSSwgdHlwZW5hbWUgRWxlbWVudFR5cGUsIHNpemVfdCBF
eHRlbnQ+CitjbGFzcyB0dXBsZV9lbGVtZW50PEksIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpT
cGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+PiB7CitwdWJsaWM6CisgICAgc3RhdGljX2Fzc2VydChF
eHRlbnQgIT0gVENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OmR5bmFtaWNfZXh0ZW50ICYmCisgICAg
ICAgICAgICAgICAgICAgICAgSSA8IEV4dGVudCwKKyAgICAgICAgICAgICAgICAgICIiKTsKKyAg
ICB1c2luZyB0eXBlID0gRWxlbWVudFR5cGU7Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2Ugc3Rk
CisKK3VzaW5nIFdURjo6U3BhbjsKK3VzaW5nIFdURjo6YXNCeXRlczsKK3VzaW5nIFdURjo6YXNX
cml0YWJsZUJ5dGVzOworCisjZW5kaWYgLy8gVENCX1NQQU5fSFBQX0lOQ0xVREVECkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
Nzg0NTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMS0wNi0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGNvcHkgb2Ygc3RkOjpzcGFuIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBwcmUtbW92aW5nIHRv
IGMrKzIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYmFzaWMgV1RGOjpTcGFuIHRlc3QgdG8gbWFrZSBzdXJlIHRoaW5ncyBjb21waWxlIGFuZCB3
b3JrLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TcGFuLmNwcDogQWRkZWQuCisKIDIw
MjEtMDYtMDQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBFeHBvc2Ugc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3ODQ1NykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcg
QEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAgICBUZXN0
cy9XVEYvU2NvcGVkTGFtYmRhLmNwcAogICAgIFRlc3RzL1dURi9TZXRGb3JTY29wZS5jcHAKKyAg
ICBUZXN0cy9XVEYvU3Bhbi5jcHAKICAgICBUZXN0cy9XVEYvU3RkTGliRXh0cmFzLmNwcAogICAg
IFRlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdDb25jYXRl
bmF0ZS5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzg0NTcpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgxLDYgKzk4MSw3IEBACiAJCUJDNTc1QkQ5MTI2RjU4
RTIwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NUJCRjEyNkY1NzUyMDA2RjBGMTIgLyogUGxh
dGZvcm1VdGlsaXRpZXMuY3BwICovOyB9OwogCQlCQzU3NUJFMDEyNkY1OTBEMDA2RjBGMTIgLyog
UGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzEzMTg4NDExNzExNEI2MDBCNjk3MjcgLyogUGxhdGZvcm1VdGlsaXRp
ZXNNYWMubW0gKi87IH07CiAJCUJDOTA5Nzg0MTI1NTcxQ0YwMDA4Mzc1NiAvKiBzaW1wbGUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzkwOTc3ODEyNTU3MUFCMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgKi87IH07CisJCUJDQTMwQzdF
MjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTMwQzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCAq
LzsgfTsKIAkJQkNBQTQ4NTYxNEEwNDQ0QzAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4
NTUxNEEwMjE2NDAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgKi87IH07CiAJCUJDQjY4MDQy
MTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjY4MDQxMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2hfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24u
cG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQkQzNzJFMTI1QUJCRTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKQEAgLTI3NDcsNiAr
Mjc0OCw3IEBACiAJCUJDOTA5Nzc5MTI1NTcxQUIwMDA4Mzc1NiAvKiBQYWdlTG9hZEJhc2ljLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkQmFzaWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwOTk1RDEyNTY3QkMxMDAwODM3NTYg
LyogV0tTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tT
dHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwOTk5MzEyNTZBQ0Yx
MDAwODM3NTYgLyogV0tTdHJpbmdKU1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS1N0cmluZ0pTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkNBMzBDN0QyNjZEMkY0MzAwMEQyMzBDIC8qIFNwYW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Bhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQUE0ODU1MTRBMDIxNjQwMDg4RkFDNCAvKiBzaW1wbGUtdGFsbC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpbXBsZS10YWxsLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0FBNDg1NzE0QTA0NEQ0MDA4OEZBQzQgLyogRWRpdG9yQ29t
bWFuZHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JD
b21tYW5kcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNjgwM0YxMjZGQkZF
MTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFs
ZXJ0Q3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ4NCw2ICs0NDg2
LDcgQEAKIAkJCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8sCiAJ
CQkJMzNDMkM5QzAyNjUxRjVCOTAwRTQwN0Y2IC8qIFNtYWxsU2V0LmNwcCAqLywKIAkJCQk5M0ZD
REIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovLAorCQkJCUJDQTMw
QzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCAqLywKIAkJCQlGRTJCQ0RDNjI0NzBGQzcw
MDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAqLywKIAkJCQk4MUI1MDE5MjE0MEYyMzIzMDBE
OUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCiAJCQkJN0NENEMyNkMxRTJDMEU2RTAwOTI5
NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNwcCAqLywKQEAgLTUxOTIsNiArNTE5NSw3IEBACiAJ
CQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUzMjEwNTE5MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQ0EzMEM3RTI2NkQyRjQzMDAwRDIzMEMgLyogU3Bhbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hD
b3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNE
NiAvKiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="commit-queue"
          id="452235"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430686</attachid>
            <date>2021-06-06 09:55:36 -0700</date>
            <delta_ts>2021-06-08 07:33:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226351-20210606095535.patch</filename>
            <type>text/plain</type>
            <size>32327</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzg1MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTA2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcG9ydHMgYSBjb3B5IG9mIFRyaXN0YW4gQnJpbmRsZSdz
IEJvb3N0IGxpY2Vuc2VkIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6c3BhbiAKKyAgICAgICAgZnJv
bSA1ZDhkMzY2ZWNhOTE4ZDBlZDNkMmQxOTZjYmVhZTZhYmZkODc0NzM2IG9mIGh0dHBzOi8vZ2l0
aHViLmNvbS90Y2JyaW5kbGUvc3Bhbi4KKworICAgICAgICBJdCBoYXMgYmVlbiBmdXJ0aGVyIG1v
ZGlmaWVkIHRvIHJlbmFtZSB0Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgorCisgICAgICAgICogTElD
RU5TRV8xXzAtQm9vc3QudHh0OiBBZGRlZC4KKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3Rm
L1NwYW4uaDogQWRkZWQuCisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoKSBzaG91bGQgcmV0dXJu
IGRhdGEgYXMgYHZvaWQqYApJbmRleDogU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29zdC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29zdC50eHQJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29zdC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyMyBAQAorQm9vc3QgU29mdHdhcmUgTGljZW5zZSAtIFZlcnNpb24gMS4wIC0g
QXVndXN0IDE3dGgsIDIwMDMKKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb3Igb3JnYW5pemF0aW9uCitvYnRhaW5pbmcgYSBjb3B5
IG9mIHRoZSBzb2Z0d2FyZSBhbmQgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gY292ZXJlZCBi
eQordGhpcyBsaWNlbnNlICh0aGUgIlNvZnR3YXJlIikgdG8gdXNlLCByZXByb2R1Y2UsIGRpc3Bs
YXksIGRpc3RyaWJ1dGUsCitleGVjdXRlLCBhbmQgdHJhbnNtaXQgdGhlIFNvZnR3YXJlLCBhbmQg
dG8gcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZQorU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgdGhpcmQtcGFydGllcyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8KK2Rv
IHNvLCBhbGwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nOgorCitUaGUgY29weXJpZ2h0IG5vdGlj
ZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlzIGVudGlyZSBzdGF0ZW1lbnQsIGluY2x1ZGluZwor
dGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQsIHRoaXMgcmVzdHJpY3Rpb24gYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciwKK211c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIGFuZAorYWxsIGRlcml2YXRpdmUgd29ya3Mgb2Yg
dGhlIFNvZnR3YXJlLCB1bmxlc3Mgc3VjaCBjb3BpZXMgb3IgZGVyaXZhdGl2ZQord29ya3MgYXJl
IHNvbGVseSBpbiB0aGUgZm9ybSBvZiBtYWNoaW5lLWV4ZWN1dGFibGUgb2JqZWN0IGNvZGUgZ2Vu
ZXJhdGVkIGJ5CithIHNvdXJjZSBsYW5ndWFnZSBwcm9jZXNzb3IuCisKK1RIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBU
SVRMRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQKK1NIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBPUiBBTllPTkUgRElTVFJJQlVUSU5HIFRIRSBTT0ZUV0FSRSBCRSBMSUFCTEUK
K0ZPUiBBTlkgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLAorQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCitERUFMSU5HUyBJTiBUSEUg
U09GVFdBUkUuCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3ODQ1NykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1Myw4ICs2NTMsOCBAQAogCQlBOEE0NzMyMjE1MUE4
MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzIzMTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RyaW5nQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3
MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlBOEE0NzMyNTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNFRSAvKiBTdHJp
bmdCdWlsZGVySW50ZXJuYWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmluZ0J1aWxkZXJJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThB
NDczMjUxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzMyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29uY2F0ZW5hdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjcxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
cmluZ0hhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSGFzaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyODE1MUE4MjVCMDA0MTIzRkYg
LyogU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5MCw2ICs2OTAs
NyBAQAogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURG
MkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUZvb3Rw
cmludENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMzBDN0YyNjZE
MzAzNDAwMEQyMzBDIC8qIFNwYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Bhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRTFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRjFGNjFEMTMwMDBDOTIyMkMgLyog
TGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFuZ3VhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8q
IExhbmd1YWdlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFu
Z3VhZ2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjU1LDYgKzEyNTYs
NyBAQAogCQkJCUEzMEQ0MTJEMUYwREUxM0YwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAog
CQkJCTkzMTU2QzhEMjYyQzk4MjIwMEVBRTI3QiAvKiBTb3J0ZWRBcnJheU1hcC5oICovLAogCQkJ
CTc5MDM4RTA1MjI0QjA1QTcwMDRDMDczOCAvKiBTcGFubmluZ1RyZWUuaCAqLywKKwkJCQlCQ0Ez
MEM3RjI2NkQzMDM0MDAwRDIzMEMgLyogU3Bhbi5oICovLAogCQkJCUE4QTQ3MzBEMTUxQTgyNUIw
MDQxMjNGRiAvKiBTcGVjdHJ1bS5oICovLAogCQkJCUE4QTQ3MzBFMTUxQTgyNUIwMDQxMjNGRiAv
KiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJQThBNDczMEYxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
YWNrQm91bmRzLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4NDU3
KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIz
OSw2ICsyMzksNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU21hbGxTZXQuaAogICAg
IFNvZnRMaW5raW5nLmgKICAgICBTb3J0ZWRBcnJheU1hcC5oCisgICAgU3Bhbi5oCiAgICAgU3Bh
bm5pbmdUcmVlLmgKICAgICBTcGVjdHJ1bS5oCiAgICAgU3RhY2tCb3VuZHMuaApJbmRleDogU291
cmNlL1dURi93dGYvU3Bhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TcGFuLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MjAgQEAKKy8vICAgICAgICAgIENvcHlyaWdodCBUcmlzdGFuIEJyaW5kbGUgMjAx
OC4KKy8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJz
aW9uIDEuMC4KKy8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgLi4vLi4vTElDRU5TRV8xXzAt
Qm9vc3QudHh0IG9yIGNvcHkgYXQKKy8vICAgICAgICAgIGh0dHBzOi8vd3d3LmJvb3N0Lm9yZy9M
SUNFTlNFXzFfMC50eHQpCisKKy8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgQysrMjAn
cyBzdGQ6OnNwYW4gaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9w
YXBlcnMvMjAxOS9uNDgyMC5wZGYKKworLy8gVGhpcyBoYXMgYmVlbiBtb2RpZmllZCBmcm9tIHRo
ZSBvcmlnaW5hbCB2ZXJzaW9uIHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorLy8gICBS
ZW5hbWVkIHRjYjo6c3BhbiB0byBXVEY6OlNwYW4uCisvLyAgIFJlbmFtZWQgdGNiOjphc19ieXRl
cyB0byBXVEY6OmFzQnl0ZXMuCisvLyAgIFJlbmFtZWQgdGNiOjphc193cml0YWJsZV9ieXRlcyB0
byBXVEY6OmFzV3JpdGFibGVCeXRlcy4KKworI2lmbmRlZiBUQ0JfU1BBTl9IUFBfSU5DTFVERUQK
KyNkZWZpbmUgVENCX1NQQU5fSFBQX0lOQ0xVREVECisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNs
dWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisKKyNpZm5kZWYgVENCX1NQQU5fTk9fRVhDRVBUSU9OUworLy8gQXR0ZW1wdCB0byBkaXNjb3Zl
ciB3aGV0aGVyIHdlJ3JlIGJlaW5nIGNvbXBpbGVkIHdpdGggZXhjZXB0aW9uIHN1cHBvcnQKKyNp
ZiAhKGRlZmluZWQoX19jcHBfZXhjZXB0aW9ucykgfHwgZGVmaW5lZChfX0VYQ0VQVElPTlMpIHx8
IGRlZmluZWQoX0NQUFVOV0lORCkpCisjZGVmaW5lIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKKyNl
bmRpZgorI2VuZGlmCisKKyNpZm5kZWYgVENCX1NQQU5fTk9fRVhDRVBUSU9OUworI2luY2x1ZGUg
PGNzdGRpbz4KKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisjZW5kaWYKKworLy8gVmFyaW91cyBmZWF0
dXJlIHRlc3QgbWFjcm9zCisKKyNpZm5kZWYgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUKKyNkZWZp
bmUgVENCX1NQQU5fTkFNRVNQQUNFX05BTUUgV1RGCisjZW5kaWYKKworI2lmIF9fY3BsdXNwbHVz
ID49IDIwMTcwM0wgfHwgKGRlZmluZWQoX01TVkNfTEFORykgJiYgX01TVkNfTEFORyA+PSAyMDE3
MDNMKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NQUDE3CisjZW5kaWYKKworI2lmIF9fY3BsdXNw
bHVzID49IDIwMTQwMkwgfHwgKGRlZmluZWQoX01TVkNfTEFORykgJiYgX01TVkNfTEFORyA+PSAy
MDE0MDJMKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NQUDE0CisjZW5kaWYKKworbmFtZXNwYWNl
IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIHsKKworLy8gRXN0YWJsaXNoIGRlZmF1bHQgY29udHJh
Y3QgY2hlY2tpbmcgYmVoYXZpb3IKKyNpZiAhZGVmaW5lZChUQ0JfU1BBTl9USFJPV19PTl9DT05U
UkFDVF9WSU9MQVRJT04pICYmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIWRlZmlu
ZWQoVENCX1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNUX1ZJT0xBVElPTikgJiYgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICFkZWZpbmVkKFRDQl9TUEFOX05PX0NPTlRSQUNUX0NIRUNLSU5H
KQorI2lmIGRlZmluZWQoTkRFQlVHKSB8fCAhZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE0KQor
I2RlZmluZSBUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORworI2Vsc2UKKyNkZWZpbmUgVENC
X1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNUX1ZJT0xBVElPTgorI2VuZGlmCisjZW5kaWYKKwor
I2lmIGRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09OVFJBQ1RfVklPTEFUSU9OKQorc3RydWN0
IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvciA6IHN0ZDo6bG9naWNfZXJyb3IgeworICAgIGV4cGxp
Y2l0IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJvcihjb25zdCBjaGFyKiBtc2cpIDogc3RkOjpsb2dp
Y19lcnJvcihtc2cpCisgICAge30KK307CisKK2lubGluZSB2b2lkIGNvbnRyYWN0X3Zpb2xhdGlv
bihjb25zdCBjaGFyKiBtc2cpCit7CisgICAgdGhyb3cgY29udHJhY3RfdmlvbGF0aW9uX2Vycm9y
KG1zZyk7Cit9CisKKyNlbGlmIGRlZmluZWQoVENCX1NQQU5fVEVSTUlOQVRFX09OX0NPTlRSQUNU
X1ZJT0xBVElPTikKK1tbbm9yZXR1cm5dXSBpbmxpbmUgdm9pZCBjb250cmFjdF92aW9sYXRpb24o
Y29uc3QgY2hhciogLyp1bnVzZWQqLykKK3sKKyAgICBzdGQ6OnRlcm1pbmF0ZSgpOworfQorI2Vu
ZGlmCisKKyNpZiAhZGVmaW5lZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lORykKKyNkZWZp
bmUgVENCX1NQQU5fU1RSSU5HSUZZKGNvbmQpICNjb25kCisjZGVmaW5lIFRDQl9TUEFOX0VYUEVD
VChjb25kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGNvbmQgPyAodm9pZCkgMCA6IGNvbnRyYWN0X3Zpb2xhdGlvbigiRXhwZWN0ZWQgIiBU
Q0JfU1BBTl9TVFJJTkdJRlkoY29uZCkpCisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9FWFBFQ1Qo
Y29uZCkKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZp
bmVkKF9fY3BwX2lubGluZV92YXJpYWJsZXMpCisjZGVmaW5lIFRDQl9TUEFOX0lOTElORV9WQVIg
aW5saW5lCisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9JTkxJTkVfVkFSCisjZW5kaWYKKworI2lm
IGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoZGVmaW5lZChfX2NwcF9jb25zdGV4cHIpICYmIF9f
Y3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQpCisjZGVmaW5lIFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09O
U1RFWFBSCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNF9DT05TVEVY
UFIpCisjZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjE0IGNvbnN0ZXhwcgorI2Vsc2UKKyNkZWZp
bmUgVENCX1NQQU5fQ09OU1RFWFBSMTQKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9I
QVZFX0NQUDE0X0NPTlNURVhQUikgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICghZGVmaW5lZChfTVNDX1ZFUikgfHwgX01TQ19WRVIgPiAxOTAwKQorI2RlZmluZSBU
Q0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOIGNvbnN0ZXhwcgorI2Vsc2UKKyNkZWZpbmUgVENCX1NQ
QU5fQ09OU1RFWFBSX0FTU0lHTgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX05PX0NP
TlRSQUNUX0NIRUNLSU5HKQorI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxMSBjb25zdGV4cHIK
KyNlbHNlCisjZGVmaW5lIFRDQl9TUEFOX0NPTlNURVhQUjExIFRDQl9TUEFOX0NPTlNURVhQUjE0
CisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChf
X2NwcF9kZWR1Y3Rpb25fZ3VpZGVzKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9H
VUlERVMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCBkZWZp
bmVkKF9fY3BwX2xpYl9ieXRlKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX1NURF9CWVRFCisjZW5k
aWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9s
aWJfYXJyYXlfY29uc3RleHByKQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NPTlNURVhQUl9TVERf
QVJSQVlfRVRDCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DT05TVEVYUFJf
U1REX0FSUkFZX0VUQykKKyNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIGNvbnN0ZXhw
cgorI2Vsc2UKKyNkZWZpbmUgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSCisjZW5kaWYKKworI2lm
ZGVmIFRDQl9TUEFOX0hBVkVfU1REX0JZVEUKK3VzaW5nIGJ5dGUgPSBzdGQ6OmJ5dGU7CisjZWxz
ZQordXNpbmcgYnl0ZSA9IHVuc2lnbmVkIGNoYXI7CisjZW5kaWYKKworI2lmIGRlZmluZWQoVENC
X1NQQU5fSEFWRV9DUFAxNykKKyNkZWZpbmUgVENCX1NQQU5fTk9ESVNDQVJEIFtbbm9kaXNjYXJk
XV0KKyNlbHNlCisjZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRAorI2VuZGlmCisKK1RDQl9TUEFO
X0lOTElORV9WQVIgY29uc3RleHByIHN0ZDo6c2l6ZV90IGR5bmFtaWNfZXh0ZW50ID0gU0laRV9N
QVg7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50
ID0gZHluYW1pY19leHRlbnQ+CitjbGFzcyBTcGFuOworCituYW1lc3BhY2UgZGV0YWlsIHsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+CitzdHJ1Y3Qgc3Bhbl9zdG9yYWdl
IHsKKyAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKCkgbm9leGNlcHQgPSBkZWZhdWx0OworCisg
ICAgY29uc3RleHByIHNwYW5fc3RvcmFnZShFKiBwX3B0ciwgc3RkOjpzaXplX3QgLyp1bnVzZWQq
Lykgbm9leGNlcHQKKyAgICAgICA6IHB0cihwX3B0cikKKyAgICB7fQorCisgICAgRSogcHRyID0g
bnVsbHB0cjsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c2l6ZV90IHNpemUgPSBTOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEU+CitzdHJ1Y3Qgc3Bhbl9zdG9yYWdlPEUsIGR5bmFtaWNf
ZXh0ZW50PiB7CisgICAgY29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5vZXhjZXB0ID0gZGVmYXVs
dDsKKworICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IHBf
c2l6ZSkgbm9leGNlcHQKKyAgICAgICAgOiBwdHIocF9wdHIpLCBzaXplKHBfc2l6ZSkKKyAgICB7
fQorCisgICAgRSogcHRyID0gbnVsbHB0cjsKKyAgICBzdGQ6OnNpemVfdCBzaXplID0gMDsKK307
CisKKy8vIFJlaW1wbGVtZW50YXRpb24gb2YgQysrMTcgc3RkOjpzaXplKCkgYW5kIHN0ZDo6ZGF0
YSgpCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9IQVZFX0NQUDE3KSB8fCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRlZmluZWQoX19jcHBfbGliX25vbm1l
bWJlcl9jb250YWluZXJfYWNjZXNzKQordXNpbmcgc3RkOjpkYXRhOwordXNpbmcgc3RkOjpzaXpl
OworI2Vsc2UKK3RlbXBsYXRlIDxjbGFzcyBDPgorY29uc3RleHByIGF1dG8gc2l6ZShjb25zdCBD
JiBjKSAtPiBkZWNsdHlwZShjLnNpemUoKSkKK3sKKyAgICByZXR1cm4gYy5zaXplKCk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgorY29uc3RleHByIHN0ZDo6c2l6ZV90
IHNpemUoY29uc3QgVCAoJilbTl0pIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIE47Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBDPgorY29uc3RleHByIGF1dG8gZGF0YShDJiBjKSAtPiBkZWNsdHlwZShj
LmRhdGEoKSkKK3sKKyAgICByZXR1cm4gYy5kYXRhKCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBD
PgorY29uc3RleHByIGF1dG8gZGF0YShjb25zdCBDJiBjKSAtPiBkZWNsdHlwZShjLmRhdGEoKSkK
K3sKKyAgICByZXR1cm4gYy5kYXRhKCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNp
emVfdCBOPgorY29uc3RleHByIFQqIGRhdGEoVCAoJmFycmF5KVtOXSkgbm9leGNlcHQKK3sKKyAg
ICByZXR1cm4gYXJyYXk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBFPgorY29uc3RleHByIGNvbnN0
IEUqIGRhdGEoc3RkOjppbml0aWFsaXplcl9saXN0PEU+IGlsKSBub2V4Y2VwdAoreworICAgIHJl
dHVybiBpbC5iZWdpbigpOworfQorI2VuZGlmIC8vIFRDQl9TUEFOX0hBVkVfQ1BQMTcKKworI2lm
IGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVmaW5lZChfX2NwcF9saWJfdm9pZF90
KQordXNpbmcgc3RkOjp2b2lkX3Q7CisjZWxzZQordGVtcGxhdGUgPHR5cGVuYW1lLi4uPgordXNp
bmcgdm9pZF90ID0gdm9pZDsKKyNlbmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5n
IHVuY3ZyZWZfdCA9CisgICAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPjo6dHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lPgor
c3RydWN0IGlzX3NwYW4gOiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzdGQ6OnNpemVfdCBTPgorc3RydWN0IGlzX3NwYW48U3BhbjxULCBTPj4gOiBzdGQ6OnRy
dWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lPgorc3RydWN0IGlzX3N0ZF9hcnJheSA6
IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90
IE4+CitzdHJ1Y3QgaXNfc3RkX2FycmF5PHN0ZDo6YXJyYXk8VCwgTj4+IDogc3RkOjp0cnVlX3R5
cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgorc3RydWN0IGhh
c19zaXplX2FuZF9kYXRhIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0cnVjdCBoYXNfc2l6ZV9hbmRfZGF0YTxULCB2b2lkX3Q8ZGVjbHR5cGUoZGV0YWls
OjpzaXplKHN0ZDo6ZGVjbHZhbDxUPigpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkpPj4KKyAgICA6
IHN0ZDo6dHJ1ZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgVSA9
IHVuY3ZyZWZfdDxDPj4KK3N0cnVjdCBpc19jb250YWluZXIgeworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2YWx1ZSA9CisgICAgICAgICFpc19zcGFuPFU+Ojp2YWx1ZSAmJiAhaXNfc3RkX2Fy
cmF5PFU+Ojp2YWx1ZSAmJgorICAgICAgICAhc3RkOjppc19hcnJheTxVPjo6dmFsdWUgJiYgaGFz
X3NpemVfYW5kX2RhdGE8Qz46OnZhbHVlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1
c2luZyByZW1vdmVfcG9pbnRlcl90ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPgor
c3RydWN0IGlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZSA6IHN0ZDo6ZmFsc2Vf
dHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+CitzdHJ1Y3QgaXNf
Y29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAgIFQsIEUsCisgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8ZGVjbHR5cGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZGF0
YShzdGQ6OmRlY2x2YWw8VD4oKSkpPjo6dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICB2b2lk
Pjo6dmFsdWU+Ojp0eXBlPgorICAgIDogc3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICBy
ZW1vdmVfcG9pbnRlcl90PGRlY2x0eXBlKGRldGFpbDo6ZGF0YShzdGQ6OmRlY2x2YWw8VD4oKSkp
PiAoKilbXSwKKyAgICAgICAgICBFICgqKVtdPiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHNpemVfdD4KK3N0cnVjdCBpc19jb21wbGV0ZSA6IHN0ZDo6ZmFsc2VfdHlwZSB7
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfY29tcGxldGU8VCwgZGVjbHR5
cGUoc2l6ZW9mKFQpKT4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKKworfSAvLyBuYW1lc3BhY2UgZGV0
YWlsCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50
PgorY2xhc3MgU3BhbiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX29iamVjdDxFbGVtZW50
VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1lbnRUeXBlIG11
c3QgYmUgYW4gb2JqZWN0IHR5cGUgKG5vdCBhICIKKyAgICAgICAgICAgICAgICAgICJyZWZlcmVu
Y2UgdHlwZSBvciB2b2lkKSIpOworICAgIHN0YXRpY19hc3NlcnQoZGV0YWlsOjppc19jb21wbGV0
ZTxFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkEgU3BhbidzIEVsZW1l
bnRUeXBlIG11c3QgYmUgYSBjb21wbGV0ZSB0eXBlIChub3QgYSBmb3J3YXJkICIKKyAgICAgICAg
ICAgICAgICAgICJkZWNsYXJhdGlvbikiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Fi
c3RyYWN0PEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAiQSBTcGFuJ3Mg
RWxlbWVudFR5cGUgY2Fubm90IGJlIGFuIGFic3RyYWN0IGNsYXNzIHR5cGUiKTsKKworICAgIHVz
aW5nIHN0b3JhZ2VfdHlwZSA9IGRldGFpbDo6c3Bhbl9zdG9yYWdlPEVsZW1lbnRUeXBlLCBFeHRl
bnQ+OworCitwdWJsaWM6CisgICAgLy8gY29uc3RhbnRzIGFuZCB0eXBlcworICAgIHVzaW5nIGVs
ZW1lbnRfdHlwZSA9IEVsZW1lbnRUeXBlOworICAgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjxFbGVtZW50VHlwZT46OnR5cGU7CisgICAgdXNpbmcgc2l6ZV90eXBl
ID0gc3RkOjpzaXplX3Q7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjpwdHJkaWZm
X3Q7CisgICAgdXNpbmcgcG9pbnRlciA9IGVsZW1lbnRfdHlwZSo7CisgICAgdXNpbmcgY29uc3Rf
cG9pbnRlciA9IGNvbnN0IGVsZW1lbnRfdHlwZSo7CisgICAgdXNpbmcgcmVmZXJlbmNlID0gZWxl
bWVudF90eXBlJjsKKyAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBlbGVtZW50X3R5
cGUmOworICAgIHVzaW5nIGl0ZXJhdG9yID0gcG9pbnRlcjsKKyAgICB1c2luZyByZXZlcnNlX2l0
ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPjsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90eXBlIGV4dGVudCA9IEV4dGVudDsKKworICAgIC8vIFtzcGFuLmNvbnNd
LCBTcGFuIGNvbnN0cnVjdG9ycywgY29weSwgYXNzaWdubWVudCwgYW5kIGRlc3RydWN0b3IKKyAg
ICB0ZW1wbGF0ZSA8CisgICAgICAgIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAgIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPChFID09IGR5bmFtaWNfZXh0ZW50IHx8IEUgPD0gMCksIGlu
dD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKCkgbm9leGNlcHQKKyAgICB7fQorCisg
ICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bhbihwb2ludGVyIHB0ciwgc2l6ZV90eXBlIGNvdW50
KQorICAgICAgICA6IHN0b3JhZ2VfKHB0ciwgY291bnQpCisgICAgeworICAgICAgICBUQ0JfU1BB
Tl9FWFBFQ1QoZXh0ZW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IGNvdW50ID09IGV4dGVudCk7Cisg
ICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bhbihwb2ludGVyIGZpcnN0X2VsZW0s
IHBvaW50ZXIgbGFzdF9lbGVtKQorICAgICAgICA6IHN0b3JhZ2VfKGZpcnN0X2VsZW0sIGxhc3Rf
ZWxlbSAtIGZpcnN0X2VsZW0pCisgICAgeworICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoZXh0ZW50
ID09IGR5bmFtaWNfZXh0ZW50IHx8CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2VsZW0g
LSBmaXJzdF9lbGVtID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
c3RkOjpwdHJkaWZmX3Q+KGV4dGVudCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxzdGQ6OnNp
emVfdCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAgICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8
IE4gPT0gRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9l
bGVtZW50X3R5cGVfY29tcGF0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dF90eXBlICgmKVtOXSwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgIGlu
dD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKGVsZW1lbnRfdHlwZSAoJmFycilbTl0p
IG5vZXhjZXB0IDogc3RvcmFnZV8oYXJyLCBOKQorICAgIHt9CisKKyAgICB0ZW1wbGF0ZSA8c3Rk
OjpzaXplX3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAoRSA9PSBkeW5hbWljX2V4dGVu
dCB8fCBOID09IEUpICYmCisgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWlu
ZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgaW50Pjo6dHlwZSA9IDA+CisgICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNw
YW4oc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYgYXJyKSBub2V4Y2VwdAorICAgICAgICA6IHN0
b3JhZ2VfKGFyci5kYXRhKCksIE4pCisgICAge30KKworICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVf
dCBOLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAgIChFID09IGR5bmFtaWNfZXh0ZW50IHx8IE4g
PT0gRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVt
ZW50X3R5cGVfY29tcGF0aWJsZTwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjphcnJheTx2YWx1ZV90eXBlLCBOPiYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAg
ICAgICAgICBpbnQ+Ojp0eXBlID0gMD4KKyAgICBUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3Bh
bihjb25zdCBzdGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiBhcnIpIG5vZXhjZXB0CisgICAgICAg
IDogc3RvcmFnZV8oYXJyLmRhdGEoKSwgTikKKyAgICB7fQorCisgICAgdGVtcGxhdGUgPAorICAg
ICAgICB0eXBlbmFtZSBDb250YWluZXIsIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVu
dCAmJiBkZXRhaWw6OmlzX2NvbnRhaW5lcjxDb250YWluZXI+Ojp2YWx1ZSAmJgorICAgICAgICAg
ICAgICAgIGRldGFpbDo6aXNfY29udGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAg
ICAgICAgICAgICAgICAgICBDb250YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAg
ICAgICAgaW50Pjo6dHlwZSA9IDA+CisgICAgY29uc3RleHByIFNwYW4oQ29udGFpbmVyJiBjb250
KQorICAgICAgICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNv
bnQpKQorICAgIHt9CisKKyAgICB0ZW1wbGF0ZSA8CisgICAgICAgIHR5cGVuYW1lIENvbnRhaW5l
ciwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8CisgICAgICAgICAgICBFID09IGR5bmFtaWNfZXh0ZW50ICYmIGRldGFpbDo6aXNfY29udGFp
bmVyPENvbnRhaW5lcj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250
YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENvbnRhaW5lciYsIEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICBpbnQ+Ojp0eXBl
ID0gMD4KKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBDb250YWluZXImIGNvbnQpCisgICAgICAg
IDogc3RvcmFnZV8oZGV0YWlsOjpkYXRhKGNvbnQpLCBkZXRhaWw6OnNpemUoY29udCkpCisgICAg
e30KKworICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRl
ZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXJFbGVtZW50VHlwZSwgc3RkOjpz
aXplX3QgT3RoZXJFeHRlbnQsCisgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PAorICAgICAgICAgICAgICAgICAgKEV4dGVudCA9PSBPdGhlckV4dGVudCB8fCBFeHRlbnQgPT0g
ZHluYW1pY19leHRlbnQpICYmCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19jb252ZXJ0
aWJsZTxPdGhlckVsZW1lbnRUeXBlICgqKVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWxlbWVudFR5cGUgKCopW10+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgIGludD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKGNvbnN0IFNwYW48T3RoZXJF
bGVtZW50VHlwZSwgT3RoZXJFeHRlbnQ+JiBvdGhlcikgbm9leGNlcHQKKyAgICAgICAgOiBzdG9y
YWdlXyhvdGhlci5kYXRhKCksIG90aGVyLnNpemUoKSkKKyAgICB7fQorCisgICAgflNwYW4oKSBu
b2V4Y2VwdCA9IGRlZmF1bHQ7CisKKyAgICBUQ0JfU1BBTl9DT05TVEVYUFJfQVNTSUdOIFNwYW4m
CisgICAgb3BlcmF0b3I9KGNvbnN0IFNwYW4mIG90aGVyKSBub2V4Y2VwdCA9IGRlZmF1bHQ7CisK
KyAgICAvLyBbc3Bhbi5zdWJdLCBzcGFuIHN1YnZpZXdzCisgICAgdGVtcGxhdGUgPHN0ZDo6c2l6
ZV90IENvdW50PgorICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW48ZWxlbWVudF90eXBlLCBD
b3VudD4gZmlyc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKENvdW50
IDw9IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgpLCBDb3VudH07CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENvdW50PgorICAgIFRDQl9TUEFOX0NPTlNURVhQUjEx
IFNwYW48ZWxlbWVudF90eXBlLCBDb3VudD4gbGFzdCgpIGNvbnN0CisgICAgeworICAgICAgICBU
Q0JfU1BBTl9FWFBFQ1QoQ291bnQgPD0gc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkg
KyAoc2l6ZSgpIC0gQ291bnQpLCBDb3VudH07CisgICAgfQorCisgICAgdGVtcGxhdGUgPHN0ZDo6
c2l6ZV90IE9mZnNldCwgc3RkOjpzaXplX3QgQ291bnQgPSBkeW5hbWljX2V4dGVudD4KKyAgICB1
c2luZyBzdWJzcGFuX3JldHVybl90ID0KKyAgICAgICAgU3BhbjxFbGVtZW50VHlwZSwgQ291bnQg
IT0gZHluYW1pY19leHRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQ291bnQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKEV4dGVudCAhPSBkeW5hbWljX2V4dGVu
dCA/IEV4dGVudCAtIE9mZnNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogZHluYW1pY19leHRlbnQpPjsKKworICAgIHRlbXBsYXRl
IDxzdGQ6OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6ZV90IENvdW50ID0gZHluYW1pY19leHRlbnQ+
CisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgc3Vic3Bhbl9yZXR1cm5fdDxPZmZzZXQsIENvdW50
PiBzdWJzcGFuKCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VYUEVDVChPZmZzZXQg
PD0gc2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnQgPT0gZHluYW1pY19l
eHRlbnQgfHwgT2Zmc2V0ICsgQ291bnQgPD0gc2l6ZSgpKSk7CisgICAgICAgIHJldHVybiB7ZGF0
YSgpICsgT2Zmc2V0LAorICAgICAgICAgICAgICAgIENvdW50ICE9IGR5bmFtaWNfZXh0ZW50ID8g
Q291bnQgOiBzaXplKCkgLSBPZmZzZXR9OworICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNURVhQ
UjExIFNwYW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KKyAgICBmaXJzdChzaXplX3R5
cGUgY291bnQpIGNvbnN0CisgICAgeworICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoY291bnQgPD0g
c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCksIGNvdW50fTsKKyAgICB9CisKKyAgICBU
Q0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+Cisg
ICAgbGFzdChzaXplX3R5cGUgY291bnQpIGNvbnN0CisgICAgeworICAgICAgICBUQ0JfU1BBTl9F
WFBFQ1QoY291bnQgPD0gc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyAoc2l6ZSgp
IC0gY291bnQpLCBjb3VudH07CisgICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgU3Bh
bjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50PgorICAgIHN1YnNwYW4oc2l6ZV90eXBlIG9m
ZnNldCwgc2l6ZV90eXBlIGNvdW50ID0gZHluYW1pY19leHRlbnQpIGNvbnN0CisgICAgeworICAg
ICAgICBUQ0JfU1BBTl9FWFBFQ1Qob2Zmc2V0IDw9IHNpemUoKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgKGNvdW50ID09IGR5bmFtaWNfZXh0ZW50IHx8IG9mZnNldCArIGNvdW50IDw9IHNp
emUoKSkpOworICAgICAgICByZXR1cm4ge2RhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICBjb3VudCA9PSBkeW5hbWljX2V4dGVudCA/IHNpemUoKSAtIG9mZnNldCA6IGNvdW50fTsKKyAg
ICB9CisKKyAgICAvLyBbc3Bhbi5vYnNdLCBzcGFuIG9ic2VydmVycworICAgIGNvbnN0ZXhwciBz
aXplX3R5cGUgc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHN0b3JhZ2VfLnNpemU7IH0K
KworICAgIGNvbnN0ZXhwciBzaXplX3R5cGUgc2l6ZV9ieXRlcygpIGNvbnN0IG5vZXhjZXB0Cisg
ICAgeworICAgICAgICByZXR1cm4gc2l6ZSgpICogc2l6ZW9mKGVsZW1lbnRfdHlwZSk7CisgICAg
fQorCisgICAgVENCX1NQQU5fTk9ESVNDQVJEIGNvbnN0ZXhwciBib29sIGVtcHR5KCkgY29uc3Qg
bm9leGNlcHQKKyAgICB7CisgICAgICAgIHJldHVybiBzaXplKCkgPT0gMDsKKyAgICB9CisKKyAg
ICAvLyBbc3Bhbi5lbGVtXSwgc3BhbiBlbGVtZW50IGFjY2VzcworICAgIFRDQl9TUEFOX0NPTlNU
RVhQUjExIHJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBpZHgpIGNvbnN0CisgICAgewor
ICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoaWR4IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuICoo
ZGF0YSgpICsgaWR4KTsKKyAgICB9CisKKyAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSByZWZlcmVu
Y2UgZnJvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKCFlbXB0eSgp
KTsKKyAgICAgICAgcmV0dXJuICpkYXRhKCk7CisgICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RF
WFBSMTEgcmVmZXJlbmNlIGJhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQ
RUNUKCFlbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuICooZGF0YSgpICsgKHNpemUoKSAtIDEpKTsK
KyAgICB9CisKKyAgICBjb25zdGV4cHIgcG9pbnRlciBkYXRhKCkgY29uc3Qgbm9leGNlcHQgeyBy
ZXR1cm4gc3RvcmFnZV8ucHRyOyB9CisKKyAgICAvLyBbc3Bhbi5pdGVyYXRvcnNdLCBzcGFuIGl0
ZXJhdG9yIHN1cHBvcnQKKyAgICBjb25zdGV4cHIgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBub2V4
Y2VwdCB7IHJldHVybiBkYXRhKCk7IH0KKworICAgIGNvbnN0ZXhwciBpdGVyYXRvciBlbmQoKSBj
b25zdCBub2V4Y2VwdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KKworICAgIFRDQl9TUEFO
X0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IG5vZXhjZXB0
CisgICAgeworICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7CisgICAgfQor
CisgICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNv
bnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RvcmFnZV90eXBlIHN0b3JhZ2Vfe307Cit9
OworCisjaWZkZWYgVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCisKKy8qIERlZHVjdGlv
biBHdWlkZXMgKi8KK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTj4KK1NwYW4oVCAoJilbTl0p
LT5TcGFuPFQsIE4+OworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitTcGFuKHN0ZDo6
YXJyYXk8VCwgTj4mKS0+U3BhbjxULCBOPjsKKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBO
PgorU3Bhbihjb25zdCBzdGQ6OmFycmF5PFQsIE4+JiktPlNwYW48Y29uc3QgVCwgTj47CisKK3Rl
bXBsYXRlIDxjbGFzcyBDb250YWluZXI+CitTcGFuKENvbnRhaW5lciYpLT5TcGFuPHR5cGVuYW1l
IENvbnRhaW5lcjo6dmFsdWVfdHlwZT47CisKK3RlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+CitT
cGFuKGNvbnN0IENvbnRhaW5lciYpLT5TcGFuPGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFs
dWVfdHlwZT47CisKKyNlbmRpZiAvLyBUQ0JfU1BBTl9IQVZFX0RFRFVDVElPTl9HVUlERVMKKwor
I2lmZGVmIFRDQl9TUEFOX0lOQ0xVREVfTUFLRV9TUEFOCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50PgorY29uc3RleHByIFNwYW48RWxlbWVudFR5
cGUsIEV4dGVudD4KK21ha2Vfc3BhbihTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhj
ZXB0Cit7CisgICAgcmV0dXJuIHM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNp
emVfdCBOPgorY29uc3RleHByIFNwYW48VCwgTj4gbWFrZV9zcGFuKFQgKCZhcnIpW05dKSBub2V4
Y2VwdAoreworICAgIHJldHVybiB7YXJyfTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0
ZDo6c2l6ZV90IE4+CitUQ0JfU1BBTl9BUlJBWV9DT05TVEVYUFIgU3BhbjxULCBOPiBtYWtlX3Nw
YW4oc3RkOjphcnJheTxULCBOPiYgYXJyKSBub2V4Y2VwdAoreworICAgIHJldHVybiB7YXJyfTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+CitUQ0JfU1BBTl9BUlJB
WV9DT05TVEVYUFIgU3Bhbjxjb25zdCBULCBOPgorbWFrZV9zcGFuKGNvbnN0IHN0ZDo6YXJyYXk8
VCwgTj4mIGFycikgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge2Fycn07Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDb250YWluZXI+Citjb25zdGV4cHIgU3Bhbjx0eXBlbmFtZSBDb250YWluZXI6
OnZhbHVlX3R5cGU+IG1ha2Vfc3BhbihDb250YWluZXImIGNvbnQpCit7CisgICAgcmV0dXJuIHtj
b250fTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KK2NvbnN0ZXhwciBTcGFu
PGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4KK21ha2Vfc3Bhbihjb25zdCBD
b250YWluZXImIGNvbnQpCit7CisgICAgcmV0dXJuIHtjb250fTsKK30KKyNlbmRpZiAvLyBUQ0Jf
U1BBTl9JTkNMVURFX01BS0VfU1BBTgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUs
IHN0ZDo6c2l6ZV90IEV4dGVudD4KK1NwYW48Y29uc3QgYnl0ZSwgKChFeHRlbnQgPT0gZHluYW1p
Y19leHRlbnQpID8gZHluYW1pY19leHRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogc2l6ZW9mKEVsZW1lbnRUeXBlKSAqIEV4dGVudCk+Cithc0J5dGVz
KFNwYW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge3Jl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnl0ZSo+KHMuZGF0YSgpKSwgcy5zaXplX2J5dGVzKCl9Owor
fQorCit0ZW1wbGF0ZSA8CisgICAgY2xhc3MgRWxlbWVudFR5cGUsIHNpemVfdCBFeHRlbnQsCisg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfY29uc3Q8RWxlbWVudFR5cGU+Ojp2
YWx1ZSwgaW50Pjo6dHlwZSA9IDA+CitTcGFuPGJ5dGUsICgoRXh0ZW50ID09IGR5bmFtaWNfZXh0
ZW50KSA/IGR5bmFtaWNfZXh0ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgorYXNXcml0YWJsZUJ5dGVzKFNw
YW48RWxlbWVudFR5cGUsIEV4dGVudD4gcykgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge3JlaW50
ZXJwcmV0X2Nhc3Q8Ynl0ZSo+KHMuZGF0YSgpKSwgcy5zaXplX2J5dGVzKCl9OworfQorCit0ZW1w
bGF0ZSA8c3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgRSwgc3RkOjpzaXplX3QgUz4KK2NvbnN0ZXhw
ciBhdXRvIGdldChTcGFuPEUsIFM+IHMpIC0+IGRlY2x0eXBlKHNbTl0pCit7CisgICAgcmV0dXJu
IHNbTl07Cit9CisKK30gLy8gbmFtZXNwYWNlIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FCisKK25h
bWVzcGFjZSBzdGQgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHNpemVfdCBF
eHRlbnQ+CitjbGFzcyB0dXBsZV9zaXplPFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpTcGFuPEVs
ZW1lbnRUeXBlLCBFeHRlbnQ+PgorICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVf
dCwgRXh0ZW50PiB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgorY2xhc3Mg
dHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjwKKyAgICBFbGVtZW50VHlw
ZSwgVENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OmR5bmFtaWNfZXh0ZW50Pj47IC8vIG5vdCBkZWZp
bmVkCisKK3RlbXBsYXRlIDxzaXplX3QgSSwgdHlwZW5hbWUgRWxlbWVudFR5cGUsIHNpemVfdCBF
eHRlbnQ+CitjbGFzcyB0dXBsZV9lbGVtZW50PEksIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpT
cGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+PiB7CitwdWJsaWM6CisgICAgc3RhdGljX2Fzc2VydChF
eHRlbnQgIT0gVENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OmR5bmFtaWNfZXh0ZW50ICYmCisgICAg
ICAgICAgICAgICAgICAgICAgSSA8IEV4dGVudCwKKyAgICAgICAgICAgICAgICAgICIiKTsKKyAg
ICB1c2luZyB0eXBlID0gRWxlbWVudFR5cGU7Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2Ugc3Rk
CisKK3VzaW5nIFdURjo6U3BhbjsKK3VzaW5nIFdURjo6YXNCeXRlczsKK3VzaW5nIFdURjo6YXNX
cml0YWJsZUJ5dGVzOworCisjZW5kaWYgLy8gVENCX1NQQU5fSFBQX0lOQ0xVREVECkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
Nzg0NTcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAyMS0wNi0wNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGNvcHkgb2Ygc3RkOjpzcGFuIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBwcmUtbW92aW5nIHRv
IGMrKzIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYmFzaWMgV1RGOjpTcGFuIHRlc3QgdG8gbWFrZSBzdXJlIHRoaW5ncyBjb21waWxlIGFuZCB3
b3JrLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TcGFuLmNwcDogQWRkZWQuCisKIDIw
MjEtMDYtMDQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBFeHBvc2Ugc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3ODQ1NykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcg
QEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAgICBUZXN0
cy9XVEYvU2NvcGVkTGFtYmRhLmNwcAogICAgIFRlc3RzL1dURi9TZXRGb3JTY29wZS5jcHAKKyAg
ICBUZXN0cy9XVEYvU3Bhbi5jcHAKICAgICBUZXN0cy9XVEYvU3RkTGliRXh0cmFzLmNwcAogICAg
IFRlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdDb25jYXRl
bmF0ZS5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzg0NTcpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgxLDYgKzk4MSw3IEBACiAJCUJDNTc1QkQ5MTI2RjU4
RTIwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NUJCRjEyNkY1NzUyMDA2RjBGMTIgLyogUGxh
dGZvcm1VdGlsaXRpZXMuY3BwICovOyB9OwogCQlCQzU3NUJFMDEyNkY1OTBEMDA2RjBGMTIgLyog
UGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzEzMTg4NDExNzExNEI2MDBCNjk3MjcgLyogUGxhdGZvcm1VdGlsaXRp
ZXNNYWMubW0gKi87IH07CiAJCUJDOTA5Nzg0MTI1NTcxQ0YwMDA4Mzc1NiAvKiBzaW1wbGUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzkwOTc3ODEyNTU3MUFCMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgKi87IH07CisJCUJDQTMwQzdF
MjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTMwQzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCAq
LzsgfTsKIAkJQkNBQTQ4NTYxNEEwNDQ0QzAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4
NTUxNEEwMjE2NDAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgKi87IH07CiAJCUJDQjY4MDQy
MTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QjY4MDQxMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2hfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGljb24u
cG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQkQzNzJFMTI1QUJCRTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKQEAgLTI3NDcsNiAr
Mjc0OCw3IEBACiAJCUJDOTA5Nzc5MTI1NTcxQUIwMDA4Mzc1NiAvKiBQYWdlTG9hZEJhc2ljLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkQmFzaWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwOTk1RDEyNTY3QkMxMDAwODM3NTYg
LyogV0tTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tT
dHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwOTk5MzEyNTZBQ0Yx
MDAwODM3NTYgLyogV0tTdHJpbmdKU1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS1N0cmluZ0pTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkNBMzBDN0QyNjZEMkY0MzAwMEQyMzBDIC8qIFNwYW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Bhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQUE0ODU1MTRBMDIxNjQwMDg4RkFDNCAvKiBzaW1wbGUtdGFsbC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpbXBsZS10YWxsLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0FBNDg1NzE0QTA0NEQ0MDA4OEZBQzQgLyogRWRpdG9yQ29t
bWFuZHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JD
b21tYW5kcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNjgwM0YxMjZGQkZF
MTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFs
ZXJ0Q3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ4NCw2ICs0NDg2
LDcgQEAKIAkJCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8sCiAJ
CQkJMzNDMkM5QzAyNjUxRjVCOTAwRTQwN0Y2IC8qIFNtYWxsU2V0LmNwcCAqLywKIAkJCQk5M0ZD
REIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovLAorCQkJCUJDQTMw
QzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCAqLywKIAkJCQlGRTJCQ0RDNjI0NzBGQzcw
MDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAqLywKIAkJCQk4MUI1MDE5MjE0MEYyMzIzMDBE
OUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCiAJCQkJN0NENEMyNkMxRTJDMEU2RTAwOTI5
NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNwcCAqLywKQEAgLTUxOTIsNiArNTE5NSw3IEBACiAJ
CQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUzMjEwNTE5MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQ0EzMEM3RTI2NkQyRjQzMDAwRDIzMEMgLyogU3Bhbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhhc2hD
b3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNE
NiAvKiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TcGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TcGFuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TcGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZTcGFuLCBDb25zdHJ1Y3RvcikKK3sKKyAg
ICBTcGFuPHVpbnQ4X3Q+IGFTcGFuOworICAgIEVYUEVDVF9FUShhU3Bhbi5zaXplKCksIDB1KTsK
K30KKworfQo=
</data>
<flag name="review"
          id="452322"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430837</attachid>
            <date>2021-06-08 07:33:06 -0700</date>
            <delta_ts>2021-06-08 08:05:51 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-226351-20210606095535.patch</filename>
            <type>text/plain</type>
            <size>32330</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzg1MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTA2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgSW1wb3J0cyBhIGNvcHkgb2YgVHJpc3RhbiBCcmluZGxl
J3MgQm9vc3QgbGljZW5zZWQgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjpzcGFuIAorICAgICAgICBm
cm9tIDVkOGQzNjZlY2E5MThkMGVkM2QyZDE5NmNiZWFlNmFiZmQ4NzQ3MzYgb2YgaHR0cHM6Ly9n
aXRodWIuY29tL3RjYnJpbmRsZS9zcGFuLgorCisgICAgICAgIEl0IGhhcyBiZWVuIGZ1cnRoZXIg
bW9kaWZpZWQgdG8gcmVuYW1lIHRjYjo6c3BhbiB0byBXVEY6OlNwYW4uCisKKyAgICAgICAgKiBM
SUNFTlNFXzFfMC1Cb29zdC50eHQ6IEFkZGVkLgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3
dGYvU3Bhbi5oOiBBZGRlZC4KKwogMjAyMS0wNi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZSgpIHNob3VsZCByZXR1
cm4gZGF0YSBhcyBgdm9pZCpgCkluZGV4OiBTb3VyY2UvV1RGL0xJQ0VOU0VfMV8wLUJvb3N0LnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0xJQ0VOU0VfMV8wLUJvb3N0LnR4dAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV1RGL0xJQ0VOU0VfMV8wLUJvb3N0LnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIzIEBACitCb29zdCBTb2Z0d2FyZSBMaWNlbnNlIC0gVmVyc2lvbiAxLjAg
LSBBdWd1c3QgMTd0aCwgMjAwMworCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvciBvcmdhbml6YXRpb24KK29idGFpbmluZyBhIGNv
cHkgb2YgdGhlIHNvZnR3YXJlIGFuZCBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBjb3ZlcmVk
IGJ5Cit0aGlzIGxpY2Vuc2UgKHRoZSAiU29mdHdhcmUiKSB0byB1c2UsIHJlcHJvZHVjZSwgZGlz
cGxheSwgZGlzdHJpYnV0ZSwKK2V4ZWN1dGUsIGFuZCB0cmFuc21pdCB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlCitTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCB0aGlyZC1wYXJ0aWVzIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0bwor
ZG8gc28sIGFsbCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmc6CisKK1RoZSBjb3B5cmlnaHQgbm90
aWNlcyBpbiB0aGUgU29mdHdhcmUgYW5kIHRoaXMgZW50aXJlIHN0YXRlbWVudCwgaW5jbHVkaW5n
Cit0aGUgYWJvdmUgbGljZW5zZSBncmFudCwgdGhpcyByZXN0cmljdGlvbiBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLAorbXVzdCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgaW4gd2hvbGUgb3IgaW4gcGFydCwgYW5kCithbGwgZGVyaXZhdGl2ZSB3b3JrcyBv
ZiB0aGUgU29mdHdhcmUsIHVubGVzcyBzdWNoIGNvcGllcyBvciBkZXJpdmF0aXZlCit3b3JrcyBh
cmUgc29sZWx5IGluIHRoZSBmb3JtIG9mIG1hY2hpbmUtZXhlY3V0YWJsZSBvYmplY3QgY29kZSBn
ZW5lcmF0ZWQgYnkKK2Egc291cmNlIGxhbmd1YWdlIHByb2Nlc3Nvci4KKworVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF
U1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Us
IFRJVExFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVAorU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVJTIE9SIEFOWU9ORSBESVNUUklCVVRJTkcgVEhFIFNPRlRXQVJFIEJFIExJQUJM
RQorRk9SIEFOWSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgVE9SVCBPUiBPVEhFUldJU0UsCitBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKK0RFQUxJTkdTIElOIFRI
RSBTT0ZUV0FSRS4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjc4NDU3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjUzLDggKzY1Myw4IEBACiAJCUE4QTQ3MzIyMTUx
QTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjMxNTFB
ODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJpbmdCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThB
NDczMjQxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjUxNTFBODI1QjAwNDEyM0VFIC8qIFN0
cmluZ0J1aWxkZXJJbnRlcm5hbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyaW5nQnVpbGRlckludGVybmFscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
OEE0NzMyNTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3MzI2MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdDb25jYXRlbmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb25jYXRlbmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyNzE1MUE4MjVCMDA0MTIzRkYgLyog
U3RyaW5nSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdIYXNo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI4MTUxQTgyNUIwMDQxMjNG
RiAvKiBTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cmluZ0ltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkwLDYgKzY5
MCw3IEBACiAJCUFEODlCNkI5MUU2NDE1MEYwMDkwNzA3RiAvKiBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9y
eVByZXNzdXJlSGFuZGxlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
REYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUZvb3RwcmludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBREYyQ0U2NTFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5Rm9v
dHByaW50Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0EzMEM3RjI2
NkQzMDM0MDAwRDIzMEMgLyogU3Bhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQkNGQzNFMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFn
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQkNGQzNGMUY2MUQxMzAwMEM5MjIyQyAv
KiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMg
LyogTGFuZ3VhZ2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
YW5ndWFnZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNTUsNiArMTI1
Niw3IEBACiAJCQkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8s
CiAJCQkJOTMxNTZDOEQyNjJDOTgyMjAwRUFFMjdCIC8qIFNvcnRlZEFycmF5TWFwLmggKi8sCiAJ
CQkJNzkwMzhFMDUyMjRCMDVBNzAwNEMwNzM4IC8qIFNwYW5uaW5nVHJlZS5oICovLAorCQkJCUJD
QTMwQzdGMjY2RDMwMzQwMDBEMjMwQyAvKiBTcGFuLmggKi8sCiAJCQkJQThBNDczMEQxNTFBODI1
QjAwNDEyM0ZGIC8qIFNwZWN0cnVtLmggKi8sCiAJCQkJQThBNDczMEUxNTFBODI1QjAwNDEyM0ZG
IC8qIFN0YWNrQm91bmRzLmNwcCAqLywKIAkJCQlBOEE0NzMwRjE1MUE4MjVCMDA0MTIzRkYgLyog
U3RhY2tCb3VuZHMuaCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzg0
NTcpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjM5LDYgKzIzOSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBTbWFsbFNldC5oCiAg
ICAgU29mdExpbmtpbmcuaAogICAgIFNvcnRlZEFycmF5TWFwLmgKKyAgICBTcGFuLmgKICAgICBT
cGFubmluZ1RyZWUuaAogICAgIFNwZWN0cnVtLmgKICAgICBTdGFja0JvdW5kcy5oCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TcGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3Bhbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYyMCBAQAorLy8gICAgICAgICAgICBDb3B5cmlnaHQgVHJpc3RhbiBCcmluZGxl
IDIwMTguCisvLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwg
VmVyc2lvbiAxLjAuCisvLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIC4uL0xJQ0VOU0VfMV8w
LUJvb3N0LnR4dCBvciBjb3B5IGF0CisvLyAgICAgICAgICBodHRwczovL3d3dy5ib29zdC5vcmcv
TElDRU5TRV8xXzAudHh0KQorCisvLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIEMrKzIw
J3Mgc3RkOjpzcGFuIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3Mv
cGFwZXJzLzIwMTkvbjQ4MjAucGRmCisKKy8vIFRoaXMgaGFzIGJlZW4gbW9kaWZpZWQgZnJvbSB0
aGUgb3JpZ2luYWwgdmVyc2lvbiB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKy8vICAg
UmVuYW1lZCB0Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgorLy8gICBSZW5hbWVkIHRjYjo6YXNfYnl0
ZXMgdG8gV1RGOjphc0J5dGVzLgorLy8gICBSZW5hbWVkIHRjYjo6YXNfd3JpdGFibGVfYnl0ZXMg
dG8gV1RGOjphc1dyaXRhYmxlQnl0ZXMuCisKKyNpZm5kZWYgVENCX1NQQU5fSFBQX0lOQ0xVREVE
CisjZGVmaW5lIFRDQl9TUEFOX0hQUF9JTkNMVURFRAorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5j
bHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorCisjaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKKy8vIEF0dGVtcHQgdG8gZGlzY292
ZXIgd2hldGhlciB3ZSdyZSBiZWluZyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0Cisj
aWYgIShkZWZpbmVkKF9fY3BwX2V4Y2VwdGlvbnMpIHx8IGRlZmluZWQoX19FWENFUFRJT05TKSB8
fCBkZWZpbmVkKF9DUFBVTldJTkQpKQorI2RlZmluZSBUQ0JfU1BBTl9OT19FWENFUFRJT05TCisj
ZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKKyNpbmNsdWRl
IDxjc3RkaW8+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKKy8vIFZhcmlvdXMgZmVh
dHVyZSB0ZXN0IG1hY3JvcworCisjaWZuZGVmIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FCisjZGVm
aW5lIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIFdURgorI2VuZGlmCisKKyNpZiBfX2NwbHVzcGx1
cyA+PSAyMDE3MDNMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0gMjAx
NzAzTCkKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNworI2VuZGlmCisKKyNpZiBfX2NwbHVz
cGx1cyA+PSAyMDE0MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0g
MjAxNDAyTCkKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAorI2VuZGlmCisKK25hbWVzcGFj
ZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRSB7CisKKy8vIEVzdGFibGlzaCBkZWZhdWx0IGNvbnRy
YWN0IGNoZWNraW5nIGJlaGF2aW9yCisjaWYgIWRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09O
VFJBQ1RfVklPTEFUSU9OKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICFkZWZp
bmVkKFRDQl9TUEFOX1RFUk1JTkFURV9PTl9DT05UUkFDVF9WSU9MQVRJT04pICYmICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAhZGVmaW5lZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lO
RykKKyNpZiBkZWZpbmVkKE5ERUJVRykgfHwgIWRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkK
KyNkZWZpbmUgVENCX1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcKKyNlbHNlCisjZGVmaW5lIFRD
Ql9TUEFOX1RFUk1JTkFURV9PTl9DT05UUkFDVF9WSU9MQVRJT04KKyNlbmRpZgorI2VuZGlmCisK
KyNpZiBkZWZpbmVkKFRDQl9TUEFOX1RIUk9XX09OX0NPTlRSQUNUX1ZJT0xBVElPTikKK3N0cnVj
dCBjb250cmFjdF92aW9sYXRpb25fZXJyb3IgOiBzdGQ6OmxvZ2ljX2Vycm9yIHsKKyAgICBleHBs
aWNpdCBjb250cmFjdF92aW9sYXRpb25fZXJyb3IoY29uc3QgY2hhciogbXNnKSA6IHN0ZDo6bG9n
aWNfZXJyb3IobXNnKQorICAgIHt9Cit9OworCitpbmxpbmUgdm9pZCBjb250cmFjdF92aW9sYXRp
b24oY29uc3QgY2hhciogbXNnKQoreworICAgIHRocm93IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJv
cihtc2cpOworfQorCisjZWxpZiBkZWZpbmVkKFRDQl9TUEFOX1RFUk1JTkFURV9PTl9DT05UUkFD
VF9WSU9MQVRJT04pCitbW25vcmV0dXJuXV0gaW5saW5lIHZvaWQgY29udHJhY3RfdmlvbGF0aW9u
KGNvbnN0IGNoYXIqIC8qdW51c2VkKi8pCit7CisgICAgc3RkOjp0ZXJtaW5hdGUoKTsKK30KKyNl
bmRpZgorCisjaWYgIWRlZmluZWQoVENCX1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCisjZGVm
aW5lIFRDQl9TUEFOX1NUUklOR0lGWShjb25kKSAjY29uZAorI2RlZmluZSBUQ0JfU1BBTl9FWFBF
Q1QoY29uZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBjb25kID8gKHZvaWQpIDAgOiBjb250cmFjdF92aW9sYXRpb24oIkV4cGVjdGVkICIg
VENCX1NQQU5fU1RSSU5HSUZZKGNvbmQpKQorI2Vsc2UKKyNkZWZpbmUgVENCX1NQQU5fRVhQRUNU
KGNvbmQpCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVm
aW5lZChfX2NwcF9pbmxpbmVfdmFyaWFibGVzKQorI2RlZmluZSBUQ0JfU1BBTl9JTkxJTkVfVkFS
IGlubGluZQorI2Vsc2UKKyNkZWZpbmUgVENCX1NQQU5fSU5MSU5FX1ZBUgorI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTQpIHx8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRlZmluZWQoX19jcHBfY29uc3RleHByKSAmJiBf
X2NwcF9jb25zdGV4cHIgPj0gMjAxMzA0KQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NQUDE0X0NP
TlNURVhQUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09OU1RF
WFBSKQorI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNCBjb25zdGV4cHIKKyNlbHNlCisjZGVm
aW5lIFRDQl9TUEFOX0NPTlNURVhQUjE0CisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5f
SEFWRV9DUFAxNF9DT05TVEVYUFIpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAoIWRlZmluZWQoX01TQ19WRVIpIHx8IF9NU0NfVkVSID4gMTkwMCkKKyNkZWZpbmUg
VENCX1NQQU5fQ09OU1RFWFBSX0FTU0lHTiBjb25zdGV4cHIKKyNlbHNlCisjZGVmaW5lIFRDQl9T
UEFOX0NPTlNURVhQUl9BU1NJR04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9OT19D
T05UUkFDVF9DSEVDS0lORykKKyNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTEgY29uc3RleHBy
CisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxMSBUQ0JfU1BBTl9DT05TVEVYUFIx
NAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQo
X19jcHBfZGVkdWN0aW9uX2d1aWRlcykKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9ERURVQ1RJT05f
R1VJREVTCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVm
aW5lZChfX2NwcF9saWJfYnl0ZSkKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9TVERfQllURQorI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBf
bGliX2FycmF5X2NvbnN0ZXhwcikKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9DT05TVEVYUFJfU1RE
X0FSUkFZX0VUQworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ09OU1RFWFBS
X1NURF9BUlJBWV9FVEMpCisjZGVmaW5lIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBjb25zdGV4
cHIKKyNlbHNlCisjZGVmaW5lIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUgorI2VuZGlmCisKKyNp
ZmRlZiBUQ0JfU1BBTl9IQVZFX1NURF9CWVRFCit1c2luZyBieXRlID0gc3RkOjpieXRlOworI2Vs
c2UKK3VzaW5nIGJ5dGUgPSB1bnNpZ25lZCBjaGFyOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRD
Ql9TUEFOX0hBVkVfQ1BQMTcpCisjZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRCBbW25vZGlzY2Fy
ZF1dCisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9OT0RJU0NBUkQKKyNlbmRpZgorCitUQ0JfU1BB
Tl9JTkxJTkVfVkFSIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4dGVudCA9IFNJWkVf
TUFYOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVu
dCA9IGR5bmFtaWNfZXh0ZW50PgorY2xhc3MgU3BhbjsKKworbmFtZXNwYWNlIGRldGFpbCB7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OnNpemVfdCBTPgorc3RydWN0IHNwYW5fc3RvcmFn
ZSB7CisgICAgY29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKwor
ICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IC8qdW51c2Vk
Ki8pIG5vZXhjZXB0CisgICAgICAgOiBwdHIocF9wdHIpCisgICAge30KKworICAgIEUqIHB0ciA9
IG51bGxwdHI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBzaXplID0gUzsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFPgorc3RydWN0IHNwYW5fc3RvcmFnZTxFLCBkeW5hbWlj
X2V4dGVudD4geworICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoKSBub2V4Y2VwdCA9IGRlZmF1
bHQ7CisKKyAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKEUqIHBfcHRyLCBzdGQ6OnNpemVfdCBw
X3NpemUpIG5vZXhjZXB0CisgICAgICAgIDogcHRyKHBfcHRyKSwgc2l6ZShwX3NpemUpCisgICAg
e30KKworICAgIEUqIHB0ciA9IG51bGxwdHI7CisgICAgc3RkOjpzaXplX3Qgc2l6ZSA9IDA7Cit9
OworCisvLyBSZWltcGxlbWVudGF0aW9uIG9mIEMrKzE3IHN0ZDo6c2l6ZSgpIGFuZCBzdGQ6OmRh
dGEoKQorI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkZWZpbmVkKF9fY3BwX2xpYl9ub25t
ZW1iZXJfY29udGFpbmVyX2FjY2VzcykKK3VzaW5nIHN0ZDo6ZGF0YTsKK3VzaW5nIHN0ZDo6c2l6
ZTsKKyNlbHNlCit0ZW1wbGF0ZSA8Y2xhc3MgQz4KK2NvbnN0ZXhwciBhdXRvIHNpemUoY29uc3Qg
QyYgYykgLT4gZGVjbHR5cGUoYy5zaXplKCkpCit7CisgICAgcmV0dXJuIGMuc2l6ZSgpOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KK2NvbnN0ZXhwciBzdGQ6OnNpemVf
dCBzaXplKGNvbnN0IFQgKCYpW05dKSBub2V4Y2VwdAoreworICAgIHJldHVybiBOOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgQz4KK2NvbnN0ZXhwciBhdXRvIGRhdGEoQyYgYykgLT4gZGVjbHR5cGUo
Yy5kYXRhKCkpCit7CisgICAgcmV0dXJuIGMuZGF0YSgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
Qz4KK2NvbnN0ZXhwciBhdXRvIGRhdGEoY29uc3QgQyYgYykgLT4gZGVjbHR5cGUoYy5kYXRhKCkp
Cit7CisgICAgcmV0dXJuIGMuZGF0YSgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpz
aXplX3QgTj4KK2NvbnN0ZXhwciBUKiBkYXRhKFQgKCZhcnJheSlbTl0pIG5vZXhjZXB0Cit7Cisg
ICAgcmV0dXJuIGFycmF5OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRT4KK2NvbnN0ZXhwciBjb25z
dCBFKiBkYXRhKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxFPiBpbCkgbm9leGNlcHQKK3sKKyAgICBy
ZXR1cm4gaWwuYmVnaW4oKTsKK30KKyNlbmRpZiAvLyBUQ0JfU1BBTl9IQVZFX0NQUDE3CisKKyNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBfbGliX3ZvaWRf
dCkKK3VzaW5nIHN0ZDo6dm9pZF90OworI2Vsc2UKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLj4KK3Vz
aW5nIHZvaWRfdCA9IHZvaWQ7CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2lu
ZyB1bmN2cmVmX3QgPQorICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZT4K
K3N0cnVjdCBpc19zcGFuIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc3RkOjpzaXplX3QgUz4KK3N0cnVjdCBpc19zcGFuPFNwYW48VCwgUz4+IDogc3RkOjp0
cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZT4KK3N0cnVjdCBpc19zdGRfYXJyYXkg
OiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVf
dCBOPgorc3RydWN0IGlzX3N0ZF9hcnJheTxzdGQ6OmFycmF5PFQsIE4+PiA6IHN0ZDo6dHJ1ZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBo
YXNfc2l6ZV9hbmRfZGF0YSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgaGFzX3NpemVfYW5kX2RhdGE8VCwgdm9pZF90PGRlY2x0eXBlKGRldGFp
bDo6c2l6ZShzdGQ6OmRlY2x2YWw8VD4oKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT4+CisgICAg
OiBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIFUg
PSB1bmN2cmVmX3Q8Qz4+CitzdHJ1Y3QgaXNfY29udGFpbmVyIHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdmFsdWUgPQorICAgICAgICAhaXNfc3BhbjxVPjo6dmFsdWUgJiYgIWlzX3N0ZF9h
cnJheTxVPjo6dmFsdWUgJiYKKyAgICAgICAgIXN0ZDo6aXNfYXJyYXk8VT46OnZhbHVlICYmIGhh
c19zaXplX2FuZF9kYXRhPEM+Ojp2YWx1ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dXNpbmcgcmVtb3ZlX3BvaW50ZXJfdCA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46
OnR5cGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4K
K3N0cnVjdCBpc19jb250YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGUgOiBzdGQ6OmZhbHNl
X3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPgorc3RydWN0IGlz
X2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKKyAgICBULCBFLAorICAgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2N2PGRlY2x0eXBlKAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmRh
dGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT46OnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgdm9p
ZD46OnZhbHVlPjo6dHlwZT4KKyAgICA6IHN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAg
cmVtb3ZlX3BvaW50ZXJfdDxkZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkp
KT4gKCopW10sCisgICAgICAgICAgRSAoKilbXT4ge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwg
dHlwZW5hbWUgPSBzaXplX3Q+CitzdHJ1Y3QgaXNfY29tcGxldGUgOiBzdGQ6OmZhbHNlX3R5cGUg
e307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2NvbXBsZXRlPFQsIGRlY2x0
eXBlKHNpemVvZihUKSk+IDogc3RkOjp0cnVlX3R5cGUge307CisKK30gLy8gbmFtZXNwYWNlIGRl
dGFpbAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVu
dD4KK2NsYXNzIFNwYW4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19vYmplY3Q8RWxlbWVu
dFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVtZW50VHlwZSBt
dXN0IGJlIGFuIG9iamVjdCB0eXBlIChub3QgYSAiCisgICAgICAgICAgICAgICAgICAicmVmZXJl
bmNlIHR5cGUgb3Igdm9pZCkiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRldGFpbDo6aXNfY29tcGxl
dGU8RWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVt
ZW50VHlwZSBtdXN0IGJlIGEgY29tcGxldGUgdHlwZSAobm90IGEgZm9yd2FyZCAiCisgICAgICAg
ICAgICAgICAgICAiZGVjbGFyYXRpb24pIik7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19h
YnN0cmFjdDxFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkEgU3Bhbidz
IEVsZW1lbnRUeXBlIGNhbm5vdCBiZSBhbiBhYnN0cmFjdCBjbGFzcyB0eXBlIik7CisKKyAgICB1
c2luZyBzdG9yYWdlX3R5cGUgPSBkZXRhaWw6OnNwYW5fc3RvcmFnZTxFbGVtZW50VHlwZSwgRXh0
ZW50PjsKKworcHVibGljOgorICAgIC8vIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAgICB1c2luZyBl
bGVtZW50X3R5cGUgPSBFbGVtZW50VHlwZTsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8RWxlbWVudFR5cGU+Ojp0eXBlOworICAgIHVzaW5nIHNpemVfdHlw
ZSA9IHN0ZDo6c2l6ZV90OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHN0ZDo6cHRyZGlm
Zl90OworICAgIHVzaW5nIHBvaW50ZXIgPSBlbGVtZW50X3R5cGUqOworICAgIHVzaW5nIGNvbnN0
X3BvaW50ZXIgPSBjb25zdCBlbGVtZW50X3R5cGUqOworICAgIHVzaW5nIHJlZmVyZW5jZSA9IGVs
ZW1lbnRfdHlwZSY7CisgICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3QgZWxlbWVudF90
eXBlJjsKKyAgICB1c2luZyBpdGVyYXRvciA9IHBvaW50ZXI7CisgICAgdXNpbmcgcmV2ZXJzZV9p
dGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdHlwZSBleHRlbnQgPSBFeHRlbnQ7CisKKyAgICAvLyBbc3Bhbi5jb25z
XSwgU3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisg
ICAgdGVtcGxhdGUgPAorICAgICAgICBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAgICB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwoRSA9PSBkeW5hbWljX2V4dGVudCB8fCBFIDw9IDApLCBp
bnQ+Ojp0eXBlID0gMD4KKyAgICBjb25zdGV4cHIgU3BhbigpIG5vZXhjZXB0CisgICAge30KKwor
ICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW4ocG9pbnRlciBwdHIsIHNpemVfdHlwZSBjb3Vu
dCkKKyAgICAgICAgOiBzdG9yYWdlXyhwdHIsIGNvdW50KQorICAgIHsKKyAgICAgICAgVENCX1NQ
QU5fRVhQRUNUKGV4dGVudCA9PSBkeW5hbWljX2V4dGVudCB8fCBjb3VudCA9PSBleHRlbnQpOwor
ICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW4ocG9pbnRlciBmaXJzdF9lbGVt
LCBwb2ludGVyIGxhc3RfZWxlbSkKKyAgICAgICAgOiBzdG9yYWdlXyhmaXJzdF9lbGVtLCBsYXN0
X2VsZW0gLSBmaXJzdF9lbGVtKQorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKGV4dGVu
dCA9PSBkeW5hbWljX2V4dGVudCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9lbGVt
IC0gZmlyc3RfZWxlbSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHN0ZDo6cHRyZGlmZl90PihleHRlbnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c3RkOjpz
aXplX3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgICAgICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAoRSA9PSBkeW5hbWljX2V4dGVudCB8
fCBOID09IEUpICYmCisgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWluZXJf
ZWxlbWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnRfdHlwZSAoJilbTl0sIEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICBp
bnQ+Ojp0eXBlID0gMD4KKyAgICBjb25zdGV4cHIgU3BhbihlbGVtZW50X3R5cGUgKCZhcnIpW05d
KSBub2V4Y2VwdCA6IHN0b3JhZ2VfKGFyciwgTikKKyAgICB7fQorCisgICAgdGVtcGxhdGUgPHN0
ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAgICAgICAgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRl
bnQgfHwgTiA9PSBFKSAmJgorICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFp
bmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgIGludD46OnR5cGUgPSAwPgorICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBT
cGFuKHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mIGFycikgbm9leGNlcHQKKyAgICAgICAgOiBz
dG9yYWdlXyhhcnIuZGF0YSgpLCBOKQorICAgIHt9CisKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXpl
X3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAoRSA9PSBkeW5hbWljX2V4dGVudCB8fCBO
ID09IEUpICYmCisgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWluZXJfZWxl
bWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgaW50Pjo6dHlwZSA9IDA+CisgICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNw
YW4oY29uc3Qgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYgYXJyKSBub2V4Y2VwdAorICAgICAg
ICA6IHN0b3JhZ2VfKGFyci5kYXRhKCksIE4pCisgICAge30KKworICAgIHRlbXBsYXRlIDwKKyAg
ICAgICAgdHlwZW5hbWUgQ29udGFpbmVyLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAg
ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIEUgPT0gZHluYW1pY19leHRl
bnQgJiYgZGV0YWlsOjppc19jb250YWluZXI8Q29udGFpbmVyPjo6dmFsdWUgJiYKKyAgICAgICAg
ICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKKyAg
ICAgICAgICAgICAgICAgICAgQ29udGFpbmVyJiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAg
ICAgICAgIGludD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKENvbnRhaW5lciYgY29u
dCkKKyAgICAgICAgOiBzdG9yYWdlXyhkZXRhaWw6OmRhdGEoY29udCksIGRldGFpbDo6c2l6ZShj
b250KSkKKyAgICB7fQorCisgICAgdGVtcGxhdGUgPAorICAgICAgICB0eXBlbmFtZSBDb250YWlu
ZXIsIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPAorICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2NvbnRh
aW5lcjxDb250YWluZXI+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29u
dGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb250YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgaW50Pjo6dHlw
ZSA9IDA+CisgICAgY29uc3RleHByIFNwYW4oY29uc3QgQ29udGFpbmVyJiBjb250KQorICAgICAg
ICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNvbnQpKQorICAg
IHt9CisKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBk
ZWZhdWx0OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyRWxlbWVudFR5cGUsIHN0ZDo6
c2l6ZV90IE90aGVyRXh0ZW50LAorICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjwKKyAgICAgICAgICAgICAgICAgIChFeHRlbnQgPT0gT3RoZXJFeHRlbnQgfHwgRXh0ZW50ID09
IGR5bmFtaWNfZXh0ZW50KSAmJgorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVy
dGlibGU8T3RoZXJFbGVtZW50VHlwZSAoKilbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZW1lbnRUeXBlICgqKVtdPjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgICBpbnQ+Ojp0eXBlID0gMD4KKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBTcGFuPE90aGVy
RWxlbWVudFR5cGUsIE90aGVyRXh0ZW50PiYgb3RoZXIpIG5vZXhjZXB0CisgICAgICAgIDogc3Rv
cmFnZV8ob3RoZXIuZGF0YSgpLCBvdGhlci5zaXplKCkpCisgICAge30KKworICAgIH5TcGFuKCkg
bm9leGNlcHQgPSBkZWZhdWx0OworCisgICAgVENCX1NQQU5fQ09OU1RFWFBSX0FTU0lHTiBTcGFu
JgorICAgIG9wZXJhdG9yPShjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBkZWZhdWx0Owor
CisgICAgLy8gW3NwYW4uc3ViXSwgc3BhbiBzdWJ2aWV3cworICAgIHRlbXBsYXRlIDxzdGQ6OnNp
emVfdCBDb3VudD4KKyAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwg
Q291bnQ+IGZpcnN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VYUEVDVChDb3Vu
dCA8PSBzaXplKCkpOworICAgICAgICByZXR1cm4ge2RhdGEoKSwgQ291bnR9OworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBDb3VudD4KKyAgICBUQ0JfU1BBTl9DT05TVEVYUFIx
MSBTcGFuPGVsZW1lbnRfdHlwZSwgQ291bnQ+IGxhc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAg
VENCX1NQQU5fRVhQRUNUKENvdW50IDw9IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgp
ICsgKHNpemUoKSAtIENvdW50KSwgQ291bnR9OworICAgIH0KKworICAgIHRlbXBsYXRlIDxzdGQ6
OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6ZV90IENvdW50ID0gZHluYW1pY19leHRlbnQ+CisgICAg
dXNpbmcgc3Vic3Bhbl9yZXR1cm5fdCA9CisgICAgICAgIFNwYW48RWxlbWVudFR5cGUsIENvdW50
ICE9IGR5bmFtaWNfZXh0ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IENvdW50
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChFeHRlbnQgIT0gZHluYW1pY19leHRl
bnQgPyBFeHRlbnQgLSBPZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNfZXh0ZW50KT47CisKKyAgICB0ZW1wbGF0
ZSA8c3RkOjpzaXplX3QgT2Zmc2V0LCBzdGQ6OnNpemVfdCBDb3VudCA9IGR5bmFtaWNfZXh0ZW50
PgorICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIHN1YnNwYW5fcmV0dXJuX3Q8T2Zmc2V0LCBDb3Vu
dD4gc3Vic3BhbigpIGNvbnN0CisgICAgeworICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoT2Zmc2V0
IDw9IHNpemUoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ID09IGR5bmFtaWNf
ZXh0ZW50IHx8IE9mZnNldCArIENvdW50IDw9IHNpemUoKSkpOworICAgICAgICByZXR1cm4ge2Rh
dGEoKSArIE9mZnNldCwKKyAgICAgICAgICAgICAgICBDb3VudCAhPSBkeW5hbWljX2V4dGVudCA/
IENvdW50IDogc2l6ZSgpIC0gT2Zmc2V0fTsKKyAgICB9CisKKyAgICBUQ0JfU1BBTl9DT05TVEVY
UFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+CisgICAgZmlyc3Qoc2l6ZV90
eXBlIGNvdW50KSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKGNvdW50IDw9
IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgpLCBjb3VudH07CisgICAgfQorCisgICAg
VENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50Pgor
ICAgIGxhc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5f
RVhQRUNUKGNvdW50IDw9IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgpICsgKHNpemUo
KSAtIGNvdW50KSwgY291bnR9OworICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNw
YW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KKyAgICBzdWJzcGFuKHNpemVfdHlwZSBv
ZmZzZXQsIHNpemVfdHlwZSBjb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdAorICAgIHsKKyAg
ICAgICAgVENCX1NQQU5fRVhQRUNUKG9mZnNldCA8PSBzaXplKCkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChjb3VudCA9PSBkeW5hbWljX2V4dGVudCB8fCBvZmZzZXQgKyBjb3VudCA8PSBz
aXplKCkpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgY291bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBvZmZzZXQgOiBjb3VudH07Cisg
ICAgfQorCisgICAgLy8gW3NwYW4ub2JzXSwgc3BhbiBvYnNlcnZlcnMKKyAgICBjb25zdGV4cHIg
c2l6ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdG9yYWdlXy5zaXplOyB9
CisKKyAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHNpemUoKSAqIHNpemVvZihlbGVtZW50X3R5cGUpOworICAg
IH0KKworICAgIFRDQl9TUEFOX05PRElTQ0FSRCBjb25zdGV4cHIgYm9vbCBlbXB0eSgpIGNvbnN0
IG5vZXhjZXB0CisgICAgeworICAgICAgICByZXR1cm4gc2l6ZSgpID09IDA7CisgICAgfQorCisg
ICAgLy8gW3NwYW4uZWxlbV0sIHNwYW4gZWxlbWVudCBhY2Nlc3MKKyAgICBUQ0JfU1BBTl9DT05T
VEVYUFIxMSByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaWR4KSBjb25zdAorICAgIHsK
KyAgICAgICAgVENCX1NQQU5fRVhQRUNUKGlkeCA8IHNpemUoKSk7CisgICAgICAgIHJldHVybiAq
KGRhdGEoKSArIGlkeCk7CisgICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgcmVmZXJl
bmNlIGZyb250KCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VYUEVDVCghZW1wdHko
KSk7CisgICAgICAgIHJldHVybiAqZGF0YSgpOworICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNU
RVhQUjExIHJlZmVyZW5jZSBiYWNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VY
UEVDVCghZW1wdHkoKSk7CisgICAgICAgIHJldHVybiAqKGRhdGEoKSArIChzaXplKCkgLSAxKSk7
CisgICAgfQorCisgICAgY29uc3RleHByIHBvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsg
cmV0dXJuIHN0b3JhZ2VfLnB0cjsgfQorCisgICAgLy8gW3NwYW4uaXRlcmF0b3JzXSwgc3BhbiBp
dGVyYXRvciBzdXBwb3J0CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gZGF0YSgpOyB9CisKKyAgICBjb25zdGV4cHIgaXRlcmF0b3IgZW5kKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9CisKKyAgICBUQ0JfU1BB
Tl9BUlJBWV9DT05TVEVYUFIgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCBub2V4Y2Vw
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOworICAgIH0K
KworICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBj
b25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVn
aW4oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0b3JhZ2VfdHlwZSBzdG9yYWdlX3t9Owor
fTsKKworI2lmZGVmIFRDQl9TUEFOX0hBVkVfREVEVUNUSU9OX0dVSURFUworCisvKiBEZWR1Y3Rp
b24gR3VpZGVzICovCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitTcGFuKFQgKCYpW05d
KS0+U3BhbjxULCBOPjsKKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgorU3BhbihzdGQ6
OmFycmF5PFQsIE4+JiktPlNwYW48VCwgTj47CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3Qg
Tj4KK1NwYW4oY29uc3Qgc3RkOjphcnJheTxULCBOPiYpLT5TcGFuPGNvbnN0IFQsIE4+OworCit0
ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgorU3BhbihDb250YWluZXImKS0+U3Bhbjx0eXBlbmFt
ZSBDb250YWluZXI6OnZhbHVlX3R5cGU+OworCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgor
U3Bhbihjb25zdCBDb250YWluZXImKS0+U3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZh
bHVlX3R5cGU+OworCisjZW5kaWYgLy8gVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCisK
KyNpZmRlZiBUQ0JfU1BBTl9JTkNMVURFX01BS0VfU1BBTgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVudD4KK2NvbnN0ZXhwciBTcGFuPEVsZW1lbnRU
eXBlLCBFeHRlbnQ+CittYWtlX3NwYW4oU3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50PiBzKSBub2V4
Y2VwdAoreworICAgIHJldHVybiBzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpz
aXplX3QgTj4KK2NvbnN0ZXhwciBTcGFuPFQsIE4+IG1ha2Vfc3BhbihUICgmYXJyKVtOXSkgbm9l
eGNlcHQKK3sKKyAgICByZXR1cm4ge2Fycn07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBz
dGQ6OnNpemVfdCBOPgorVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48VCwgTj4gbWFrZV9z
cGFuKHN0ZDo6YXJyYXk8VCwgTj4mIGFycikgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge2Fycn07
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgorVENCX1NQQU5fQVJS
QVlfQ09OU1RFWFBSIFNwYW48Y29uc3QgVCwgTj4KK21ha2Vfc3Bhbihjb25zdCBzdGQ6OmFycmF5
PFQsIE4+JiBhcnIpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHthcnJ9OworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgorY29uc3RleHByIFNwYW48dHlwZW5hbWUgQ29udGFpbmVy
Ojp2YWx1ZV90eXBlPiBtYWtlX3NwYW4oQ29udGFpbmVyJiBjb250KQoreworICAgIHJldHVybiB7
Y29udH07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Citjb25zdGV4cHIgU3Bh
bjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+CittYWtlX3NwYW4oY29uc3Qg
Q29udGFpbmVyJiBjb250KQoreworICAgIHJldHVybiB7Y29udH07Cit9CisjZW5kaWYgLy8gVENC
X1NQQU5fSU5DTFVERV9NQUtFX1NQQU4KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
LCBzdGQ6OnNpemVfdCBFeHRlbnQ+CitTcGFuPGNvbnN0IGJ5dGUsICgoRXh0ZW50ID09IGR5bmFt
aWNfZXh0ZW50KSA/IGR5bmFtaWNfZXh0ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgorYXNCeXRl
cyhTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHty
ZWludGVycHJldF9jYXN0PGNvbnN0IGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsK
K30KKwordGVtcGxhdGUgPAorICAgIGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50LAor
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnN0PEVsZW1lbnRUeXBlPjo6
dmFsdWUsIGludD46OnR5cGUgPSAwPgorU3BhbjxieXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4
dGVudCkgPyBkeW5hbWljX2V4dGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBzaXplb2YoRWxlbWVudFR5cGUpICogRXh0ZW50KT4KK2FzV3JpdGFibGVCeXRlcyhT
cGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHtyZWlu
dGVycHJldF9jYXN0PGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKK30KKwordGVt
cGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+Citjb25zdGV4
cHIgYXV0byBnZXQoU3BhbjxFLCBTPiBzKSAtPiBkZWNsdHlwZShzW05dKQoreworICAgIHJldHVy
biBzW05dOworfQorCit9IC8vIG5hbWVzcGFjZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRQorCitu
YW1lc3BhY2Ugc3RkIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3Qg
RXh0ZW50PgorY2xhc3MgdHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxF
bGVtZW50VHlwZSwgRXh0ZW50Pj4KKyAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXpl
X3QsIEV4dGVudD4ge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2NsYXNz
IHR1cGxlX3NpemU8VENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OlNwYW48CisgICAgRWxlbWVudFR5
cGUsIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudD4+OyAvLyBub3QgZGVm
aW5lZAorCit0ZW1wbGF0ZSA8c2l6ZV90IEksIHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3Qg
RXh0ZW50PgorY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6
U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50Pj4geworcHVibGljOgorICAgIHN0YXRpY19hc3NlcnQo
RXh0ZW50ICE9IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudCAmJgorICAg
ICAgICAgICAgICAgICAgICAgIEkgPCBFeHRlbnQsCisgICAgICAgICAgICAgICAgICAiIik7Cisg
ICAgdXNpbmcgdHlwZSA9IEVsZW1lbnRUeXBlOworfTsKKworfSAvLyBlbmQgbmFtZXNwYWNlIHN0
ZAorCit1c2luZyBXVEY6OlNwYW47Cit1c2luZyBXVEY6OmFzQnl0ZXM7Cit1c2luZyBXVEY6OmFz
V3JpdGFibGVCeXRlczsKKworI2VuZGlmIC8vIFRDQl9TUEFOX0hQUF9JTkNMVURFRApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjc4NDU3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMDYtMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBjb3B5IG9mIHN0ZDo6c3BhbiBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgcHJlLW1vdmluZyB0
byBjKysyMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBBZGQgYmFzaWMgV1RGOjpTcGFuIHRlc3QgdG8gbWFrZSBzdXJlIHRoaW5ncyBjb21waWxlIGFu
ZCB3b3JrLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TcGFuLmNwcDogQWRkZWQuCisK
IDIwMjEtMDYtMDQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBFeHBvc2Ugc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3ODQ1NykKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAgICBU
ZXN0cy9XVEYvU2NvcGVkTGFtYmRhLmNwcAogICAgIFRlc3RzL1dURi9TZXRGb3JTY29wZS5jcHAK
KyAgICBUZXN0cy9XVEYvU3Bhbi5jcHAKICAgICBUZXN0cy9XVEYvU3RkTGliRXh0cmFzLmNwcAog
ICAgIFRlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdDb25j
YXRlbmF0ZS5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzg0NTcp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgxLDYgKzk4MSw3IEBACiAJCUJDNTc1QkQ5MTI2
RjU4RTIwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NUJCRjEyNkY1NzUyMDA2RjBGMTIgLyog
UGxhdGZvcm1VdGlsaXRpZXMuY3BwICovOyB9OwogCQlCQzU3NUJFMDEyNkY1OTBEMDA2RjBGMTIg
LyogUGxhdGZvcm1VdGlsaXRpZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzEzMTg4NDExNzExNEI2MDBCNjk3MjcgLyogUGxhdGZvcm1VdGls
aXRpZXNNYWMubW0gKi87IH07CiAJCUJDOTA5Nzg0MTI1NTcxQ0YwMDA4Mzc1NiAvKiBzaW1wbGUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzkwOTc3ODEyNTU3MUFCMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgKi87IH07CisJCUJDQTMw
QzdFMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTMwQzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNw
cCAqLzsgfTsKIAkJQkNBQTQ4NTYxNEEwNDQ0QzAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNB
QTQ4NTUxNEEwMjE2NDAwODhGQUM0IC8qIHNpbXBsZS10YWxsLmh0bWwgKi87IH07CiAJCUJDQjY4
MDQyMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQjY4MDQxMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0
Q3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKIAkJQkNCRDM3MzcxMjVBQkJFQjAwRDJDMjlGIC8qIGlj
b24ucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQkQzNzJFMTI1QUJCRTYwMEQyQzI5RiAvKiBpY29uLnBuZyAqLzsgfTsKQEAgLTI3NDcs
NiArMjc0OCw3IEBACiAJCUJDOTA5Nzc5MTI1NTcxQUIwMDA4Mzc1NiAvKiBQYWdlTG9hZEJhc2lj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VMb2FkQmFzaWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwOTk1RDEyNTY3QkMxMDAwODM3
NTYgLyogV0tTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkwOTk5MzEyNTZB
Q0YxMDAwODM3NTYgLyogV0tTdHJpbmdKU1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS1N0cmluZ0pTU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNBMzBDN0QyNjZEMkY0MzAwMEQyMzBDIC8qIFNwYW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Bhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQUE0ODU1MTRBMDIxNjQwMDg4RkFDNCAvKiBzaW1wbGUtdGFsbC5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpbXBsZS10YWxsLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FBNDg1NzE0QTA0NEQ0MDA4OEZBQzQgLyogRWRpdG9y
Q29tbWFuZHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0
b3JDb21tYW5kcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNjgwM0YxMjZG
QkZFMTAwNjQyQTYxIC8qIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFN0YXJ0VXNlclNjcmlw
dEFsZXJ0Q3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ4NCw2ICs0
NDg2LDcgQEAKIAkJCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8s
CiAJCQkJMzNDMkM5QzAyNjUxRjVCOTAwRTQwN0Y2IC8qIFNtYWxsU2V0LmNwcCAqLywKIAkJCQk5
M0ZDREIzMzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovLAorCQkJCUJD
QTMwQzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBTcGFuLmNwcCAqLywKIAkJCQlGRTJCQ0RDNjI0NzBG
QzcwMDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAqLywKIAkJCQk4MUI1MDE5MjE0MEYyMzIz
MDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCiAJCQkJN0NENEMyNkMxRTJDMEU2RTAw
OTI5NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNwcCAqLywKQEAgLTUxOTIsNiArNTE5NSw3IEBA
CiAJCQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUzMjEwNTE5MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0EzMEM3RTI2NkQyRjQzMDAwRDIzMEMgLyogU3Bhbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzEwQ0QzODFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkJGRDI5NEMxRDVFNkMxRDAwOEVDOTY4IC8qIEhh
c2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAwMDMy
RUNENiAvKiBIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TcGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TcGFuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TcGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZTcGFuLCBDb25zdHJ1Y3RvcikKK3sK
KyAgICBTcGFuPHVpbnQ4X3Q+IGFTcGFuOworICAgIEVYUEVDVF9FUShhU3Bhbi5zaXplKCksIDB1
KTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430843</attachid>
            <date>2021-06-08 08:05:55 -0700</date>
            <delta_ts>2021-06-08 13:08:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226351-20210608080554.patch</filename>
            <type>text/plain</type>
            <size>30693</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzg2MDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTA2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY29weSBvZiBzdGQ6OnNwYW4gc28gdGhhdCB3ZSBj
YW4gdXNlIGl0IHByZS1tb3ZpbmcgdG8gYysrMjAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgSW1wb3J0cyBhIGNvcHkgb2YgVHJpc3RhbiBCcmluZGxl
J3MgQm9vc3QgbGljZW5zZWQgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjpzcGFuIAorICAgICAgICBm
cm9tIDVkOGQzNjZlY2E5MThkMGVkM2QyZDE5NmNiZWFlNmFiZmQ4NzQ3MzYgb2YgaHR0cHM6Ly9n
aXRodWIuY29tL3RjYnJpbmRsZS9zcGFuLgorCisgICAgICAgIEl0IGhhcyBiZWVuIGZ1cnRoZXIg
bW9kaWZpZWQgdG8gcmVuYW1lIHRjYjo6c3BhbiB0byBXVEY6OlNwYW4uCisKKyAgICAgICAgKiBM
SUNFTlNFXzFfMC1Cb29zdC50eHQ6IEFkZGVkLgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3
dGYvU3Bhbi5oOiBBZGRlZC4KKwogMjAyMS0wNi0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkb3B0IFNlY1RydXN0R2V0Q2VydGlmaWNh
dGVBdEluZGV4IHJlcGxhY2VtZW50IHdoZXJlIGF2YWlsYWJsZQpJbmRleDogU291cmNlL1dURi9M
SUNFTlNFXzFfMC1Cb29zdC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9MSUNFTlNFXzFf
MC1Cb29zdC50eHQJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi9MSUNFTlNFXzFfMC1Cb29z
dC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorQm9vc3QgU29mdHdhcmUgTGlj
ZW5zZSAtIFZlcnNpb24gMS4wIC0gQXVndXN0IDE3dGgsIDIwMDMKKworUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb3Igb3JnYW5pemF0
aW9uCitvYnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBzb2Z0d2FyZSBhbmQgYWNjb21wYW55aW5nIGRv
Y3VtZW50YXRpb24gY292ZXJlZCBieQordGhpcyBsaWNlbnNlICh0aGUgIlNvZnR3YXJlIikgdG8g
dXNlLCByZXByb2R1Y2UsIGRpc3BsYXksIGRpc3RyaWJ1dGUsCitleGVjdXRlLCBhbmQgdHJhbnNt
aXQgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZQor
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgdGhpcmQtcGFydGllcyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcyBmdXJuaXNoZWQgdG8KK2RvIHNvLCBhbGwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nOgor
CitUaGUgY29weXJpZ2h0IG5vdGljZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlzIGVudGlyZSBz
dGF0ZW1lbnQsIGluY2x1ZGluZwordGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQsIHRoaXMgcmVzdHJp
Y3Rpb24gYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciwKK211c3QgYmUgaW5jbHVkZWQgaW4g
YWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIGFuZAorYWxs
IGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNvZnR3YXJlLCB1bmxlc3Mgc3VjaCBjb3BpZXMgb3Ig
ZGVyaXZhdGl2ZQord29ya3MgYXJlIHNvbGVseSBpbiB0aGUgZm9ybSBvZiBtYWNoaW5lLWV4ZWN1
dGFibGUgb2JqZWN0IGNvZGUgZ2VuZXJhdGVkIGJ5CithIHNvdXJjZSBsYW5ndWFnZSBwcm9jZXNz
b3IuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCitJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKK0ZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLCBUSVRMRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQKK1NIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBBTllPTkUgRElTVFJJQlVUSU5HIFRI
RSBTT0ZUV0FSRSBCRSBMSUFCTEUKK0ZPUiBBTlkgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorQVJJU0lORyBGUk9NLCBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSCitERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODYwNikKKysrIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY5MSw2ICs2OTEs
NyBAQAogCQlBRDg5QjZCOTFFNjQxNTBGMDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURG
MkNFNjQxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlGb290cHJpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQURGMkNFNjUxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUZvb3Rw
cmludENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMzBDN0YyNjZE
MzAzNDAwMEQyMzBDIC8qIFNwYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Bhbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRTFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkMzRjFGNjFEMTMwMDBDOTIyMkMgLyog
TGFuZ3VhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFuZ3VhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8q
IExhbmd1YWdlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGFu
Z3VhZ2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjU3LDYgKzEyNTgs
NyBAQAogCQkJCUEzMEQ0MTJEMUYwREUxM0YwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICovLAog
CQkJCTkzMTU2QzhEMjYyQzk4MjIwMEVBRTI3QiAvKiBTb3J0ZWRBcnJheU1hcC5oICovLAogCQkJ
CTc5MDM4RTA1MjI0QjA1QTcwMDRDMDczOCAvKiBTcGFubmluZ1RyZWUuaCAqLywKKwkJCQlCQ0Ez
MEM3RjI2NkQzMDM0MDAwRDIzMEMgLyogU3Bhbi5oICovLAogCQkJCUE4QTQ3MzBEMTUxQTgyNUIw
MDQxMjNGRiAvKiBTcGVjdHJ1bS5oICovLAogCQkJCUE4QTQ3MzBFMTUxQTgyNUIwMDQxMjNGRiAv
KiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJQThBNDczMEYxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
YWNrQm91bmRzLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjc4NjA2
KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
MCw2ICsyNDAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU21hbGxTZXQuaAogICAg
IFNvZnRMaW5raW5nLmgKICAgICBTb3J0ZWRBcnJheU1hcC5oCisgICAgU3Bhbi5oCiAgICAgU3Bh
bm5pbmdUcmVlLmgKICAgICBTcGVjdHJ1bS5oCiAgICAgU3RhY2tCb3VuZHMuaApJbmRleDogU291
cmNlL1dURi93dGYvU3Bhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NwYW4uaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TcGFuLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MjAgQEAKKy8vICAgICAgICAgICAgICBDb3B5cmlnaHQgVHJpc3RhbiBCcmluZGxl
IDIwMTguCisvLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwg
VmVyc2lvbiAxLjAuCisvLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIC4uL0xJQ0VOU0VfMV8w
LUJvb3N0LnR4dCBvciBjb3B5IGF0CisvLyAgICAgICAgICBodHRwczovL3d3dy5ib29zdC5vcmcv
TElDRU5TRV8xXzAudHh0KQorCisvLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIEMrKzIw
J3Mgc3RkOjpzcGFuIGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3Mv
cGFwZXJzLzIwMTkvbjQ4MjAucGRmCisKKy8vIFRoaXMgaGFzIGJlZW4gbW9kaWZpZWQgZnJvbSB0
aGUgb3JpZ2luYWwgdmVyc2lvbiB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKy8vICAg
UmVuYW1lZCB0Y2I6OnNwYW4gdG8gV1RGOjpTcGFuLgorLy8gICBSZW5hbWVkIHRjYjo6YXNfYnl0
ZXMgdG8gV1RGOjphc0J5dGVzLgorLy8gICBSZW5hbWVkIHRjYjo6YXNfd3JpdGFibGVfYnl0ZXMg
dG8gV1RGOjphc1dyaXRhYmxlQnl0ZXMuCisKKyNpZm5kZWYgVENCX1NQQU5fSFBQX0lOQ0xVREVE
CisjZGVmaW5lIFRDQl9TUEFOX0hQUF9JTkNMVURFRAorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5j
bHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorCisjaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKKy8vIEF0dGVtcHQgdG8gZGlzY292
ZXIgd2hldGhlciB3ZSdyZSBiZWluZyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0Cisj
aWYgIShkZWZpbmVkKF9fY3BwX2V4Y2VwdGlvbnMpIHx8IGRlZmluZWQoX19FWENFUFRJT05TKSB8
fCBkZWZpbmVkKF9DUFBVTldJTkQpKQorI2RlZmluZSBUQ0JfU1BBTl9OT19FWENFUFRJT05TCisj
ZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIFRDQl9TUEFOX05PX0VYQ0VQVElPTlMKKyNpbmNsdWRl
IDxjc3RkaW8+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorI2VuZGlmCisKKy8vIFZhcmlvdXMgZmVh
dHVyZSB0ZXN0IG1hY3JvcworCisjaWZuZGVmIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FCisjZGVm
aW5lIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FIFdURgorI2VuZGlmCisKKyNpZiBfX2NwbHVzcGx1
cyA+PSAyMDE3MDNMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0gMjAx
NzAzTCkKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNworI2VuZGlmCisKKyNpZiBfX2NwbHVz
cGx1cyA+PSAyMDE0MDJMIHx8IChkZWZpbmVkKF9NU1ZDX0xBTkcpICYmIF9NU1ZDX0xBTkcgPj0g
MjAxNDAyTCkKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9DUFAxNAorI2VuZGlmCisKK25hbWVzcGFj
ZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRSB7CisKKy8vIEVzdGFibGlzaCBkZWZhdWx0IGNvbnRy
YWN0IGNoZWNraW5nIGJlaGF2aW9yCisjaWYgIWRlZmluZWQoVENCX1NQQU5fVEhST1dfT05fQ09O
VFJBQ1RfVklPTEFUSU9OKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICFkZWZp
bmVkKFRDQl9TUEFOX1RFUk1JTkFURV9PTl9DT05UUkFDVF9WSU9MQVRJT04pICYmICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAhZGVmaW5lZChUQ0JfU1BBTl9OT19DT05UUkFDVF9DSEVDS0lO
RykKKyNpZiBkZWZpbmVkKE5ERUJVRykgfHwgIWRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNCkK
KyNkZWZpbmUgVENCX1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcKKyNlbHNlCisjZGVmaW5lIFRD
Ql9TUEFOX1RFUk1JTkFURV9PTl9DT05UUkFDVF9WSU9MQVRJT04KKyNlbmRpZgorI2VuZGlmCisK
KyNpZiBkZWZpbmVkKFRDQl9TUEFOX1RIUk9XX09OX0NPTlRSQUNUX1ZJT0xBVElPTikKK3N0cnVj
dCBjb250cmFjdF92aW9sYXRpb25fZXJyb3IgOiBzdGQ6OmxvZ2ljX2Vycm9yIHsKKyAgICBleHBs
aWNpdCBjb250cmFjdF92aW9sYXRpb25fZXJyb3IoY29uc3QgY2hhciogbXNnKSA6IHN0ZDo6bG9n
aWNfZXJyb3IobXNnKQorICAgIHt9Cit9OworCitpbmxpbmUgdm9pZCBjb250cmFjdF92aW9sYXRp
b24oY29uc3QgY2hhciogbXNnKQoreworICAgIHRocm93IGNvbnRyYWN0X3Zpb2xhdGlvbl9lcnJv
cihtc2cpOworfQorCisjZWxpZiBkZWZpbmVkKFRDQl9TUEFOX1RFUk1JTkFURV9PTl9DT05UUkFD
VF9WSU9MQVRJT04pCitbW25vcmV0dXJuXV0gaW5saW5lIHZvaWQgY29udHJhY3RfdmlvbGF0aW9u
KGNvbnN0IGNoYXIqIC8qdW51c2VkKi8pCit7CisgICAgc3RkOjp0ZXJtaW5hdGUoKTsKK30KKyNl
bmRpZgorCisjaWYgIWRlZmluZWQoVENCX1NQQU5fTk9fQ09OVFJBQ1RfQ0hFQ0tJTkcpCisjZGVm
aW5lIFRDQl9TUEFOX1NUUklOR0lGWShjb25kKSAjY29uZAorI2RlZmluZSBUQ0JfU1BBTl9FWFBF
Q1QoY29uZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBjb25kID8gKHZvaWQpIDAgOiBjb250cmFjdF92aW9sYXRpb24oIkV4cGVjdGVkICIg
VENCX1NQQU5fU1RSSU5HSUZZKGNvbmQpKQorI2Vsc2UKKyNkZWZpbmUgVENCX1NQQU5fRVhQRUNU
KGNvbmQpCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVm
aW5lZChfX2NwcF9pbmxpbmVfdmFyaWFibGVzKQorI2RlZmluZSBUQ0JfU1BBTl9JTkxJTkVfVkFS
IGlubGluZQorI2Vsc2UKKyNkZWZpbmUgVENCX1NQQU5fSU5MSU5FX1ZBUgorI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTQpIHx8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKGRlZmluZWQoX19jcHBfY29uc3RleHByKSAmJiBf
X2NwcF9jb25zdGV4cHIgPj0gMjAxMzA0KQorI2RlZmluZSBUQ0JfU1BBTl9IQVZFX0NQUDE0X0NP
TlNURVhQUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTRfQ09OU1RF
WFBSKQorI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxNCBjb25zdGV4cHIKKyNlbHNlCisjZGVm
aW5lIFRDQl9TUEFOX0NPTlNURVhQUjE0CisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5f
SEFWRV9DUFAxNF9DT05TVEVYUFIpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAoIWRlZmluZWQoX01TQ19WRVIpIHx8IF9NU0NfVkVSID4gMTkwMCkKKyNkZWZpbmUg
VENCX1NQQU5fQ09OU1RFWFBSX0FTU0lHTiBjb25zdGV4cHIKKyNlbHNlCisjZGVmaW5lIFRDQl9T
UEFOX0NPTlNURVhQUl9BU1NJR04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChUQ0JfU1BBTl9OT19D
T05UUkFDVF9DSEVDS0lORykKKyNkZWZpbmUgVENCX1NQQU5fQ09OU1RFWFBSMTEgY29uc3RleHBy
CisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9DT05TVEVYUFIxMSBUQ0JfU1BBTl9DT05TVEVYUFIx
NAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQo
X19jcHBfZGVkdWN0aW9uX2d1aWRlcykKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9ERURVQ1RJT05f
R1VJREVTCisjZW5kaWYKKworI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgZGVm
aW5lZChfX2NwcF9saWJfYnl0ZSkKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9TVERfQllURQorI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBf
bGliX2FycmF5X2NvbnN0ZXhwcikKKyNkZWZpbmUgVENCX1NQQU5fSEFWRV9DT05TVEVYUFJfU1RE
X0FSUkFZX0VUQworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ09OU1RFWFBS
X1NURF9BUlJBWV9FVEMpCisjZGVmaW5lIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBjb25zdGV4
cHIKKyNlbHNlCisjZGVmaW5lIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUgorI2VuZGlmCisKKyNp
ZmRlZiBUQ0JfU1BBTl9IQVZFX1NURF9CWVRFCit1c2luZyBieXRlID0gc3RkOjpieXRlOworI2Vs
c2UKK3VzaW5nIGJ5dGUgPSB1bnNpZ25lZCBjaGFyOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFRD
Ql9TUEFOX0hBVkVfQ1BQMTcpCisjZGVmaW5lIFRDQl9TUEFOX05PRElTQ0FSRCBbW25vZGlzY2Fy
ZF1dCisjZWxzZQorI2RlZmluZSBUQ0JfU1BBTl9OT0RJU0NBUkQKKyNlbmRpZgorCitUQ0JfU1BB
Tl9JTkxJTkVfVkFSIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBkeW5hbWljX2V4dGVudCA9IFNJWkVf
TUFYOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVu
dCA9IGR5bmFtaWNfZXh0ZW50PgorY2xhc3MgU3BhbjsKKworbmFtZXNwYWNlIGRldGFpbCB7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OnNpemVfdCBTPgorc3RydWN0IHNwYW5fc3RvcmFn
ZSB7CisgICAgY29uc3RleHByIHNwYW5fc3RvcmFnZSgpIG5vZXhjZXB0ID0gZGVmYXVsdDsKKwor
ICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoRSogcF9wdHIsIHN0ZDo6c2l6ZV90IC8qdW51c2Vk
Ki8pIG5vZXhjZXB0CisgICAgICAgOiBwdHIocF9wdHIpCisgICAge30KKworICAgIEUqIHB0ciA9
IG51bGxwdHI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnNpemVfdCBzaXplID0gUzsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFPgorc3RydWN0IHNwYW5fc3RvcmFnZTxFLCBkeW5hbWlj
X2V4dGVudD4geworICAgIGNvbnN0ZXhwciBzcGFuX3N0b3JhZ2UoKSBub2V4Y2VwdCA9IGRlZmF1
bHQ7CisKKyAgICBjb25zdGV4cHIgc3Bhbl9zdG9yYWdlKEUqIHBfcHRyLCBzdGQ6OnNpemVfdCBw
X3NpemUpIG5vZXhjZXB0CisgICAgICAgIDogcHRyKHBfcHRyKSwgc2l6ZShwX3NpemUpCisgICAg
e30KKworICAgIEUqIHB0ciA9IG51bGxwdHI7CisgICAgc3RkOjpzaXplX3Qgc2l6ZSA9IDA7Cit9
OworCisvLyBSZWltcGxlbWVudGF0aW9uIG9mIEMrKzE3IHN0ZDo6c2l6ZSgpIGFuZCBzdGQ6OmRh
dGEoKQorI2lmIGRlZmluZWQoVENCX1NQQU5fSEFWRV9DUFAxNykgfHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkZWZpbmVkKF9fY3BwX2xpYl9ub25t
ZW1iZXJfY29udGFpbmVyX2FjY2VzcykKK3VzaW5nIHN0ZDo6ZGF0YTsKK3VzaW5nIHN0ZDo6c2l6
ZTsKKyNlbHNlCit0ZW1wbGF0ZSA8Y2xhc3MgQz4KK2NvbnN0ZXhwciBhdXRvIHNpemUoY29uc3Qg
QyYgYykgLT4gZGVjbHR5cGUoYy5zaXplKCkpCit7CisgICAgcmV0dXJuIGMuc2l6ZSgpOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KK2NvbnN0ZXhwciBzdGQ6OnNpemVf
dCBzaXplKGNvbnN0IFQgKCYpW05dKSBub2V4Y2VwdAoreworICAgIHJldHVybiBOOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgQz4KK2NvbnN0ZXhwciBhdXRvIGRhdGEoQyYgYykgLT4gZGVjbHR5cGUo
Yy5kYXRhKCkpCit7CisgICAgcmV0dXJuIGMuZGF0YSgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
Qz4KK2NvbnN0ZXhwciBhdXRvIGRhdGEoY29uc3QgQyYgYykgLT4gZGVjbHR5cGUoYy5kYXRhKCkp
Cit7CisgICAgcmV0dXJuIGMuZGF0YSgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpz
aXplX3QgTj4KK2NvbnN0ZXhwciBUKiBkYXRhKFQgKCZhcnJheSlbTl0pIG5vZXhjZXB0Cit7Cisg
ICAgcmV0dXJuIGFycmF5OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRT4KK2NvbnN0ZXhwciBjb25z
dCBFKiBkYXRhKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxFPiBpbCkgbm9leGNlcHQKK3sKKyAgICBy
ZXR1cm4gaWwuYmVnaW4oKTsKK30KKyNlbmRpZiAvLyBUQ0JfU1BBTl9IQVZFX0NQUDE3CisKKyNp
ZiBkZWZpbmVkKFRDQl9TUEFOX0hBVkVfQ1BQMTcpIHx8IGRlZmluZWQoX19jcHBfbGliX3ZvaWRf
dCkKK3VzaW5nIHN0ZDo6dm9pZF90OworI2Vsc2UKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLj4KK3Vz
aW5nIHZvaWRfdCA9IHZvaWQ7CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit1c2lu
ZyB1bmN2cmVmX3QgPQorICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZT4K
K3N0cnVjdCBpc19zcGFuIDogc3RkOjpmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc3RkOjpzaXplX3QgUz4KK3N0cnVjdCBpc19zcGFuPFNwYW48VCwgUz4+IDogc3RkOjp0
cnVlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZT4KK3N0cnVjdCBpc19zdGRfYXJyYXkg
OiBzdGQ6OmZhbHNlX3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVf
dCBOPgorc3RydWN0IGlzX3N0ZF9hcnJheTxzdGQ6OmFycmF5PFQsIE4+PiA6IHN0ZDo6dHJ1ZV90
eXBlIHt9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4KK3N0cnVjdCBo
YXNfc2l6ZV9hbmRfZGF0YSA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgaGFzX3NpemVfYW5kX2RhdGE8VCwgdm9pZF90PGRlY2x0eXBlKGRldGFp
bDo6c2l6ZShzdGQ6OmRlY2x2YWw8VD4oKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT4+CisgICAg
OiBzdGQ6OnRydWVfdHlwZSB7fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIFUg
PSB1bmN2cmVmX3Q8Qz4+CitzdHJ1Y3QgaXNfY29udGFpbmVyIHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgdmFsdWUgPQorICAgICAgICAhaXNfc3BhbjxVPjo6dmFsdWUgJiYgIWlzX3N0ZF9h
cnJheTxVPjo6dmFsdWUgJiYKKyAgICAgICAgIXN0ZDo6aXNfYXJyYXk8VT46OnZhbHVlICYmIGhh
c19zaXplX2FuZF9kYXRhPEM+Ojp2YWx1ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dXNpbmcgcmVtb3ZlX3BvaW50ZXJfdCA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46
OnR5cGU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4K
K3N0cnVjdCBpc19jb250YWluZXJfZWxlbWVudF90eXBlX2NvbXBhdGlibGUgOiBzdGQ6OmZhbHNl
X3R5cGUge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPgorc3RydWN0IGlz
X2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKKyAgICBULCBFLAorICAgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2N2PGRlY2x0eXBlKAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmRh
dGEoc3RkOjpkZWNsdmFsPFQ+KCkpKT46OnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgdm9p
ZD46OnZhbHVlPjo6dHlwZT4KKyAgICA6IHN0ZDo6aXNfY29udmVydGlibGU8CisgICAgICAgICAg
cmVtb3ZlX3BvaW50ZXJfdDxkZWNsdHlwZShkZXRhaWw6OmRhdGEoc3RkOjpkZWNsdmFsPFQ+KCkp
KT4gKCopW10sCisgICAgICAgICAgRSAoKilbXT4ge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSwg
dHlwZW5hbWUgPSBzaXplX3Q+CitzdHJ1Y3QgaXNfY29tcGxldGUgOiBzdGQ6OmZhbHNlX3R5cGUg
e307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2NvbXBsZXRlPFQsIGRlY2x0
eXBlKHNpemVvZihUKSk+IDogc3RkOjp0cnVlX3R5cGUge307CisKK30gLy8gbmFtZXNwYWNlIGRl
dGFpbAorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVu
dD4KK2NsYXNzIFNwYW4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19vYmplY3Q8RWxlbWVu
dFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVtZW50VHlwZSBt
dXN0IGJlIGFuIG9iamVjdCB0eXBlIChub3QgYSAiCisgICAgICAgICAgICAgICAgICAicmVmZXJl
bmNlIHR5cGUgb3Igdm9pZCkiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRldGFpbDo6aXNfY29tcGxl
dGU8RWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJBIFNwYW4ncyBFbGVt
ZW50VHlwZSBtdXN0IGJlIGEgY29tcGxldGUgdHlwZSAobm90IGEgZm9yd2FyZCAiCisgICAgICAg
ICAgICAgICAgICAiZGVjbGFyYXRpb24pIik7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19h
YnN0cmFjdDxFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIkEgU3Bhbidz
IEVsZW1lbnRUeXBlIGNhbm5vdCBiZSBhbiBhYnN0cmFjdCBjbGFzcyB0eXBlIik7CisKKyAgICB1
c2luZyBzdG9yYWdlX3R5cGUgPSBkZXRhaWw6OnNwYW5fc3RvcmFnZTxFbGVtZW50VHlwZSwgRXh0
ZW50PjsKKworcHVibGljOgorICAgIC8vIGNvbnN0YW50cyBhbmQgdHlwZXMKKyAgICB1c2luZyBl
bGVtZW50X3R5cGUgPSBFbGVtZW50VHlwZTsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8RWxlbWVudFR5cGU+Ojp0eXBlOworICAgIHVzaW5nIHNpemVfdHlw
ZSA9IHN0ZDo6c2l6ZV90OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHN0ZDo6cHRyZGlm
Zl90OworICAgIHVzaW5nIHBvaW50ZXIgPSBlbGVtZW50X3R5cGUqOworICAgIHVzaW5nIGNvbnN0
X3BvaW50ZXIgPSBjb25zdCBlbGVtZW50X3R5cGUqOworICAgIHVzaW5nIHJlZmVyZW5jZSA9IGVs
ZW1lbnRfdHlwZSY7CisgICAgdXNpbmcgY29uc3RfcmVmZXJlbmNlID0gY29uc3QgZWxlbWVudF90
eXBlJjsKKyAgICB1c2luZyBpdGVyYXRvciA9IHBvaW50ZXI7CisgICAgdXNpbmcgcmV2ZXJzZV9p
dGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdHlwZSBleHRlbnQgPSBFeHRlbnQ7CisKKyAgICAvLyBbc3Bhbi5jb25z
XSwgU3BhbiBjb25zdHJ1Y3RvcnMsIGNvcHksIGFzc2lnbm1lbnQsIGFuZCBkZXN0cnVjdG9yCisg
ICAgdGVtcGxhdGUgPAorICAgICAgICBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAgICB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwoRSA9PSBkeW5hbWljX2V4dGVudCB8fCBFIDw9IDApLCBp
bnQ+Ojp0eXBlID0gMD4KKyAgICBjb25zdGV4cHIgU3BhbigpIG5vZXhjZXB0CisgICAge30KKwor
ICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW4ocG9pbnRlciBwdHIsIHNpemVfdHlwZSBjb3Vu
dCkKKyAgICAgICAgOiBzdG9yYWdlXyhwdHIsIGNvdW50KQorICAgIHsKKyAgICAgICAgVENCX1NQ
QU5fRVhQRUNUKGV4dGVudCA9PSBkeW5hbWljX2V4dGVudCB8fCBjb3VudCA9PSBleHRlbnQpOwor
ICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNwYW4ocG9pbnRlciBmaXJzdF9lbGVt
LCBwb2ludGVyIGxhc3RfZWxlbSkKKyAgICAgICAgOiBzdG9yYWdlXyhmaXJzdF9lbGVtLCBsYXN0
X2VsZW0gLSBmaXJzdF9lbGVtKQorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKGV4dGVu
dCA9PSBkeW5hbWljX2V4dGVudCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9lbGVt
IC0gZmlyc3RfZWxlbSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHN0ZDo6cHRyZGlmZl90PihleHRlbnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8c3RkOjpz
aXplX3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgICAgICAgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAoRSA9PSBkeW5hbWljX2V4dGVudCB8
fCBOID09IEUpICYmCisgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWluZXJf
ZWxlbWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnRfdHlwZSAoJilbTl0sIEVsZW1lbnRUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICBp
bnQ+Ojp0eXBlID0gMD4KKyAgICBjb25zdGV4cHIgU3BhbihlbGVtZW50X3R5cGUgKCZhcnIpW05d
KSBub2V4Y2VwdCA6IHN0b3JhZ2VfKGFyciwgTikKKyAgICB7fQorCisgICAgdGVtcGxhdGUgPHN0
ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAgICAgICAgIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAgICAgICAgICAgKEUgPT0gZHluYW1pY19leHRl
bnQgfHwgTiA9PSBFKSAmJgorICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29udGFp
bmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmFycmF5PHZhbHVlX3R5cGUsIE4+JiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgIGludD46OnR5cGUgPSAwPgorICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiBT
cGFuKHN0ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mIGFycikgbm9leGNlcHQKKyAgICAgICAgOiBz
dG9yYWdlXyhhcnIuZGF0YSgpLCBOKQorICAgIHt9CisKKyAgICB0ZW1wbGF0ZSA8c3RkOjpzaXpl
X3QgTiwgc3RkOjpzaXplX3QgRSA9IEV4dGVudCwKKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8CisgICAgICAgICAgICAgICAgICAoRSA9PSBkeW5hbWljX2V4dGVudCB8fCBO
ID09IEUpICYmCisgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jb250YWluZXJfZWxl
bWVudF90eXBlX2NvbXBhdGlibGU8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6YXJyYXk8dmFsdWVfdHlwZSwgTj4mLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgaW50Pjo6dHlwZSA9IDA+CisgICAgVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNw
YW4oY29uc3Qgc3RkOjphcnJheTx2YWx1ZV90eXBlLCBOPiYgYXJyKSBub2V4Y2VwdAorICAgICAg
ICA6IHN0b3JhZ2VfKGFyci5kYXRhKCksIE4pCisgICAge30KKworICAgIHRlbXBsYXRlIDwKKyAg
ICAgICAgdHlwZW5hbWUgQ29udGFpbmVyLCBzdGQ6OnNpemVfdCBFID0gRXh0ZW50LAorICAgICAg
ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgIEUgPT0gZHluYW1pY19leHRl
bnQgJiYgZGV0YWlsOjppc19jb250YWluZXI8Q29udGFpbmVyPjo6dmFsdWUgJiYKKyAgICAgICAg
ICAgICAgICBkZXRhaWw6OmlzX2NvbnRhaW5lcl9lbGVtZW50X3R5cGVfY29tcGF0aWJsZTwKKyAg
ICAgICAgICAgICAgICAgICAgQ29udGFpbmVyJiwgRWxlbWVudFR5cGU+Ojp2YWx1ZSwKKyAgICAg
ICAgICAgIGludD46OnR5cGUgPSAwPgorICAgIGNvbnN0ZXhwciBTcGFuKENvbnRhaW5lciYgY29u
dCkKKyAgICAgICAgOiBzdG9yYWdlXyhkZXRhaWw6OmRhdGEoY29udCksIGRldGFpbDo6c2l6ZShj
b250KSkKKyAgICB7fQorCisgICAgdGVtcGxhdGUgPAorICAgICAgICB0eXBlbmFtZSBDb250YWlu
ZXIsIHN0ZDo6c2l6ZV90IEUgPSBFeHRlbnQsCisgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPAorICAgICAgICAgICAgRSA9PSBkeW5hbWljX2V4dGVudCAmJiBkZXRhaWw6OmlzX2NvbnRh
aW5lcjxDb250YWluZXI+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgIGRldGFpbDo6aXNfY29u
dGFpbmVyX2VsZW1lbnRfdHlwZV9jb21wYXRpYmxlPAorICAgICAgICAgICAgICAgICAgICBjb25z
dCBDb250YWluZXImLCBFbGVtZW50VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgaW50Pjo6dHlw
ZSA9IDA+CisgICAgY29uc3RleHByIFNwYW4oY29uc3QgQ29udGFpbmVyJiBjb250KQorICAgICAg
ICA6IHN0b3JhZ2VfKGRldGFpbDo6ZGF0YShjb250KSwgZGV0YWlsOjpzaXplKGNvbnQpKQorICAg
IHt9CisKKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBk
ZWZhdWx0OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE90aGVyRWxlbWVudFR5cGUsIHN0ZDo6
c2l6ZV90IE90aGVyRXh0ZW50LAorICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjwKKyAgICAgICAgICAgICAgICAgIChFeHRlbnQgPT0gT3RoZXJFeHRlbnQgfHwgRXh0ZW50ID09
IGR5bmFtaWNfZXh0ZW50KSAmJgorICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVy
dGlibGU8T3RoZXJFbGVtZW50VHlwZSAoKilbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZW1lbnRUeXBlICgqKVtdPjo6dmFsdWUsCisgICAgICAgICAgICAg
ICAgICBpbnQ+Ojp0eXBlID0gMD4KKyAgICBjb25zdGV4cHIgU3Bhbihjb25zdCBTcGFuPE90aGVy
RWxlbWVudFR5cGUsIE90aGVyRXh0ZW50PiYgb3RoZXIpIG5vZXhjZXB0CisgICAgICAgIDogc3Rv
cmFnZV8ob3RoZXIuZGF0YSgpLCBvdGhlci5zaXplKCkpCisgICAge30KKworICAgIH5TcGFuKCkg
bm9leGNlcHQgPSBkZWZhdWx0OworCisgICAgVENCX1NQQU5fQ09OU1RFWFBSX0FTU0lHTiBTcGFu
JgorICAgIG9wZXJhdG9yPShjb25zdCBTcGFuJiBvdGhlcikgbm9leGNlcHQgPSBkZWZhdWx0Owor
CisgICAgLy8gW3NwYW4uc3ViXSwgc3BhbiBzdWJ2aWV3cworICAgIHRlbXBsYXRlIDxzdGQ6OnNp
emVfdCBDb3VudD4KKyAgICBUQ0JfU1BBTl9DT05TVEVYUFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwg
Q291bnQ+IGZpcnN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VYUEVDVChDb3Vu
dCA8PSBzaXplKCkpOworICAgICAgICByZXR1cm4ge2RhdGEoKSwgQ291bnR9OworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBDb3VudD4KKyAgICBUQ0JfU1BBTl9DT05TVEVYUFIx
MSBTcGFuPGVsZW1lbnRfdHlwZSwgQ291bnQ+IGxhc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAg
VENCX1NQQU5fRVhQRUNUKENvdW50IDw9IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgp
ICsgKHNpemUoKSAtIENvdW50KSwgQ291bnR9OworICAgIH0KKworICAgIHRlbXBsYXRlIDxzdGQ6
OnNpemVfdCBPZmZzZXQsIHN0ZDo6c2l6ZV90IENvdW50ID0gZHluYW1pY19leHRlbnQ+CisgICAg
dXNpbmcgc3Vic3Bhbl9yZXR1cm5fdCA9CisgICAgICAgIFNwYW48RWxlbWVudFR5cGUsIENvdW50
ICE9IGR5bmFtaWNfZXh0ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IENvdW50
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChFeHRlbnQgIT0gZHluYW1pY19leHRl
bnQgPyBFeHRlbnQgLSBPZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGR5bmFtaWNfZXh0ZW50KT47CisKKyAgICB0ZW1wbGF0
ZSA8c3RkOjpzaXplX3QgT2Zmc2V0LCBzdGQ6OnNpemVfdCBDb3VudCA9IGR5bmFtaWNfZXh0ZW50
PgorICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIHN1YnNwYW5fcmV0dXJuX3Q8T2Zmc2V0LCBDb3Vu
dD4gc3Vic3BhbigpIGNvbnN0CisgICAgeworICAgICAgICBUQ0JfU1BBTl9FWFBFQ1QoT2Zmc2V0
IDw9IHNpemUoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ID09IGR5bmFtaWNf
ZXh0ZW50IHx8IE9mZnNldCArIENvdW50IDw9IHNpemUoKSkpOworICAgICAgICByZXR1cm4ge2Rh
dGEoKSArIE9mZnNldCwKKyAgICAgICAgICAgICAgICBDb3VudCAhPSBkeW5hbWljX2V4dGVudCA/
IENvdW50IDogc2l6ZSgpIC0gT2Zmc2V0fTsKKyAgICB9CisKKyAgICBUQ0JfU1BBTl9DT05TVEVY
UFIxMSBTcGFuPGVsZW1lbnRfdHlwZSwgZHluYW1pY19leHRlbnQ+CisgICAgZmlyc3Qoc2l6ZV90
eXBlIGNvdW50KSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5fRVhQRUNUKGNvdW50IDw9
IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgpLCBjb3VudH07CisgICAgfQorCisgICAg
VENCX1NQQU5fQ09OU1RFWFBSMTEgU3BhbjxlbGVtZW50X3R5cGUsIGR5bmFtaWNfZXh0ZW50Pgor
ICAgIGxhc3Qoc2l6ZV90eXBlIGNvdW50KSBjb25zdAorICAgIHsKKyAgICAgICAgVENCX1NQQU5f
RVhQRUNUKGNvdW50IDw9IHNpemUoKSk7CisgICAgICAgIHJldHVybiB7ZGF0YSgpICsgKHNpemUo
KSAtIGNvdW50KSwgY291bnR9OworICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNURVhQUjExIFNw
YW48ZWxlbWVudF90eXBlLCBkeW5hbWljX2V4dGVudD4KKyAgICBzdWJzcGFuKHNpemVfdHlwZSBv
ZmZzZXQsIHNpemVfdHlwZSBjb3VudCA9IGR5bmFtaWNfZXh0ZW50KSBjb25zdAorICAgIHsKKyAg
ICAgICAgVENCX1NQQU5fRVhQRUNUKG9mZnNldCA8PSBzaXplKCkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgIChjb3VudCA9PSBkeW5hbWljX2V4dGVudCB8fCBvZmZzZXQgKyBjb3VudCA8PSBz
aXplKCkpKTsKKyAgICAgICAgcmV0dXJuIHtkYXRhKCkgKyBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgY291bnQgPT0gZHluYW1pY19leHRlbnQgPyBzaXplKCkgLSBvZmZzZXQgOiBjb3VudH07Cisg
ICAgfQorCisgICAgLy8gW3NwYW4ub2JzXSwgc3BhbiBvYnNlcnZlcnMKKyAgICBjb25zdGV4cHIg
c2l6ZV90eXBlIHNpemUoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBzdG9yYWdlXy5zaXplOyB9
CisKKyAgICBjb25zdGV4cHIgc2l6ZV90eXBlIHNpemVfYnl0ZXMoKSBjb25zdCBub2V4Y2VwdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHNpemUoKSAqIHNpemVvZihlbGVtZW50X3R5cGUpOworICAg
IH0KKworICAgIFRDQl9TUEFOX05PRElTQ0FSRCBjb25zdGV4cHIgYm9vbCBlbXB0eSgpIGNvbnN0
IG5vZXhjZXB0CisgICAgeworICAgICAgICByZXR1cm4gc2l6ZSgpID09IDA7CisgICAgfQorCisg
ICAgLy8gW3NwYW4uZWxlbV0sIHNwYW4gZWxlbWVudCBhY2Nlc3MKKyAgICBUQ0JfU1BBTl9DT05T
VEVYUFIxMSByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaWR4KSBjb25zdAorICAgIHsK
KyAgICAgICAgVENCX1NQQU5fRVhQRUNUKGlkeCA8IHNpemUoKSk7CisgICAgICAgIHJldHVybiAq
KGRhdGEoKSArIGlkeCk7CisgICAgfQorCisgICAgVENCX1NQQU5fQ09OU1RFWFBSMTEgcmVmZXJl
bmNlIGZyb250KCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VYUEVDVCghZW1wdHko
KSk7CisgICAgICAgIHJldHVybiAqZGF0YSgpOworICAgIH0KKworICAgIFRDQl9TUEFOX0NPTlNU
RVhQUjExIHJlZmVyZW5jZSBiYWNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIFRDQl9TUEFOX0VY
UEVDVCghZW1wdHkoKSk7CisgICAgICAgIHJldHVybiAqKGRhdGEoKSArIChzaXplKCkgLSAxKSk7
CisgICAgfQorCisgICAgY29uc3RleHByIHBvaW50ZXIgZGF0YSgpIGNvbnN0IG5vZXhjZXB0IHsg
cmV0dXJuIHN0b3JhZ2VfLnB0cjsgfQorCisgICAgLy8gW3NwYW4uaXRlcmF0b3JzXSwgc3BhbiBp
dGVyYXRvciBzdXBwb3J0CisgICAgY29uc3RleHByIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qgbm9l
eGNlcHQgeyByZXR1cm4gZGF0YSgpOyB9CisKKyAgICBjb25zdGV4cHIgaXRlcmF0b3IgZW5kKCkg
Y29uc3Qgbm9leGNlcHQgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9CisKKyAgICBUQ0JfU1BB
Tl9BUlJBWV9DT05TVEVYUFIgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCBub2V4Y2Vw
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOworICAgIH0K
KworICAgIFRDQl9TUEFOX0FSUkFZX0NPTlNURVhQUiByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBj
b25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVn
aW4oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0b3JhZ2VfdHlwZSBzdG9yYWdlX3t9Owor
fTsKKworI2lmZGVmIFRDQl9TUEFOX0hBVkVfREVEVUNUSU9OX0dVSURFUworCisvKiBEZWR1Y3Rp
b24gR3VpZGVzICovCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+CitTcGFuKFQgKCYpW05d
KS0+U3BhbjxULCBOPjsKKwordGVtcGxhdGUgPGNsYXNzIFQsIHNpemVfdCBOPgorU3BhbihzdGQ6
OmFycmF5PFQsIE4+JiktPlNwYW48VCwgTj47CisKK3RlbXBsYXRlIDxjbGFzcyBULCBzaXplX3Qg
Tj4KK1NwYW4oY29uc3Qgc3RkOjphcnJheTxULCBOPiYpLT5TcGFuPGNvbnN0IFQsIE4+OworCit0
ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgorU3BhbihDb250YWluZXImKS0+U3Bhbjx0eXBlbmFt
ZSBDb250YWluZXI6OnZhbHVlX3R5cGU+OworCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgor
U3Bhbihjb25zdCBDb250YWluZXImKS0+U3Bhbjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZh
bHVlX3R5cGU+OworCisjZW5kaWYgLy8gVENCX1NQQU5fSEFWRV9ERURVQ1RJT05fR1VJREVTCisK
KyNpZmRlZiBUQ0JfU1BBTl9JTkNMVURFX01BS0VfU1BBTgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGUsIHN0ZDo6c2l6ZV90IEV4dGVudD4KK2NvbnN0ZXhwciBTcGFuPEVsZW1lbnRU
eXBlLCBFeHRlbnQ+CittYWtlX3NwYW4oU3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50PiBzKSBub2V4
Y2VwdAoreworICAgIHJldHVybiBzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpz
aXplX3QgTj4KK2NvbnN0ZXhwciBTcGFuPFQsIE4+IG1ha2Vfc3BhbihUICgmYXJyKVtOXSkgbm9l
eGNlcHQKK3sKKyAgICByZXR1cm4ge2Fycn07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBz
dGQ6OnNpemVfdCBOPgorVENCX1NQQU5fQVJSQVlfQ09OU1RFWFBSIFNwYW48VCwgTj4gbWFrZV9z
cGFuKHN0ZDo6YXJyYXk8VCwgTj4mIGFycikgbm9leGNlcHQKK3sKKyAgICByZXR1cm4ge2Fycn07
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgorVENCX1NQQU5fQVJS
QVlfQ09OU1RFWFBSIFNwYW48Y29uc3QgVCwgTj4KK21ha2Vfc3Bhbihjb25zdCBzdGQ6OmFycmF5
PFQsIE4+JiBhcnIpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHthcnJ9OworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgorY29uc3RleHByIFNwYW48dHlwZW5hbWUgQ29udGFpbmVy
Ojp2YWx1ZV90eXBlPiBtYWtlX3NwYW4oQ29udGFpbmVyJiBjb250KQoreworICAgIHJldHVybiB7
Y29udH07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Citjb25zdGV4cHIgU3Bh
bjxjb25zdCB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+CittYWtlX3NwYW4oY29uc3Qg
Q29udGFpbmVyJiBjb250KQoreworICAgIHJldHVybiB7Y29udH07Cit9CisjZW5kaWYgLy8gVENC
X1NQQU5fSU5DTFVERV9NQUtFX1NQQU4KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
LCBzdGQ6OnNpemVfdCBFeHRlbnQ+CitTcGFuPGNvbnN0IGJ5dGUsICgoRXh0ZW50ID09IGR5bmFt
aWNfZXh0ZW50KSA/IGR5bmFtaWNfZXh0ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IHNpemVvZihFbGVtZW50VHlwZSkgKiBFeHRlbnQpPgorYXNCeXRl
cyhTcGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHty
ZWludGVycHJldF9jYXN0PGNvbnN0IGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsK
K30KKwordGVtcGxhdGUgPAorICAgIGNsYXNzIEVsZW1lbnRUeXBlLCBzaXplX3QgRXh0ZW50LAor
ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnN0PEVsZW1lbnRUeXBlPjo6
dmFsdWUsIGludD46OnR5cGUgPSAwPgorU3BhbjxieXRlLCAoKEV4dGVudCA9PSBkeW5hbWljX2V4
dGVudCkgPyBkeW5hbWljX2V4dGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBzaXplb2YoRWxlbWVudFR5cGUpICogRXh0ZW50KT4KK2FzV3JpdGFibGVCeXRlcyhT
cGFuPEVsZW1lbnRUeXBlLCBFeHRlbnQ+IHMpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHtyZWlu
dGVycHJldF9jYXN0PGJ5dGUqPihzLmRhdGEoKSksIHMuc2l6ZV9ieXRlcygpfTsKK30KKwordGVt
cGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIEUsIHN0ZDo6c2l6ZV90IFM+Citjb25zdGV4
cHIgYXV0byBnZXQoU3BhbjxFLCBTPiBzKSAtPiBkZWNsdHlwZShzW05dKQoreworICAgIHJldHVy
biBzW05dOworfQorCit9IC8vIG5hbWVzcGFjZSBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRQorCitu
YW1lc3BhY2Ugc3RkIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3Qg
RXh0ZW50PgorY2xhc3MgdHVwbGVfc2l6ZTxUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6U3BhbjxF
bGVtZW50VHlwZSwgRXh0ZW50Pj4KKyAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXpl
X3QsIEV4dGVudD4ge307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2NsYXNz
IHR1cGxlX3NpemU8VENCX1NQQU5fTkFNRVNQQUNFX05BTUU6OlNwYW48CisgICAgRWxlbWVudFR5
cGUsIFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudD4+OyAvLyBub3QgZGVm
aW5lZAorCit0ZW1wbGF0ZSA8c2l6ZV90IEksIHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3Qg
RXh0ZW50PgorY2xhc3MgdHVwbGVfZWxlbWVudDxJLCBUQ0JfU1BBTl9OQU1FU1BBQ0VfTkFNRTo6
U3BhbjxFbGVtZW50VHlwZSwgRXh0ZW50Pj4geworcHVibGljOgorICAgIHN0YXRpY19hc3NlcnQo
RXh0ZW50ICE9IFRDQl9TUEFOX05BTUVTUEFDRV9OQU1FOjpkeW5hbWljX2V4dGVudCAmJgorICAg
ICAgICAgICAgICAgICAgICAgIEkgPCBFeHRlbnQsCisgICAgICAgICAgICAgICAgICAiIik7Cisg
ICAgdXNpbmcgdHlwZSA9IEVsZW1lbnRUeXBlOworfTsKKworfSAvLyBlbmQgbmFtZXNwYWNlIHN0
ZAorCit1c2luZyBXVEY6OlNwYW47Cit1c2luZyBXVEY6OmFzQnl0ZXM7Cit1c2luZyBXVEY6OmFz
V3JpdGFibGVCeXRlczsKKworI2VuZGlmIC8vIFRDQl9TUEFOX0hQUF9JTkNMVURFRApJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjc4NjA2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMDYtMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBjb3B5IG9mIHN0ZDo6c3BhbiBzbyB0aGF0IHdlIGNhbiB1c2UgaXQgcHJlLW1vdmluZyB0
byBjKysyMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBBZGQgYmFzaWMgV1RGOjpTcGFuIHRlc3QgdG8gbWFrZSBzdXJlIHRoaW5ncyBjb21waWxlIGFu
ZCB3b3JrLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TcGFuLmNwcDogQWRkZWQuCisK
IDIwMjEtMDYtMDggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtGbGF0cGFrIFNES10gRW5hYmxlIG5ldHdvcmsgYWNjZXNzIGluIHRoZSBXUEUgYnVp
bGQgc2FuZGJveApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
Nzg1MzkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC04NCw2ICs4NCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYv
U2NvcGUuY3BwCiAgICAgVGVzdHMvV1RGL1Njb3BlZExhbWJkYS5jcHAKICAgICBUZXN0cy9XVEYv
U2V0Rm9yU2NvcGUuY3BwCisgICAgVGVzdHMvV1RGL1NwYW4uY3BwCiAgICAgVGVzdHMvV1RGL1N0
ZExpYkV4dHJhcy5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKICAgICBUZXN0
cy9XVEYvU3RyaW5nQ29uY2F0ZW5hdGUuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjc4NTM5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk4MSw2ICs5ODEsNyBA
QAogCQlCQzU3NUJEOTEyNkY1OEUyMDA2RjBGMTIgLyogUGxhdGZvcm1VdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzVCQkYxMjZG
NTc1MjAwNkYwRjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJQkM1NzVCRTAx
MjZGNTkwRDAwNkYwRjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMzE4ODQxMTcxMTRCNjAwQjY5NzI3
IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFjLm1tICovOyB9OwogCQlCQzkwOTc4NDEyNTU3MUNGMDAw
ODM3NTYgLyogc2ltcGxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM5MDk3NzgxMjU1NzFBQjAwMDgzNzU2IC8qIHNpbXBsZS5odG1s
ICovOyB9OworCQlCQ0EzMEM3RTI2NkQyRjQzMDAwRDIzMEMgLyogU3Bhbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzMEM3RDI2NkQyRjQzMDAw
RDIzMEMgLyogU3Bhbi5jcHAgKi87IH07CiAJCUJDQUE0ODU2MTRBMDQ0NEMwMDg4RkFDNCAvKiBz
aW1wbGUtdGFsbC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDQUE0ODU1MTRBMDIxNjQwMDg4RkFDNCAvKiBzaW1wbGUtdGFsbC5odG1s
ICovOyB9OwogCQlCQ0I2ODA0MjEyNkZCRkYxMDA2NDJBNjEgLyogRG9jdW1lbnRTdGFydFVzZXJT
Y3JpcHRBbGVydENyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0I2ODA0MTEyNkZCRkYxMDA2NDJBNjEgLyogRG9jdW1lbnRTdGFy
dFVzZXJTY3JpcHRBbGVydENyYXNoX0J1bmRsZS5jcHAgKi87IH07CiAJCUJDQkQzNzM3MTI1QUJC
RUIwMEQyQzI5RiAvKiBpY29uLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMzcyRTEyNUFCQkU2MDBEMkMyOUYgLyogaWNvbi5wbmcg
Ki87IH07CkBAIC0yNzQ3LDYgKzI3NDgsNyBAQAogCQlCQzkwOTc3OTEyNTU3MUFCMDAwODM3NTYg
LyogUGFnZUxvYWRCYXNpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQYWdlTG9hZEJhc2ljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5MDk5
NUQxMjU2N0JDMTAwMDgzNzU2IC8qIFdLU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM5MDk5OTMxMjU2QUNGMTAwMDgzNzU2IC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTdHJpbmdKU1N0cmluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQTMwQzdEMjY2RDJGNDMwMDBEMjMwQyAvKiBT
cGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwYW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FBNDg1NTE0QTAyMTY0MDA4OEZBQzQgLyog
c2ltcGxlLXRhbGwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaW1wbGUtdGFs
bC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTQ4NTcxNEEwNDRENDAw
ODhGQUM0IC8qIEVkaXRvckNvbW1hbmRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRWRpdG9yQ29tbWFuZHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQjY4MDNGMTI2RkJGRTEwMDY0MkE2MSAvKiBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFs
ZXJ0Q3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1l
bnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ0ODQsNiArNDQ4Niw3IEBACiAJCQkJRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8q
IFNpZ25hbHMuY3BwICovLAogCQkJCTMzQzJDOUMwMjY1MUY1QjkwMEU0MDdGNiAvKiBTbWFsbFNl
dC5jcHAgKi8sCiAJCQkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFw
LmNwcCAqLywKKwkJCQlCQ0EzMEM3RDI2NkQyRjQzMDAwRDIzMEMgLyogU3Bhbi5jcHAgKi8sCiAJ
CQkJRkUyQkNEQzYyNDcwRkM3MDAwREVDMzNCIC8qIFN0ZExpYkV4dHJhcy5jcHAgKi8sCiAJCQkJ
ODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICovLAogCQkJCTdD
RDRDMjZDMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0ZS5jcHAgKi8sCkBAIC01
MTkyLDYgKzUxOTUsNyBAQAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3Rl
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmls
ZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzIxMDUxOTI2MTk3OUYzMDAxNTdDNjcg
LyogRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNBMzBDN0UyNjZEMkY0MzAw
MEQyMzBDIC8qIFNwYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxMENEMzgxRUY3MDhGQjAw
NTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZCRkQyOTRDMUQ1RTZD
MUQwMDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNE
NjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Bhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Bhbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Bhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3
dGYvU3Bhbi5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGU3Bhbiwg
Q29uc3RydWN0b3IpCit7CisgICAgU3Bhbjx1aW50OF90PiBhU3BhbjsKKyAgICBFWFBFQ1RfRVEo
YVNwYW4uc2l6ZSgpLCAwdSk7Cit9CisKK30K
</data>
<flag name="commit-queue"
          id="452482"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>