<?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>211880</bug_id>
          
          <creation_ts>2020-05-13 21:25:03 -0700</creation_ts>
          <short_desc>Use templates to reduce duplicate code in Persistence::Decoder and Persistence::Encoder classes</short_desc>
          <delta_ts>2020-06-07 21:47:08 -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>Web Template Framework</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211861</see_also>
          <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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>1998zhangyi</cc>
    
    <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>useafterfree</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652510</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-13 21:25:03 -0700</bug_when>
    <thetext>Use templates to reduce duplicate code in Persistence::Decoder and Persistence::Encoder classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652511</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-13 21:25:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/63213462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652512</commentid>
    <comment_count>2</comment_count>
      <attachid>399331</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-13 21:36:19 -0700</bug_when>
    <thetext>Created attachment 399331
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652513</commentid>
    <comment_count>3</comment_count>
      <attachid>399331</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-13 21:40:18 -0700</bug_when>
    <thetext>Comment on attachment 399331
Patch v1

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

&gt; Source/WTF/wtf/persistence/PersistentDecoder.h:79
&gt;      }

Is this static_assert() still needed now that the Decoder::operator&lt;&lt;() method is a template?

    template&lt;typename E, std::enable_if_t&lt;std::is_enum&lt;E&gt;::value&gt;* = nullptr&gt;
    Decoder&amp; operator&gt;&gt;(Optional&lt;E&gt;&amp; result)
    {
        static_assert(sizeof(E) &lt;= 8, &quot;Enum type T must not be larger than 64 bits!&quot;);
        [...]
    }

&gt; Source/WTF/wtf/persistence/PersistentEncoder.h:51
&gt; +        static_assert(sizeof(E) &lt;= sizeof(uint64_t), &quot;Enum type must not be larger than 64 bits.&quot;);

Is this static_assert() still needed now that the method is a template?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652518</commentid>
    <comment_count>4</comment_count>
      <attachid>399331</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-13 22:04:41 -0700</bug_when>
    <thetext>Comment on attachment 399331
Patch v1

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

&gt;&gt; Source/WTF/wtf/persistence/PersistentEncoder.h:51
&gt;&gt; +        static_assert(sizeof(E) &lt;= sizeof(uint64_t), &quot;Enum type must not be larger than 64 bits.&quot;);
&gt; 
&gt; Is this static_assert() still needed now that the method is a template?

This is still needed.  In the decoder we should change 8 to sizeof(uint64_t).
We also can&apos;t make this change (uint64_t to std::underlying_type) because existing persisted data has encoded enums as 64-bit values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652653</commentid>
    <comment_count>5</comment_count>
      <attachid>399363</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 08:57:16 -0700</bug_when>
    <thetext>Created attachment 399363
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652655</commentid>
    <comment_count>6</comment_count>
      <attachid>399331</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 08:57:56 -0700</bug_when>
    <thetext>Comment on attachment 399331
Patch v1

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

&gt;&gt;&gt; Source/WTF/wtf/persistence/PersistentEncoder.h:51
&gt;&gt;&gt; +        static_assert(sizeof(E) &lt;= sizeof(uint64_t), &quot;Enum type must not be larger than 64 bits.&quot;);
&gt;&gt; 
&gt;&gt; Is this static_assert() still needed now that the method is a template?
&gt; 
&gt; This is still needed.  In the decoder we should change 8 to sizeof(uint64_t).
&gt; We also can&apos;t make this change (uint64_t to std::underlying_type) because existing persisted data has encoded enums as 64-bit values.

Fixed in v2.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652660</commentid>
    <comment_count>7</comment_count>
      <attachid>399364</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 09:11:44 -0700</bug_when>
    <thetext>Created attachment 399364
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652661</commentid>
    <comment_count>8</comment_count>
      <attachid>399363</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 09:12:30 -0700</bug_when>
    <thetext>Comment on attachment 399363
Patch v2

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

&gt; Source/WTF/wtf/persistence/PersistentDecoder.h:54
&gt; +            Encoder::updateChecksumForNumber(m_sha1, value);

To fix the WinCairo build, I think this needs to be:

            Encoder::updateChecksumForNumber&lt;T&gt;(m_sha1, value);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652683</commentid>
    <comment_count>9</comment_count>
      <attachid>399374</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 10:15:55 -0700</bug_when>
    <thetext>Created attachment 399374
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652684</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 10:16:32 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #9)
&gt; Created attachment 399374 [details]
&gt; Patch v4

Still trying to fix WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652687</commentid>
    <comment_count>11</comment_count>
      <attachid>399376</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 10:27:14 -0700</bug_when>
    <thetext>Created attachment 399376
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652705</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 11:21:02 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #11)
&gt; Created attachment 399376 [details]
&gt; Patch v5

I think I need to make Encoder::Salt public (not private) since it&apos;s used outside the Persistence::Encoder class in Persistence::Decoder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652713</commentid>
    <comment_count>13</comment_count>
      <attachid>399384</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 11:29:51 -0700</bug_when>
    <thetext>Created attachment 399384
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652770</commentid>
    <comment_count>14</comment_count>
      <attachid>399399</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 13:28:23 -0700</bug_when>
    <thetext>Created attachment 399399
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652779</commentid>
    <comment_count>15</comment_count>
      <attachid>399399</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 13:42:10 -0700</bug_when>
    <thetext>Comment on attachment 399399
Patch v7

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

&gt; Source/WTF/wtf/persistence/PersistentEncoder.h:-87
&gt; -    template &lt;typename Type&gt; struct Salt;

Made Encoder::Salt public to try to fix WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652782</commentid>
    <comment_count>16</comment_count>
      <attachid>399402</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 13:48:58 -0700</bug_when>
    <thetext>Created attachment 399402
Patch v8

Still trying to fix the WinCairo build.  Pulled updateChecksumForData() and updateChecksumForNumber() out of the Encoder class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652789</commentid>
    <comment_count>17</comment_count>
      <attachid>399399</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 14:10:09 -0700</bug_when>
    <thetext>Comment on attachment 399399
Patch v7

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

&gt;&gt; Source/WTF/wtf/persistence/PersistentEncoder.h:-87
&gt;&gt; -    template &lt;typename Type&gt; struct Salt;
&gt; 
&gt; Made Encoder::Salt public to try to fix WinCairo build.

That didn&apos;t work.  I&apos;m out of ideas.  I think the WinCairo EWS VC++ compiler is out-of-date.  Every other platform (including AppleWin) build these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652813</commentid>
    <comment_count>18</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 15:16:57 -0700</bug_when>
    <thetext>I need C++ template help to fix the WinCario build errors.  I don&apos;t understand what Visual C++ is complaining about:

[32/422] Building CXX object Source\WebCore\CMakeFiles\WebCore.dir\platform\network\curl\CertificateInfoCurl.cpp.obj
FAILED: Source/WebCore/CMakeFiles/WebCore.dir/platform/network/curl/CertificateInfoCurl.cpp.obj 
[...]
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): error C2672: &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;: no matching overloaded function found
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentCoders.h(261): note: see reference to function template instantiation &apos;WTF::Persistence::Encoder &amp;WTF::Persistence::Encoder::operator &lt;&lt;&lt;double,0x0&gt;(T)&apos; being compiled
        with
        [
            T=double
        ]
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): error C2893: Failed to specialize function template &apos;void WTF::Persistence::Encoder::updateChecksumForNumber(WTF::SHA1 &amp;,T)&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(76): note: see declaration of &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): note: With the following template arguments:
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): note: &apos;T=T&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): error C2672: &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;: no matching overloaded function found
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentCoders.h(267): note: see reference to function template instantiation &apos;WTF::Persistence::Decoder &amp;WTF::Persistence::Decoder::operator &gt;&gt;&lt;double,0x0&gt;(WTF::Optional&lt;double&gt; &amp;)&apos; being compiled
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): error C2893: Failed to specialize function template &apos;void WTF::Persistence::Encoder::updateChecksumForNumber(WTF::SHA1 &amp;,T)&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(76): note: see declaration of &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): note: With the following template arguments:
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): note: &apos;T=T&apos;
[36/422] Building CXX object Source\WebCore\CMakeFiles\WebCore.dir\platform\network\curl\CurlContext.cpp.obj
FAILED: Source/WebCore/CMakeFiles/WebCore.dir/platform/network/curl/CurlContext.cpp.obj 
[...]
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): error C2672: &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;: no matching overloaded function found
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentCoders.h(261): note: see reference to function template instantiation &apos;WTF::Persistence::Encoder &amp;WTF::Persistence::Encoder::operator &lt;&lt;&lt;double,0x0&gt;(T)&apos; being compiled
        with
        [
            T=double
        ]
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): error C2893: Failed to specialize function template &apos;void WTF::Persistence::Encoder::updateChecksumForNumber(WTF::SHA1 &amp;,T)&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(76): note: see declaration of &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): note: With the following template arguments:
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(66): note: &apos;T=T&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): error C2672: &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;: no matching overloaded function found
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentCoders.h(267): note: see reference to function template instantiation &apos;WTF::Persistence::Decoder &amp;WTF::Persistence::Decoder::operator &gt;&gt;&lt;double,0x0&gt;(WTF::Optional&lt;double&gt; &amp;)&apos; being compiled
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): error C2893: Failed to specialize function template &apos;void WTF::Persistence::Encoder::updateChecksumForNumber(WTF::SHA1 &amp;,T)&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentEncoder.h(76): note: see declaration of &apos;WTF::Persistence::Encoder::updateChecksumForNumber&apos;
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): note: With the following template arguments:
C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentDecoder.h(54): note: &apos;T=T&apos;

Here are pages explaining the two error codes:

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2672?view=vs-2019
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2893?view=vs-2019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652828</commentid>
    <comment_count>19</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 15:29:48 -0700</bug_when>
    <thetext>Hold on.  I think I know what&apos;s going on.

Encoder::updateChecksumForNumber() used `typename Type` instead of `typename T`, which differed from other template functions in the Persistence::Encoder class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652834</commentid>
    <comment_count>20</comment_count>
      <attachid>399420</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 15:39:02 -0700</bug_when>
    <thetext>Created attachment 399420
Patch v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652908</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-14 18:39:49 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #19)
&gt; Hold on.  I think I know what&apos;s going on.
&gt; 
&gt; Encoder::updateChecksumForNumber() used `typename Type` instead of `typename
&gt; T`, which differed from other template functions in the Persistence::Encoder
&gt; class.

And I was wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653884</commentid>
    <comment_count>22</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2020-05-18 20:24:24 -0700</bug_when>
    <thetext>As an observation from playing with it, with the Coder&lt;Seconds&gt; and Coder&lt;WallTime&gt; bodies in PersistentCoders.cpp rather than the .h, many of the errors went away, but the Coder&lt;CertificateInfo&gt; still failed (either in the h or the cpp) and it seems like the cases that fail are in files that were including CertificateInfo. I don&apos;t see why that&apos;d be different than anything else that might be including the persistence files though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655624</commentid>
    <comment_count>23</comment_count>
      <attachid>400126</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 09:54:53 -0700</bug_when>
    <thetext>Created attachment 400126
Patch v10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655636</commentid>
    <comment_count>24</comment_count>
      <attachid>400129</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 11:24:32 -0700</bug_when>
    <thetext>Created attachment 400129
Patch v11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655637</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 11:27:13 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #24)
&gt; Created attachment 400129 [details]
&gt; Patch v11

Style bot is just complaining about having the salt() methods defined on one line:

ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:90:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:91:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:92:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:93:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:94:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:96:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:97:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:98:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:99:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/persistence/PersistentEncoder.h:100:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 11 in 5 files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655639</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 11:46:38 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #24)
&gt; Created attachment 400129 [details]
&gt; Patch v11

Still not sure why WinCairo build is failing.

I just don&apos;t understand the error message that MSVC++ is printing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655640</commentid>
    <comment_count>27</comment_count>
      <attachid>400131</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 11:49:44 -0700</bug_when>
    <thetext>Created attachment 400131
Patch v12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655641</commentid>
    <comment_count>28</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 11:50:25 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #27)
&gt; Created attachment 400131 [details]
&gt; Patch v12

One last attempt (which I tried when struct Encode::Salt existed):

-        Encoder::updateChecksumForNumber(m_sha1, value);
+        Encoder::updateChecksumForNumber&lt;U&gt;(m_sha1, value);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655672</commentid>
    <comment_count>29</comment_count>
      <attachid>400147</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 20:03:46 -0700</bug_when>
    <thetext>Created attachment 400147
Patch v13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655673</commentid>
    <comment_count>30</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 20:07:39 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #29)
&gt; Created attachment 400147 [details]
&gt; Patch v13

I noticed in this error message:

C:\Buildbot\WinCairo-EWS\build\WebKitBuild\Release\WTF\Headers\wtf/persistence/PersistentCoders.h(261): note: see reference to function template instantiation &apos;WTF::Persistence::Encoder &amp;WTF::Persistence::Encoder::operator &lt;&lt;&lt;double,0x0&gt;(U)&apos; being compiled
        with
        [
            U=double
        ]

That the template values are &lt;double,0x0&gt; for operator&lt;&lt;(), while updateChecksumForNumber() would only be &lt;double&gt;, so I tried adding a std::is_arithmetic&lt;&gt; check to updateChecksumForNumber() to see if that fixes it.

I also moved the implementation of updateChecksumForNumber() into the class itself, although I don&apos;t think that matters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655675</commentid>
    <comment_count>31</comment_count>
      <attachid>400149</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 20:53:51 -0700</bug_when>
    <thetext>Created attachment 400149
Patch v14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655676</commentid>
    <comment_count>32</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-23 20:56:24 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #31)
&gt; Created attachment 400149 [details]
&gt; Patch v14

Remove extra template parameter to Encoder::updateChecksumForNumber() (although I&apos;ve tried this before):

-            Encoder::updateChecksumForNumber&lt;U&gt;(m_sha1, value);
+            Encoder::updateChecksumForNumber(m_sha1, value);

Use unique template parameter for Encoder::updateChecksumForNumber() and Encoder::salt():

-    template &lt;typename U, std::enable_if_t&lt;std::is_arithmetic&lt;U&gt;::value&gt;* = nullptr&gt;
-    static void updateChecksumForNumber(SHA1&amp; sha1, U value)
+    template &lt;typename V, std::enable_if_t&lt;std::is_arithmetic&lt;V&gt;::value&gt;* = nullptr&gt;
+    static void updateChecksumForNumber(SHA1&amp; sha1, V value)

-    template &lt;typename U&gt; static constexpr unsigned salt();
+    template &lt;typename V&gt; static constexpr unsigned salt();

This probably won&apos;t matter.  Will just change the &quot;U=U&quot; message in the error to &quot;U=V&quot; for the WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655743</commentid>
    <comment_count>33</comment_count>
      <attachid>400165</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 10:05:06 -0700</bug_when>
    <thetext>Created attachment 400165
Patch v15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655744</commentid>
    <comment_count>34</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 10:07:55 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #33)
&gt; Created attachment 400165 [details]
&gt; Patch v15

Move updateChecksumForData() and updateChecksumForNumber() into their own WTF::Persistence::Checksum class since they&apos;re used in both the Decoder and Encoder classes.  (The Checksum class could probably be moved to its own header/source files so that PersistentDecoder.h doesn&apos;t have to include PersistentEncoder.h.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655747</commentid>
    <comment_count>35</comment_count>
      <attachid>400166</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 10:22:15 -0700</bug_when>
    <thetext>Created attachment 400166
Patch v16</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655748</commentid>
    <comment_count>36</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 10:23:57 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #35)
&gt; Created attachment 400166 [details]
&gt; Patch v16

Moved Checksum::updateChecksumForNumber() implementation out-of-line of the class in case it needs the Checksum::Salt&lt;&gt; templates to be defined first with MSVC++ (even though the error doesn&apos;t mention Checksum::Salt&lt;&gt; at all).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655752</commentid>
    <comment_count>37</comment_count>
      <attachid>400167</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 11:01:57 -0700</bug_when>
    <thetext>Created attachment 400167
Patch v17

Template the whole WTF::Persistence::Checksum class.  I don&apos;t like this solution, but I want to see if the WinCairo build still fails.

I wonder if this whole issue has to do with trying to template a static class method in a header.  Technically you can only have one copy of the static method, so maybe that&apos;s what MSVC++ is actually complaining about.

In that case, we may just need to move the method out of a class and into a stand-alone function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655761</commentid>
    <comment_count>38</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 12:14:19 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #37)
&gt; I wonder if this whole issue has to do with trying to template a static
&gt; class method in a header.  Technically you can only have one copy of the
&gt; static method, so maybe that&apos;s what MSVC++ is actually complaining about.

Specifically, the issue may be due to calling a templated static method from a templated instance method since MSVC++ realizes that this could cause a scenario where multiple copies of the same static method could be created, thus causing a linker error later.

In Patch v18, I&apos;ll try adding `inline` to Checksum::updateChecksumForNumber() based on Patch v16.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655762</commentid>
    <comment_count>39</comment_count>
      <attachid>400173</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 12:15:35 -0700</bug_when>
    <thetext>Created attachment 400173
Patch v18

Patch v16 with the addition of the `inline` keyword to Checksum::updateChecksumForNumber().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655765</commentid>
    <comment_count>40</comment_count>
      <attachid>400174</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 12:32:42 -0700</bug_when>
    <thetext>Created attachment 400174
Patch v19</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655766</commentid>
    <comment_count>41</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 12:34:22 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #40)
&gt; Created attachment 400174 [details]
&gt; Patch v19

Replace Checksum class with Checksum namespace so formerly static class methods may now be inlined as stand-alone functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655769</commentid>
    <comment_count>42</comment_count>
      <attachid>400176</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-24 13:31:10 -0700</bug_when>
    <thetext>Created attachment 400176
Patch v20

Patch v20 is Patch v19 with a second template argument for Checksum::Salt:

-template &lt;typename T&gt;
+template &lt;typename T, typename U = T&gt;
 inline void updateChecksumForNumber(SHA1&amp; sha1, T value)
 {
-    auto typeSalt = Salt&lt;T&gt;::value;
+    auto typeSalt = Salt&lt;U&gt;::value;
     sha1.addBytes(reinterpret_cast&lt;uint8_t*&gt;(&amp;typeSalt), sizeof(typeSalt));
     sha1.addBytes(reinterpret_cast&lt;uint8_t*&gt;(&amp;value), sizeof(value));
 }

Perhaps MSVC++ doesn&apos;t like to mix full (updateChecksumForNumber()) and partial (Salt) template specialization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655863</commentid>
    <comment_count>43</comment_count>
      <attachid>400199</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 08:06:29 -0700</bug_when>
    <thetext>Created attachment 400199
Patch v21

Patch v21 manually inlines Checksum::updateChecksumForNumber() to eliminate it to find out what MSVC++ will complain about next.  It is based on Patches v20 and v21.

I should have probably tried this about 10-15 patches ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655864</commentid>
    <comment_count>44</comment_count>
      <attachid>400200</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 08:09:20 -0700</bug_when>
    <thetext>Created attachment 400200
Patch v22 - v19 with Checksum:: updateChecksumForNumber() inlined - WinCairo compiled!

Patch v22 is v21 with build fixes.  (Forgot to build locally first!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655878</commentid>
    <comment_count>45</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 09:16:23 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #43)
&gt; Created attachment 400199 [details]
&gt; Patch v21
&gt; 
&gt; Patch v21 manually inlines Checksum::updateChecksumForNumber() to eliminate
&gt; it to find out what MSVC++ will complain about next.  It is based on Patches
&gt; v20 and v21.
&gt; 
&gt; I should have probably tried this about 10-15 patches ago.

So Patch v22 (v21 with build fixes) compiles with MSVC++ on WinCairo EWS bot.

This issue seems to have something to do with partial specialization of struct Salt vs. full specialization of Checksum::updateChecksumForNumber().

The more experiments I try, the more this seems like an MSVC++ compiler bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655879</commentid>
    <comment_count>46</comment_count>
      <attachid>400205</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 09:20:59 -0700</bug_when>
    <thetext>Created attachment 400205
Patch v23

Patch v23 is Patch v19 with a fallback full template added for struct Salt (which is unsafe; if we use this fix, I&apos;d change struct Salt back to a template function so we could static_assert() that the fallback is not implemented if something tries to use it):

+template &lt;typename T&gt; struct Salt { static constexpr unsigned value = static_cast&lt;unsigned&gt;(-1); };

Let&apos;s see if this compiles with MSVC++ on WinCairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655886</commentid>
    <comment_count>47</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 09:47:31 -0700</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #22)
&gt; As an observation from playing with it, with the Coder&lt;Seconds&gt; and
&gt; Coder&lt;WallTime&gt; bodies in PersistentCoders.cpp rather than the .h, many of
&gt; the errors went away, but the Coder&lt;CertificateInfo&gt; still failed (either in
&gt; the h or the cpp) and it seems like the cases that fail are in files that
&gt; were including CertificateInfo. I don&apos;t see why that&apos;d be different than
&gt; anything else that might be including the persistence files though.

The Source/WebCore/platform/network/curl/CertificateInfo.h header includes Source/WebCore/platform/network/CertificateInfoBase.h, which includes &lt;wtf/Seconds.h&gt;.  Note that &lt;wtf/WallTime.h&gt; also includes &lt;wtf/Seconds.h&gt;.

The interesting thing about &lt;wtf/Seconds.h&gt; is that it includes encode/decode methods that templatize the Encoder and Decoder classes, presumably to reuse the same code for Persistence::Encoder/Persistence::Decoder and IPC::Encoder/IPC::Decoder;

    template&lt;class Encoder&gt;
    void encode(Encoder&amp; encoder) const
    {
        encoder &lt;&lt; m_value;
    }

    template&lt;class Decoder&gt;
    static Optional&lt;Seconds&gt; decode(Decoder&amp; decoder)
    {
        Optional&lt;double&gt; seconds;
        decoder &gt;&gt; seconds;
        if (!seconds)
            return WTF::nullopt;
        return Seconds(*seconds);
    }

    template&lt;class Decoder&gt;
    static WARN_UNUSED_RETURN bool decode(Decoder&amp; decoder, Seconds&amp; seconds)
    {
        double value;
        if (!decoder.decode(value))
            return false;

        seconds = Seconds(value);
        return true;
    }

I wonder if there are any other classes that do this?

Perhaps this issue is as simple as the &lt;wtf/Seconds.h&gt; header being included before the &lt;wtf/persistence/Persistent{En,De}coder.h&gt; headers, so MSVC++ claims that it can&apos;t find a template specialization?

We can test this theory by including &lt;wtf/persistence/Persistent{De,En}coder.h&gt; in &lt;wtf/Seconds.h&gt; to see if that magically fixes the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655887</commentid>
    <comment_count>48</comment_count>
      <attachid>400205</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 09:48:10 -0700</bug_when>
    <thetext>Comment on attachment 400205
Patch v23

(In reply to David Kilzer (:ddkilzer) from comment #46)
&gt; Created attachment 400205 [details]
&gt; Patch v23
&gt; 
&gt; Patch v23 is Patch v19 with a fallback full template added for struct Salt
&gt; (which is unsafe; if we use this fix, I&apos;d change struct Salt back to a
&gt; template function so we could static_assert() that the fallback is not
&gt; implemented if something tries to use it):
&gt; 
&gt; +template &lt;typename T&gt; struct Salt { static constexpr unsigned value =
&gt; static_cast&lt;unsigned&gt;(-1); };
&gt; 
&gt; Let&apos;s see if this compiles with MSVC++ on WinCairo.

Nope.  Did not compile on WinCairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655888</commentid>
    <comment_count>49</comment_count>
      <attachid>400207</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 09:52:02 -0700</bug_when>
    <thetext>Created attachment 400207
Patch v24

Patch v24 is the same as Patch v19, but includes Persistent{De,En}coder.h in &lt;wtf/Seconds.h&gt; to try to fix the WinCairo build:

diff --git a/Source/WTF/wtf/Seconds.h b/Source/WTF/wtf/Seconds.h
index c1be3927382..ce281977d32 100644
--- a/Source/WTF/wtf/Seconds.h
+++ b/Source/WTF/wtf/Seconds.h
@@ -27,6 +27,8 @@
 
 #include &lt;wtf/MathExtras.h&gt;
 #include &lt;wtf/Optional.h&gt;
+#include &lt;wtf/persistence/PersistentDecoder.h&gt;
+#include &lt;wtf/persistence/PersistentEncoder.h&gt;
 
 namespace WTF {
 

See Comment #47 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655889</commentid>
    <comment_count>50</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 10:05:06 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #49)
&gt; Created attachment 400207 [details]
&gt; Patch v24
&gt; 
&gt; Patch v24 is the same as Patch v19, but includes Persistent{De,En}coder.h in
&gt; &lt;wtf/Seconds.h&gt; to try to fix the WinCairo build:
&gt; 
&gt; diff --git a/Source/WTF/wtf/Seconds.h b/Source/WTF/wtf/Seconds.h
&gt; index c1be3927382..ce281977d32 100644
&gt; --- a/Source/WTF/wtf/Seconds.h
&gt; +++ b/Source/WTF/wtf/Seconds.h
&gt; @@ -27,6 +27,8 @@
&gt;  
&gt;  #include &lt;wtf/MathExtras.h&gt;
&gt;  #include &lt;wtf/Optional.h&gt;
&gt; +#include &lt;wtf/persistence/PersistentDecoder.h&gt;
&gt; +#include &lt;wtf/persistence/PersistentEncoder.h&gt;
&gt;  
&gt;  namespace WTF {
&gt;  
&gt; 
&gt; See Comment #47 for details.

Of course that introduced a cyclical dependency in header includes, so we can&apos;t do that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655892</commentid>
    <comment_count>51</comment_count>
      <attachid>400208</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-25 10:34:23 -0700</bug_when>
    <thetext>Created attachment 400208
Patch v25

Patch v25 is the same as Patch v19, but does the following:

- Extracts WTF::Persistence::Checksum methods into their own header:  Source/WTF/wtf/persistence/PersistentChecksum.h.
- Adds PersistentChecksum.h to build CMake and Xcode build systems.
- Includes &lt;wtf/persistence/PersistentChecksum.h&gt; in &lt;wtf/Seconds.h&gt; to try to fix the WinCairo build.  See Comment #47 for details.
- Breaks cyclical header include (introduced by adding PersistentChecksum.h to Seconds.h) by moving SHA1::addBytes() that takes a CString from SHA1.h to SHA1.cpp.
- Has nice side benefit of removing include of &lt;wtf/persistence/PersistentEncoder.h&gt; from PersistentDecoder.h in favor of &lt;wtf/persistence/PersistentChecksum.h&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656083</commentid>
    <comment_count>52</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-26 10:28:05 -0700</bug_when>
    <thetext>Hi QuellaZhang, I CC-ed you on this radar because I&apos;ve been trying to fix a build failure only seen on MSVC++ for the WinCairo port where gcc and clang (and an older MSVC++ for Apple&apos;s Windows port) work fine.

Via Slack, the WinCairo bots should be on MSVC 16.4:  &lt;https://webkit.slack.com/archives/CU64U6FDW/p1589492625078800?thread_ts=1589490687.076600&amp;cid=CU64U6FDW&gt;

I will probably work around this by manually inlining the updateChecksumForNumber() method in the two places it&apos;s used, but I thought you might wand to take a look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660127</commentid>
    <comment_count>53</comment_count>
      <attachid>401311</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-06-07 21:46:35 -0700</bug_when>
    <thetext>Created attachment 401311
v2 + OPENSSL_NO_SHA and OPENSSL_NO_SHA1

It seems that OpenSSL SHA1 function is conflicting with WTF::SHA1.
Defining OPENSSL_NO_SHA1 and OPENSSL_NO_SHA macros before including OpenSSL headers seems to solve the issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399331</attachid>
            <date>2020-05-13 21:36:19 -0700</date>
            <delta_ts>2020-05-14 08:57:14 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-211880-20200513213627.patch</filename>
            <type>text/plain</type>
            <size>13832</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmRlMDNlYWRjZWQyOWNkYTI1ZmUzM2M4OTI0YTExMmYwNWZhNjQw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBk
dXBsaWNhdGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVu
Y29kZXIgY2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4
ZXMgdGhlIGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpv
cGVyYXRvcjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMg
dG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisg
ICAgICAgICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBh
bmQgcmVxdWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRl
cyBpbiBoZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0
aG1ldGljIHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBh
bGwgdGVtcGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisg
ICAgICAgIC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0
eXBlcy4KKyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMg
YGJvb2xgIHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29k
ZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAg
ICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6Cisg
ICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNv
ZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVy
OjplbmNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5j
b2Rlcjo6ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
RW5jb2Rlcjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6
Om9wZXJhdG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlv
bmFsIHdpdGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhi
MTJmZjA5ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
PHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNw
YWNlIFBlcnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4g
c2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlv
bik7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihz
aXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVy
UG9zaXRpb24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVu
Y29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6
ZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwot
Ci0gICAgVCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXpl
b2YoVCkpOwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rl
cjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwg
PSB2YWx1ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJh
dG9yPj4oT3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVy
KHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWlu
dDhfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0K
LURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQp
Ci17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNv
ZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJu
IGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+
KE9wdGlvbmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIo
cmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50
NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0K
LURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkK
LXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29k
ZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4g
ZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVt
YmVyKHJlc3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8
ZG91YmxlPiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAg
ICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRi
NTA3ZTAxMDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi42ZjlhMWEzNDFiNjQwYTEwYjgz
MjI0ZTlhNjkwNzkyMzcxNmU5ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAg
LTQzLDIwICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50
OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYg
b3BlcmF0b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsK
KyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JO
dW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAg
ewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTc3LDggKzc4
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2
ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7CiAKQEAgLTkyLDYgKzkzLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZURhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVy
JiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIG1f
YnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwCmluZGV4IDE0ZGQzZjY4Mzg3ZmUzZjgzYzA0OWY0MTgyODJjNTc5MWFmMGUyYWEuLjMw
MDcyODc2OTEwMTIyMDkyZTlhYzU1NmRmMTEyMTY5ZTQ4MGU3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNzIgKzUz
LDE2IEBAIHZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplCiAgICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBz
aXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRh
KG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0KICAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemUp
OwogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPgotRW5jb2RlciYgRW5jb2Rlcjo6ZW5jb2RlTnVtYmVyKFR5cGUgdmFsdWUpCi17Ci0g
ICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0KLSAg
ICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihUeXBlKSk7Ci0gICAgbWVtY3B5KGJ1ZmZl
ciwgJnZhbHVlLCBzaXplb2YoVHlwZSkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChib29sIHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ4X3Qg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXIm
IEVuY29kZXI6Om9wZXJhdG9yPDwodWludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MTZf
dCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50
NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5j
b2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGlu
dDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVu
Y29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZG91
YmxlIHZhbHVlKQordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1
ZSk7CisgICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAg
ZW5jb2RlRGF0YShkYXRhLCBzaXplKTsKIH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1
bSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5j
b2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApp
bmRleCAyN2FkMGQwN2Y2NTFhMGZiNDJiOGViYTFhZGM5Y2JlZjlhYjE3ZDY5Li40NWY5NmNmOThl
ODg0ODljZjg1NzY1ZDZmNzUwYWRhZTI4OTg0YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNDQgKzQzLDQxIEBAIHB1YmxpYzoKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgfkVuY29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGVuY29kZUNoZWNrc3VtKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9y
PDwoY29uc3QgVCYgdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0
b3I8PChjb25zdCBFJiBlbnVtVmFsdWUpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihUKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdl
ciB0aGFuIDY0IGJpdHMuIik7Ci0gICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4odCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1
aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsK
KyAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
c3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KGVudW1WYWx1ZSkpKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+
Ojp0eXBlPihlbnVtVmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGht
ZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlPiogPSBudWxscHRyPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxU
Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAg
ICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgQ29kZXI8
VD46OmVuY29kZSgqdGhpcywgdCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChib29sKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50OF90KTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50MTZfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDMyX3QpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlciYgb3BlcmF0b3I8PChpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5j
b2RlciYgb3BlcmF0b3I8PChmbG9hdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXIm
IG9wZXJhdG9yPDwoZG91YmxlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVu
Y29kZXImIG9wZXJhdG9yPDwoVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHVwZGF0ZUNoZWNrc3Vt
Rm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOworICAgICAgICBlbmNvZGVEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSk7CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RhdGljIHZv
aWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVyKFR5cGUpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90KTsKIAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399363</attachid>
            <date>2020-05-14 08:57:16 -0700</date>
            <delta_ts>2020-05-14 09:11:42 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-211880-20200514085727.patch</filename>
            <type>text/plain</type>
            <size>15096</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmE3NDc1NDYxZmEwNjc5ZjAxZGU1YTc2NDg0MmRlYmNjNjU1ZTYx
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBk
dXBsaWNhdGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVu
Y29kZXIgY2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4
ZXMgdGhlIGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpv
cGVyYXRvcjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMg
dG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisg
ICAgICAgICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBh
bmQgcmVxdWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRl
cyBpbiBoZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0
aG1ldGljIHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBh
bGwgdGVtcGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisg
ICAgICAgIC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0
eXBlcy4KKyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMg
YGJvb2xgIHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29k
ZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAg
ICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6Cisg
ICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNv
ZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVy
OjplbmNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5j
b2Rlcjo6ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
RW5jb2Rlcjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6
Om9wZXJhdG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlv
bmFsIHdpdGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhi
MTJmZjA5ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
PHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNw
YWNlIFBlcnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4g
c2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlv
bik7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihz
aXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVy
UG9zaXRpb24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVu
Y29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6
ZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwot
Ci0gICAgVCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXpl
b2YoVCkpOwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rl
cjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwg
PSB2YWx1ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJh
dG9yPj4oT3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVy
KHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWlu
dDhfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0K
LURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQp
Ci17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNv
ZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJu
IGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+
KE9wdGlvbmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIo
cmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50
NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0K
LURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkK
LXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29k
ZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4g
ZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVt
YmVyKHJlc3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8
ZG91YmxlPiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAg
ICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRi
NTA3ZTAxMDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi45YmNhYTZkM2U2NWE4NTRhY2Yy
Nzk5OTM3ZWY2ZWE3ODZlZWY2MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAg
LTQzLDIwICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50
OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYg
b3BlcmF0b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsK
KyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JO
dW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAg
ewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcgKzY3
LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0
cyEiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90
KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAg
ICAgICBpZiAoIXZhbHVlKQpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9S
RVRVUk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVs
ZW1lbnRzKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVu
dHMpIGNvbnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRp
YzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6
ZSEiKTsKIApAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hU
b0NvbnRhaW4oc2l6ZV90KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBl
PiYpOwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdmZTNm
ODNjMDQ5ZjQxODI4MmM1NzkxYWYwZTJhYS4uMzAwNzI4NzY5MTAxMjIwOTJlOWFjNTU2ZGYxMTIx
NjllNDgwZTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01Myw3MiArNTMsMTYgQEAgdm9pZCBFbmNvZGVyOjp1cGRhdGVD
aGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUKICAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6OmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgRW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkK
IHsKLSAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAg
IHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwg
c2l6ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjpl
bmNvZGVOdW1iZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcihtX3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6
ZW9mKFR5cGUpKTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXIm
IEVuY29kZXI6Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2Rl
TnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZf
dCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQz
Ml90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGlu
dDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChm
bG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5j
b2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRh
dGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQog
CiB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmluZGV4IDI3YWQwZDA3ZjY1MWEwZmI0MmI4ZWJh
MWFkYzljYmVmOWFiMTdkNjkuLmQ4ZDYxMWIzZjA1NGNmZjZmYzZlOTU0MmM0ZGZiNzRhNzFjYzI5
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Myw0OCArNDMsNDUgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2Rl
cigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAg
ICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCks
ICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5v
dCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlk
RW51bTxFPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1
cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+
Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0
PFQ+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGlj
PFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQm
IHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBv
cGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRv
cjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1
aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWlu
dDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDE2
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDMyX3Qp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0X3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChUIHZhbHVlKQorICAg
IHsKKyAgICAgICAgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAg
ICAgIGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwg
c2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNp
emVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNI
QTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOworICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhfdCos
IHNpemVfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lQQ0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFR5cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihUeXBlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICB1
aW50OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3Ry
dWN0IFNhbHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBTYWx0OwogCiAgICAg
VmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGExOwpAQCAtMTAy
LDEwICs5OSwxMCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OwogdGVtcGxhdGUgPD4gc3RydWN0
IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1
ZSA9IDEwMTsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+IHsg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEm
IHNoYTEsIFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRW5jb2Rlcjo6
dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2YWx1ZSkKIHsKLSAgICBhdXRv
IHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8
VD46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
JnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399364</attachid>
            <date>2020-05-14 09:11:44 -0700</date>
            <delta_ts>2020-05-14 11:41:42 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-211880-20200514091155.patch</filename>
            <type>text/plain</type>
            <size>15093</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmRkMmY4OWRlNGE2ZDBkZWNlZGRkNDJmZTczMTI5ZDJmM2YxMDY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBhbGwgdGVt
cGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8K
KyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJh
dG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlvbmFsIHdp
dGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhiMTJmZjA5
ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBl
cnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gc2l6ZSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9
CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9zaXRp
b24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVuY29kZXI6
OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2Rl
TnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAg
VCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplb2YoVCkp
OwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwgPSB2YWx1
ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3Vs
dCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50NjRfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJl
c3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91Ymxl
PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAx
MDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi5hZmQ3YjNkYmZlYmJkMWJjMDIyMDJiY2U0
YjhhZWU2ZGRiMmQ3Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDIw
ICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRv
dWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAg
ICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6
ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXI8
VD4obV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxw
dHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19l
bnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewog
ICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwg
IkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAg
ICBpZiAoIXZhbHVlKQpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRV
Uk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1l
bnRzKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMp
IGNvbnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEi
KTsKIApAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYp
OwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdmZTNmODNj
MDQ5ZjQxODI4MmM1NzkxYWYwZTJhYS4uMzAwNzI4NzY5MTAxMjIwOTJlOWFjNTU2ZGYxMTIxNjll
NDgwZTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01Myw3MiArNTMsMTYgQEAgdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVj
a3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUK
ICAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
RW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAgIHVp
bnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6
ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjplbmNv
ZGVOdW1iZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51
bWJlcihtX3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9m
KFR5cGUpKTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0gICAg
cmV0dXJuICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVu
Y29kZXI6Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZfdCB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQzMl90
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDMy
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChmbG9h
dCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEo
bV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2
b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmluZGV4IDI3YWQwZDA3ZjY1MWEwZmI0MmI4ZWJhMWFk
YzljYmVmOWFiMTdkNjkuLmQ4ZDYxMWIzZjA1NGNmZjZmYzZlOTU0MmM0ZGZiNzRhNzFjYzI5N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
LmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Myw0OCArNDMsNDUgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2Rlcigp
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxw
dHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJF
bnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0
dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBi
ZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51
bTxFPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4g
KnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+
Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFi
bGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQp
CiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVp
bnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50
MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDY0
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDE2X3Qp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDMyX3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0X3QpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChUIHZhbHVlKQorICAgIHsK
KyAgICAgICAgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAgICAg
IGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6
ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVf
dCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEm
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4g
c3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOworICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNr
c3VtRm9yTnVtYmVyKFNIQTEmLCBUKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQ
Q0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihUeXBlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICB1aW50
OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RydWN0
IFNhbHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBTYWx0OwogCiAgICAgVmVj
dG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGExOwpAQCAtMTAyLDEw
ICs5OSwxMCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OwogdGVtcGxhdGUgPD4gc3RydWN0IEVu
Y29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDEwMTsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNo
YTEsIFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2YWx1ZSkKIHsKLSAgICBhdXRvIHR5
cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VD46
OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5
cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399374</attachid>
            <date>2020-05-14 10:15:55 -0700</date>
            <delta_ts>2020-05-14 10:27:35 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-211880-20200514101607.patch</filename>
            <type>text/plain</type>
            <size>15099</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmRkMmY4OWRlNGE2ZDBkZWNlZGRkNDJmZTczMTI5ZDJmM2YxMDY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBhbGwgdGVt
cGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8K
KyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJh
dG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlvbmFsIHdp
dGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhiMTJmZjA5
ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBl
cnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gc2l6ZSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9
CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9zaXRp
b24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVuY29kZXI6
OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2Rl
TnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAg
VCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplb2YoVCkp
OwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwgPSB2YWx1
ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3Vs
dCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50NjRfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJl
c3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91Ymxl
PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAx
MDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi45YmNhYTZkM2U2NWE4NTRhY2YyNzk5OTM3
ZWY2ZWE3ODZlZWY2MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDIw
ICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRv
dWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAg
ICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6
ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIo
bV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVt
PFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4K
ICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAg
ICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcgKzY3LDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihF
KSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVu
dW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAgICBp
ZiAoIXZhbHVlKQpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRVUk4K
LSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRz
KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMpIGNv
bnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6
dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEiKTsK
IApAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW4oc2l6ZV90KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOwog
CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdmZTNmODNjMDQ5
ZjQxODI4MmM1NzkxYWYwZTJhYS4uMzAwNzI4NzY5MTAxMjIwOTJlOWFjNTU2ZGYxMTIxNjllNDgw
ZTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVu
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01Myw3MiArNTMsMTYgQEAgdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1
bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUKICAg
ICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5j
b2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAgIHVpbnQ4
X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjplbmNvZGVO
dW1iZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cihtX3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9mKFR5
cGUpKTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0gICAgcmV0
dXJuICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29k
ZXI6Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVy
KHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZfdCB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5j
b2Rlcjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1i
ZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQzMl90IHZh
bHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBF
bmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDMyX3Qg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXIm
IEVuY29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2Rl
TnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChmbG9hdCB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9z
aGExLCBkYXRhLCBzaXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2b2lk
IEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmluZGV4IDI3YWQwZDA3ZjY1MWEwZmI0MmI4ZWJhMWFkYzlj
YmVmOWFiMTdkNjkuLmE2MzRjZjVlN2NlOWVmNzgzMmJmYjU1MDJmOGVkM2Q2YmE0Mzc5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw0
OCArNDMsNDUgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2RlcigpOwog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCos
IHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+
Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVt
IHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBs
YXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxF
PihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4gKnRo
aXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVf
aWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2
YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCiAg
ICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRv
cjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVp
bnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQx
Nl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50MzJf
dCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDY0X3Qp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDE2X3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDMyX3QpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0X3QpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+
KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChUIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Cisg
ICAgICAgIGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAg
IHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRh
KFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwor
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0lQQ0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihUeXBlKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAg
ICB1aW50OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4g
c3RydWN0IFNhbHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBTYWx0OwogCiAg
ICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGExOwpAQCAt
MTAyLDEwICs5OSwxMCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OwogdGVtcGxhdGUgPD4gc3Ry
dWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDEwMTsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNI
QTEmIHNoYTEsIFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRW5jb2Rl
cjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2YWx1ZSkKIHsKLSAgICBh
dXRvIHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0eXBlU2FsdCA9IFNh
bHQ8VD46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAgc2hhMS5hZGRCeXRlcyhyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399376</attachid>
            <date>2020-05-14 10:27:14 -0700</date>
            <delta_ts>2020-05-14 11:21:13 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-211880-20200514102725.patch</filename>
            <type>text/plain</type>
            <size>15105</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmRkMmY4OWRlNGE2ZDBkZWNlZGRkNDJmZTczMTI5ZDJmM2YxMDY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBhbGwgdGVt
cGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8K
KyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJh
dG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlvbmFsIHdp
dGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhiMTJmZjA5
ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBl
cnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gc2l6ZSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9
CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9zaXRp
b24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVuY29kZXI6
OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2Rl
TnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAg
VCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplb2YoVCkp
OwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwgPSB2YWx1
ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3Vs
dCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50NjRfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJl
c3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91Ymxl
PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAx
MDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi5hZmQ3YjNkYmZlYmJkMWJjMDIyMDJiY2U0
YjhhZWU2ZGRiMmQ3Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDIw
ICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRv
dWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAg
ICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6
ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXI8
VD4obV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxw
dHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19l
bnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewog
ICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwg
IkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAg
ICBpZiAoIXZhbHVlKQpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRV
Uk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1l
bnRzKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMp
IGNvbnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEi
KTsKIApAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYp
OwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdmZTNmODNj
MDQ5ZjQxODI4MmM1NzkxYWYwZTJhYS4uMzAwNzI4NzY5MTAxMjIwOTJlOWFjNTU2ZGYxMTIxNjll
NDgwZTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01Myw3MiArNTMsMTYgQEAgdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVj
a3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUK
ICAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
RW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAgIHVp
bnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6
ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjplbmNv
ZGVOdW1iZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51
bWJlcihtX3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9m
KFR5cGUpKTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0gICAg
cmV0dXJuICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVu
Y29kZXI6Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZfdCB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQzMl90
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDMy
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChmbG9h
dCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEo
bV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2
b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmluZGV4IDI3YWQwZDA3ZjY1MWEwZmI0MmI4ZWJhMWFk
YzljYmVmOWFiMTdkNjkuLmNjZTU3MDIxYjg5YzlmMTdkYWFlYTVmNTQ0NGY5YTdiYTA4NDE0ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
LmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Myw0OCArNDMsNDUgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2Rlcigp
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxw
dHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJF
bnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0
dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBi
ZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51
bTxFPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4g
KnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+
Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFi
bGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQp
CiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVp
bnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50
MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDY0
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDE2X3Qp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDMyX3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0X3QpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChUIHZhbHVlKQorICAgIHsK
KyAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXI8VD4obV9zaGExLCB2YWx1
ZSk7CisgICAgICAgIGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
JnZhbHVlKSwgc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAg
IGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsg
fQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgp
OyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1G
b3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5
cGUpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3Qg
dWludDhfdCosIHNpemVfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lk
IHVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUKTsKIAogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihUeXBlKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7
CiAKICAgICB1aW50OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZT4gc3RydWN0IFNhbHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBTYWx0
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGEx
OwpAQCAtMTAyLDEwICs5OSwxMCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxk
b3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OwogdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDEwMTsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGlu
dDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVt
YmVyKFNIQTEmIHNoYTEsIFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQg
RW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2YWx1ZSkKIHsK
LSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0eXBlU2Fs
dCA9IFNhbHQ8VD46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAgc2hhMS5hZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399384</attachid>
            <date>2020-05-14 11:29:51 -0700</date>
            <delta_ts>2020-05-14 13:28:21 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-211880-20200514113002.patch</filename>
            <type>text/plain</type>
            <size>15157</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmRkMmY4OWRlNGE2ZDBkZWNlZGRkNDJmZTczMTI5ZDJmM2YxMDY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBhbGwgdGVt
cGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8K
KyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJh
dG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlvbmFsIHdp
dGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhiMTJmZjA5
ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBl
cnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gc2l6ZSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9
CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9zaXRp
b24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVuY29kZXI6
OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2Rl
TnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAg
VCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplb2YoVCkp
OwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwgPSB2YWx1
ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3Vs
dCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50NjRfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJl
c3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91Ymxl
PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAx
MDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi45NTZmZDc1MTdhNmI2ODMyMGIzMDgxOWQz
NGI1YWMwYmEwY2FlZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDIw
ICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRv
dWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAg
ICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6
ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXI8
VD4obV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxw
dHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19l
bnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewog
ICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwg
IkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAg
ICBpZiAoIXZhbHVlKQpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRV
Uk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1l
bnRzKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMp
IGNvbnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEi
KTsKIApAQCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVy
JiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qp
OwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXJQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmNwcAppbmRleCAxNGRkM2Y2ODM4N2ZlM2Y4M2MwNDlmNDE4MjgyYzU3OTFhZjBl
MmFhLi43MTYwNzRkODU5ZjczNjhiYzg5NjJlMTIyYjMxYmM4MDQyM2U2MmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUz
LDcyICs1MywxNiBAQCB2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBz
aGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZQogICAgIHNoYTEuYWRkQnl0ZXMo
ZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVEYXRh
KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHVwZGF0ZUNoZWNrc3Vt
Rm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3Jv
dyhzaXplKTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVl
KQotewotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUp
OwotCi0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNw
eShidWZmZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1
aW50OF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9y
PDwodWludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwot
fQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJl
dHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRv
cjw8KGRvdWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1i
ZXIodmFsdWUpOworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRh
dGEsIHNpemUpOworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rl
cjo6ZW5jb2RlQ2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBmYjQyYjhlYmExYWRjOWNiZWY5YWIx
N2Q2OS4uNTA3NGRkNWUyNDQ4ZmMxN2NkZTk4YjEyNWQxOGM3NTc0YzVkZWNjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDQ4ICs0Myw0
NSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBF
bmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVlKQogICAgIHsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBt
dXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAgICAgICByZXR1cm4gKnRoaXMg
PDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0
aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAgIHJldHVybiAqdGhpcyA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFz
dGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4q
ID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiog
PSBudWxscHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAg
ICAgICAgIENvZGVyPFQ+OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9v
bCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQgdmFsdWUpCisgICAgeworICAgICAgICBF
bmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcjxUPihtX3NoYTEsIHZhbHVlKTsKKyAgICAg
ICAgZW5jb2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBz
aXplb2YoVCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6
ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hB
MSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBl
PiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7CisgICAg
c3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB1cGRh
dGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVCk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAg
ICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+
IHN0cnVjdCBTYWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2FsdDsKIAog
ICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZlcjsKICAgICBTSEExIG1fc2hhMTsKQEAg
LTEwMiwxMCArOTksMTAgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZG91Ymxl
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyOTsKIHRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dmFsdWUgPSAxMDE7IH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQxNl90
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDM7IH07CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUeXBlPgotdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihT
SEExJiBzaGExLCBUeXBlIHZhbHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIEVuY29k
ZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFQgdmFsdWUpCiB7Ci0gICAg
YXV0byB0eXBlU2FsdCA9IFNhbHQ8VHlwZT46OnZhbHVlOworICAgIGF1dG8gdHlwZVNhbHQgPSBT
YWx0PFQ+Ojp2YWx1ZTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAgIHNoYTEuYWRkQnl0ZXMocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399399</attachid>
            <date>2020-05-14 13:28:23 -0700</date>
            <delta_ts>2020-05-14 15:39:00 -0700</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-211880-20200514132835.patch</filename>
            <type>text/plain</type>
            <size>15161</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLmRkMmY4OWRlNGE2ZDBkZWNlZGRkNDJmZTczMTI5ZDJmM2YxMDY4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBhbGwgdGVt
cGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8K
KyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJh
dG9yPDwpOgorCiAyMDIwLTA1LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggcHJvYmxlbXMgY2F1Z2h0IGJ5IHJlcGxhY2luZyBXVEY6Ok9wdGlvbmFsIHdp
dGggc3RkOjpvcHRpb25hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMwMzhiMTJmZjA5
ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBl
cnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gc2l6ZSA8
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9
CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9zaXRp
b24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAgIEVuY29kZXI6
OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2Rl
TnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAg
VCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplb2YoVCkp
OwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9uYWwgPSB2YWx1
ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
T3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3Vs
dCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50NjRfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJl
c3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91Ymxl
PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKKyAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAx
MDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi45NTZmZDc1MTdhNmI2ODMyMGIzMDgxOWQz
NGI1YWMwYmEwY2FlZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDIw
ICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNp
emVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRv
dWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVCB2YWx1ZTsKKyAgICAg
ICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6
ZW9mKFQpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXI8
VD4obV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxw
dHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19l
bnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewog
ICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEi
KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwg
IkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAgICBP
cHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAg
ICBpZiAoIXZhbHVlKQpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRV
Uk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1l
bnRzKSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVudHMp
IGNvbnN0CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpYzxU
Pjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEi
KTsKIApAQCAtOTIsNyArOTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVy
JiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qp
OwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXJQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmNwcAppbmRleCAxNGRkM2Y2ODM4N2ZlM2Y4M2MwNDlmNDE4MjgyYzU3OTFhZjBl
MmFhLi43MTYwNzRkODU5ZjczNjhiYzg5NjJlMTIyYjMxYmM4MDQyM2U2MmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUz
LDcyICs1MywxNiBAQCB2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBz
aGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZQogICAgIHNoYTEuYWRkQnl0ZXMo
ZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVEYXRh
KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHVwZGF0ZUNoZWNrc3Vt
Rm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3Jv
dyhzaXplKTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVl
KQotewotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUp
OwotCi0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNw
eShidWZmZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1
aW50OF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9y
PDwodWludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwot
fQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJl
dHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRv
cjw8KGRvdWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1i
ZXIodmFsdWUpOworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRh
dGEsIHNpemUpOworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rl
cjo6ZW5jb2RlQ2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBmYjQyYjhlYmExYWRjOWNiZWY5YWIx
N2Q2OS4uMTVmNjQwZGU2MWMzOGI4MzlhYTdiNDQxMDA1ZGVlMjNhZTViYTk2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDQ5ICs0Myw0
NSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBF
bmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVlKQogICAgIHsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBt
dXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAgICAgICByZXR1cm4gKnRoaXMg
PDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0
aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAgIHJldHVybiAqdGhpcyA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFz
dGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4q
ID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiog
PSBudWxscHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAg
ICAgICAgIENvZGVyPFQ+OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9v
bCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQgdmFsdWUpCisgICAgeworICAgICAgICBF
bmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcjxUPihtX3NoYTEsIHZhbHVlKTsKKyAgICAg
ICAgZW5jb2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBz
aXplb2YoVCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6
ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hB
MSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBl
PiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7CisgICAg
c3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2FsdDsKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1i
ZXIoU0hBMSYsIFQpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9
IGZhbHNlOwogCiBwcml2YXRlOgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRW5jb2Rl
ciYgZW5jb2RlTnVtYmVyKFR5cGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29k
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAogICAgIHVpbnQ4X3QqIGdyb3co
c2l6ZV90KTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgU2FsdDsKLQog
ICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZlcjsKICAgICBTSEExIG1fc2hhMTsKIH07
CkBAIC0xMDIsMTAgKzk4LDEwIEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGRv
dWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7CiB0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTAxOyB9OwogdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50
MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OwogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1i
ZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBF
bmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUIHZhbHVlKQogewot
ICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFR5cGU+Ojp2YWx1ZTsKKyAgICBhdXRvIHR5cGVTYWx0
ID0gU2FsdDxUPjo6dmFsdWU7CiAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKICAgICBzaGExLmFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399402</attachid>
            <date>2020-05-14 13:48:58 -0700</date>
            <delta_ts>2020-05-14 14:08:48 -0700</delta_ts>
            <desc>Patch v8</desc>
            <filename>bug-211880-v8.diff</filename>
            <type>text/plain</type>
            <size>16707</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDRjODE3ODRlODAuLmRkMmY4OWRlNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIw
LTA1LTE0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYyBwYXJhbWV0ZXIgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBFYCBmb3IgYWxsIHRlbXBsYXRlIG1ldGhvZHMgdGhhdCBoYW5kbGUgZW51
bQorICAgICAgICAgIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVGAgZm9yIGFsbCBv
dGhlciB0ZW1wbGF0ZSBtZXRob2QgdHlwZXMuCisgICAgICAgIC0gTW92ZSBXQVJOX1VOVVNFRF9S
RVRVUk4gdG8gc2FtZSBsaW5lIGFzIGBib29sYCByZXR1cm4gdHlwZS4KKworICAgICAgICAqIHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVEYXRhKTogQWRkLiAgRXh0cmFjdCBjb2RlIHRvCisgICAg
ICAgIHNoYXJlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29k
ZU51bWJlcik6IERlbGV0ZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Om9w
ZXJhdG9yPj4pOiBEZWxldGUuCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRE
ZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpvcGVyYXRvcj4+
KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVE
YXRhKTogQWRkLiAgRXh0cmFjdCBjb2RlIHRvCisgICAgICAgIHNoYXJlLgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZU51bWJlcik6IERlbGV0ZS4KKyAgICAg
ICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJhdG9yPDwpOiBEZWxldGUuCisgICAg
ICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg6CisgICAgICAgIChXVEY6
OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KToKKwogMjAyMC0wNS0xMSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHByb2JsZW1zIGNhdWdodCBi
eSByZXBsYWNpbmcgV1RGOjpPcHRpb25hbCB3aXRoIHN0ZDo6b3B0aW9uYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCA4NTk1ZmNh
ZjIzYS4uN2ZiMjZmNGUxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
PgogCi0jaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5h
bWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIz
IEBAIGJvb2wgRGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6
ZSkgY29uc3QKICAgICByZXR1cm4gc2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVy
RW5kIC0gbV9idWZmZXJQb3NpdGlvbik7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRM
ZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNv
ZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
bWVtY3B5KGRhdGEsIG1fYnVmZmVyUG9zaXRpb24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRp
b24gKz0gc2l6ZTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEs
IGRhdGEsIHNpemUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkK
LXsKLSAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgVCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBt
X2J1ZmZlclBvc2l0aW9uLCBzaXplb2YoVCkpOwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6
ZW9mKFQpOwotCi0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2
YWx1ZSk7Ci0gICAgb3B0aW9uYWwgPSB2YWx1ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURl
Y29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8dWludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDx1aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXIm
IERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29k
ZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRh
KGRhdGEsIHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6
Om9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNv
ZGVOdW1iZXIocmVzdWx0KTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRh
LCBzaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVj
a3N1bSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIu
aAppbmRleCBjNmRiNTA3ZTAxMC4uODA5YTAyMGIyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8
d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2UgUGVyc2lz
dGVuY2UgewpAQCAtNDMsMjAgKzQ0LDIwIEBAIHB1YmxpYzoKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwogCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3Ro
RGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJh
dG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+Jik7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MTZfdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQzMl90
PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4o
T3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJh
dG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAg
ICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCisgICAgeworICAgICAg
ICBUIHZhbHVlOworICAgICAgICBpZiAoZGVjb2RlRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPigmdmFsdWUpLCBzaXplb2YoVCkpKSB7CisgICAgICAgICAgICB1cGRhdGVDaGVja3N1bUZv
ck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBu
dWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHJlc3VsdCkKICAg
ICB7CiAgICAgICAgIHJlc3VsdCA9IENvZGVyPFQ+OjpkZWNvZGUoKnRoaXMpOwpAQCAtNjYsNyAr
NjcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJh
dG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBi
aXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0
X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CiAgICAg
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdmFsdWU7CiAg
ICAgICAgIGlmICghdmFsdWUpCkBAIC03Nyw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFdBUk5fVU5VU0VE
X1JFVFVSTgotICAgIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVt
RWxlbWVudHMpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVt
ZW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1l
dGljPFQ+Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBz
aXplISIpOwogCkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3Vn
aFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IERl
Y29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCk7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAgICBjb25zdCB1aW50OF90
KiBtX2J1ZmZlclBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuY3BwCmluZGV4IDE0ZGQzZjY4Mzg3Li5iMjlhYTdmYzIyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw3OSArNDYsMjMgQEAgdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAg
ICByZXR1cm4gbV9idWZmZXIuZGF0YSgpICsgbmV3UG9zaXRpb247CiB9CiAKLXZvaWQgRW5jb2Rl
cjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQordm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXV0byB0eXBlU2FsdCA9IFNh
bHQ8dWludDhfdCo+Ojp2YWx1ZTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAgIHNoYTEuYWRkQnl0
ZXMoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVE
YXRhKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHVwZGF0ZUNoZWNr
c3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0g
Z3JvdyhzaXplKTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZh
bHVlKQotewotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFs
dWUpOwotCi0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1l
bWNweShidWZmZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1
cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8
PCh1aW50OF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJl
dHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRv
cjw8KGludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJh
dG9yPDwodWludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7
Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAg
ICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3Bl
cmF0b3I8PChpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUp
OwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAg
IHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVy
YXRvcjw8KGRvdWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOworICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNp
emUpOworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5j
b2RlQ2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUuLjU5M2RmODY5N2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsMTAgQEAgbmFt
ZXNwYWNlIFBlcnNpc3RlbmNlIHsKIGNsYXNzIEVuY29kZXI7CiBjbGFzcyBEYXRhUmVmZXJlbmNl
OwogCit2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90KTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2FsdDsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUKTsKKwog
Y2xhc3MgRW5jb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC00Myw2OSArNDcsNjEgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2Rl
cigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAg
ICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCks
ICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5v
dCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlk
RW51bTxFPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1
cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+
Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0
PFQ+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGlj
PFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQm
IHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBv
cGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRv
cjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1
aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWlu
dDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDE2
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDMyX3Qp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0X3QpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChUIHZhbHVlKQorICAg
IHsKKyAgICAgICAgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAg
ICAgIGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwg
c2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNp
emVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNI
QTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwotCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2YXRl
OgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVyKFR5
cGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90KTsKIAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgU2FsdDsKLQogICAgIFZlY3Rvcjx1aW50OF90
LCA0MDk2PiBtX2J1ZmZlcjsKICAgICBTSEExIG1fc2hhMTsKIH07CiAKLXRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PGJvb2w+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1
ZSA9IDM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90PiB7IHN0
YXRpYyBjb25zdGV4cHIgIHVuc2lnbmVkIHZhbHVlID0gNTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVj
dCBFbmNvZGVyOjpTYWx0PHVpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFs
dWUgPSA3OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDMyX3Q+IHsg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDExOyB9OwotdGVtcGxhdGUgPD4gc3Ry
dWN0IEVuY29kZXI6OlNhbHQ8dWludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDEzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MzJfdD4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTc7IH07Ci10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dmFsdWUgPSAxOTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0PiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKLXRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gMjk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAxOyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTAzOyB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rl
cjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKK3RlbXBs
YXRlIDw+IHN0cnVjdCBTYWx0PGJvb2w+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1
ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25z
dGV4cHIgIHVuc2lnbmVkIHZhbHVlID0gNTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVp
bnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA3OyB9OwordGVtcGxh
dGUgPD4gc3RydWN0IFNhbHQ8dWludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDExOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDY0X3Q+IHsgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEzOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNh
bHQ8aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTc7IH07Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdmFsdWUgPSAxOTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGZsb2F0PiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBT
YWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7IH07Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTAxOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8aW50MTZfdD4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3ZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2YWx1
ZSkKIHsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0
eXBlU2FsdCA9IFNhbHQ8VD46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAgc2hhMS5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUp
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399420</attachid>
            <date>2020-05-14 15:39:02 -0700</date>
            <delta_ts>2020-05-23 09:54:51 -0700</delta_ts>
            <desc>Patch v9</desc>
            <filename>bug-211880-20200514153914.patch</filename>
            <type>text/plain</type>
            <size>15177</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5MWQ3ZjIzZjZkNjEyY2NkNWZlNTdm
Y2I2MjE5MWE2MjdlZGYwZWMuLjBmNjA5M2VhYzg3MGUwODNiYTgyMzE5NTgyYjhhN2E2NzlhNWRi
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMDUtMTQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBhbGwgdGVt
cGxhdGUgbWV0aG9kcyB0aGF0IGhhbmRsZSBlbnVtCisgICAgICAgICAgdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3IgYWxsIG90aGVyIHRlbXBsYXRlIG1ldGhvZCB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
ICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8K
KyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rl
cjo6b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJh
dG9yPDwpOgorCiAyMDIwLTA1LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gVXBkYXRlIHRoZSBwbGFjZWhvbGRlciBpY29uIGltYWdl
IGZvciBhdHRhY2htZW50IGVsZW1lbnRzIHdpdGggcHJvZ3Jlc3M9IjAiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYy
M2EyYjljMTJkNDBkMzc3MzAzOGIxMmZmMDk4NjQ4Ni4uNGRiMTUzNDBlOTJkYTU0ZjRmZmI4ZDdj
MWM3Y2JkYmMyZmI4ZTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+
CiAKLSNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KLQogbmFt
ZXNwYWNlIFdURiB7CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCkBAIC00Nyw4MSArNDUsMjMg
QEAgYm9vbCBEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBzaXpl
KSBjb25zdAogICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9idWZmZXJF
bmQgLSBtX2J1ZmZlclBvc2l0aW9uKTsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExl
bmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIERlY29kZXI6OmRlY29k
ZURhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFidWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
ZW1jcHkoZGF0YSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZSk7CiAgICAgbV9idWZmZXJQb3NpdGlv
biArPSBzaXplOwotCi0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwg
ZGF0YSwgc2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1EZWNvZGVyJiBEZWNvZGVyOjpkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQot
ewotICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplb2YoVCkpKQotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICBUIHZhbHVlOwotICAgIG1lbWNweSgmdmFsdWUsIG1f
YnVmZmVyUG9zaXRpb24sIHNpemVvZihUKSk7Ci0gICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXpl
b2YoVCk7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZh
bHVlKTsKLSAgICBvcHRpb25hbCA9IHZhbHVlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRGVj
b2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxib29sPiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MTZfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MTZfdD4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXIm
IERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDxpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
LX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYgcmVz
dWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYg
RGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mIHJlc3VsdCkKK2Jvb2wgRGVjb2Rl
cjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewot
ICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KKyAgICBpZiAoIWRlY29kZURhdGEo
ZGF0YSwgc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotRGVjb2RlciYgRGVjb2Rlcjo6
b3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3No
YTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZl
cmlmeUNoZWNrc3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oCmluZGV4IGM2ZGI1MDdlMDEwODU2NGViZTU5MWUzYjk1NDAwMmIwMTZkODdlOTAu
Ljk4ZjM2ODYwYjA5MjM4NTFiZDI4M2MyZDNhMDhiMjE5YTJkMDc5YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1
ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3Bh
Y2UgUGVyc2lzdGVuY2UgewpAQCAtNDMsMjAgKzQ0LDIwIEBAIHB1YmxpYzoKIAogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwog
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZp
eGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+Jik7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MTZf
dD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDxpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9w
ZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCisgICAg
eworICAgICAgICBUIHZhbHVlOworICAgICAgICBpZiAoZGVjb2RlRGF0YShyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVCkpKSB7CisgICAgICAgICAgICBFbmNvZGVy
Ojp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRo
bWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19l
bnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0
aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9u
YWw8VD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9IENvZGVyPFQ+OjpkZWNvZGUo
KnRoaXMpOwpAQCAtNjYsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgog
ICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBi
ZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihF
KSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFu
IDY0IGJpdHMhIik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAg
KnRoaXMgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03Nyw4ICs3OCw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFdBUk5fVU5VU0VEX1JFVFVSTgotICAgIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbihzaXplX3QgbnVtRWxlbWVudHMpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhl
ZCwga25vd24gZW5jb2RlZCBzaXplISIpOwogCkBAIC05Miw3ICs5Myw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRh
KHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsK
ICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCmluZGV4IDE0ZGQzZjY4Mzg3ZmUz
ZjgzYzA0OWY0MTgyODJjNTc5MWFmMGUyYWEuLjcxNjA3NGQ4NTlmNzM2OGJjODk2MmUxMjJiMzFi
YzgwNDIzZTYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RW5jb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNzIgKzUzLDE2IEBAIHZvaWQgRW5jb2Rlcjo6dXBkYXRl
Q2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplCiAgICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjpl
bmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2
b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUp
CiB7Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0KICAg
ICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemUpOwogICAgIG1lbWNweShidWZmZXIsIGRhdGEs
IHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotRW5jb2RlciYgRW5jb2Rlcjo6
ZW5jb2RlTnVtYmVyKFR5cGUgdmFsdWUpCi17Ci0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1G
b3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0KLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNp
emVvZihUeXBlKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgJnZhbHVlLCBzaXplb2YoVHlwZSkpOwot
ICAgIHJldHVybiAqdGhpczsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChib29s
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ4X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDE2
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50
MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5j
b2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChp
bnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
ZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZG91YmxlIHZhbHVlKQordm9pZCBFbmNvZGVyOjpl
bmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hl
Y2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShkYXRhLCBz
aXplKTsKIH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oIGIvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAppbmRleCAyN2FkMGQwN2Y2NTFh
MGZiNDJiOGViYTFhZGM5Y2JlZjlhYjE3ZDY5Li4yOWU0NWViZWUwMTMxYjNlNmUwMTg1NTQwZDkw
ZWE2N2NjM2U3NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDMsNDggKzQzLDQ1IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgfkVuY29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNr
c3VtKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZh
bHVlPiogPSBudWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBFJiBlbnVt
VmFsdWUpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA8PSBzaXplb2Yo
dWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMuIik7
Ci0gICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odCk7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5
cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKKyAgICAgICAgQVNTRVJUKFdU
Rjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSkpKTsKKyAg
ICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxUPj46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNf
YXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8
PChjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgQ29kZXI8VD46OmVuY29kZSgqdGhpcywgdCk7
CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlciYgb3BlcmF0b3I8PChib29sKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2Rl
ciYgb3BlcmF0b3I8PCh1aW50OF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYg
b3BlcmF0b3I8PCh1aW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9w
ZXJhdG9yPDwodWludDMyX3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KHVpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PChpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8
PChpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChp
bnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChmbG9h
dCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZG91YmxlKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRo
bWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoVCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1f
c2hhMSwgdmFsdWUpOworICAgICAgICBlbmNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CiAKICAgICBjb25zdCB1aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhKCk7IH0KICAgICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLnNpemUoKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVwZGF0
ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVy
KFNIQTEmLCBUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hB
MSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBVKTsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihUeXBl
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCk7CiAKICAgICB1aW50OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RydWN0IFNhbHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+IHN0cnVjdCBTYWx0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwog
ICAgIFNIQTEgbV9zaGExOwpAQCAtMTAyLDEwICs5OSwxMCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDI5OwogdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBF
bmNvZGVyOjpTYWx0PGludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDEwMzsgfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVT4KK3ZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hh
MSwgVSB2YWx1ZSkKIHsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7Cisg
ICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VT46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0ZXMocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAg
ICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXpl
b2YodmFsdWUpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400126</attachid>
            <date>2020-05-23 09:54:53 -0700</date>
            <delta_ts>2020-05-23 11:24:30 -0700</delta_ts>
            <desc>Patch v10</desc>
            <filename>bug-211880-20200523095605.patch</filename>
            <type>text/plain</type>
            <size>15631</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLmY2MzUxMDc3Y2IyOTNkNTk1ZDMxZmVmZWQxODc1ZDFkMzkyODhl
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDUtMjMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIEVgIGZvciBlbnVtIHR5
cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVGAgZm9yIG5vbi1QT0QgdHlwZXMuCisgICAg
ICAgIC0gVXNlIGB0eXBlbmFtZSBVYCBmb3Igc3RkOjppc19hcml0aG1ldGljPD4gdHlwZXMuCisg
ICAgICAgIC0gTW92ZSBXQVJOX1VOVVNFRF9SRVRVUk4gdG8gc2FtZSBsaW5lIGFzIGBib29sYCBy
ZXR1cm4gdHlwZS4KKworICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rl
ci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVEYXRhKTog
QWRkLiAgRXh0cmFjdCBjb2RlIHRvCisgICAgICAgIHNoYXJlLgorICAgICAgICAoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZU51bWJlcik6IERlbGV0ZS4KKyAgICAgICAgKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOiBEZWxldGUuCisgICAgICAgICog
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyOjpvcGVyYXRvcj4+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICBN
b3ZlIHN0YXRpY19hc3NlcnQoKSB0byBTRklOQUUgY2hlY2suCisgICAgICAgICogd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hh
cmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0
aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlTnVtYmVy
KTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
aDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJhdG9yPDwpOgorCiAy
MDIwLTA1LTIyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
V1RGOjppc1ZhbGlkRW51bSgpIGhhcyBhIHR5cG8gaW4gc3RhdGljX2Fzc2VydCBtYWtpbmcgaXQg
YSB0YXV0b2xvZ2ljYWwgY29tcGFyaXNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhMmI5YzEyZDQwZDM3NzMw
MzhiMTJmZjA5ODY0ODYuLjRkYjE1MzQwZTkyZGE1NGY0ZmZiOGQ3YzFjN2NiZGJjMmZiOGU4OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oPgogCi0jaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+Ci0KIG5hbWVzcGFjZSBXVEYgewogbmFt
ZXNwYWNlIFBlcnNpc3RlbmNlIHsKIApAQCAtNDcsODEgKzQ1LDIzIEBAIGJvb2wgRGVjb2Rlcjo6
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKICAgICByZXR1
cm4gc2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3Np
dGlvbik7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVEYXRhKHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogewogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFp
bihzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbWVtY3B5KGRhdGEsIG1fYnVm
ZmVyUG9zaXRpb24sIHNpemUpOwogICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKLQotICAg
IEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotRGVjb2RlciYgRGVjb2Rl
cjo6ZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKLXsKLSAgICBpZiAoIWJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZW9mKFQpKSkKLSAgICAgICAgcmV0dXJuICp0aGlz
OwotCi0gICAgVCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBz
aXplb2YoVCkpOwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOwotCi0gICAgRW5j
b2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0gICAgb3B0aW9u
YWwgPSB2YWx1ZTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVt
YmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8
dWludDhfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0
dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRv
cj4+KE9wdGlvbmFsPHVpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1i
ZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1
aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mIHJlc3Vs
dCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERl
Y29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1
cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9y
Pj4oT3B0aW9uYWw8ZmxvYXQ+JiByZXN1bHQpCitib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7Ci19CisgICAgaWYgKCFkZWNvZGVEYXRhKGRhdGEsIHNpemUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9u
YWw8ZG91YmxlPiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
KyAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
IGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBj
NmRiNTA3ZTAxMDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi41ODRjMmJjNDM4NmNmYjQ5
Yzc3YzYzZjE5NjkwZjJhNTU0N2Q4NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVt
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsK
QEAgLTQzLDIwICs0NCwyMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4m
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1
aW50OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90
PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PGZsb2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRGVjb2Rl
ciYgb3BlcmF0b3I+PihPcHRpb25hbDxVPiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgVSB2YWx1
ZTsKKyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZh
bHVlKSwgc2l6ZW9mKFUpKSkgeworICAgICAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1G
b3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9
IG51bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3Rk
Ojppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAg
ICAgewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKQEAgLTY2LDcg
KzY3LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihFKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQg
Yml0cyEiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2
NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAg
ICAgICBPcHRpb25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwog
ICAgICAgICBpZiAoIXZhbHVlKQpAQCAtNzcsMjIgKzc4LDIwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFdBUk5fVU5V
U0VEX1JFVFVSTgotICAgIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qg
bnVtRWxlbWVudHMpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51
bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Fy
aXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBhIGZpeGVkLCBrbm93biBlbmNv
ZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICAgICAgaWYgKG51bUVsZW1lbnRz
ID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihVKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3Vn
aFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgICAgIHJldHVybiBidWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFUpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENEZWNvZGVyID0gZmFsc2U7CiAKIHBy
aXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CiAg
ICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAppbmRleCAxNGRkM2Y2ODM4N2ZlM2Y4
M2MwNDlmNDE4MjgyYzU3OTFhZjBlMmFhLi43MTYwNzRkODU5ZjczNjhiYzg5NjJlMTIyYjMxYmM4
MDQyM2U2MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDcyICs1MywxNiBAQCB2b2lkIEVuY29kZXI6OnVwZGF0ZUNo
ZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZQogICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9p
ZCBFbmNvZGVyOjplbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQog
ewotICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAg
dWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplKTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBz
aXplKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVu
Y29kZU51bWJlcihUeXBlIHZhbHVlKQotewotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9y
TnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotCi0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXpl
b2YoVHlwZSkpOwotICAgIG1lbWNweShidWZmZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAg
ICByZXR1cm4gKnRoaXM7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50OF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMy
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVu
Y29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50
MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5j
b2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZs
b2F0IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGRvdWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewot
ICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6
ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlQ2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBm
YjQyYjhlYmExYWRjOWNiZWY5YWIxN2Q2OS4uNzJiYWU4OGNlN2VmNTVhMGNiMzAxY2YyOWUwMTg0
NTAzZTMxMzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQzLDQ4ICs0Myw0NSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1
bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNv
ZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZh
bHVlKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVp
bnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwot
ICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBl
IG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6
OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAg
ICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6Omlz
X2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfY29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2Fy
aXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwo
Y29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIENvZGVyPFQ+OjplbmNvZGUoKnRoaXMsIHQpOwog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVu
Y29kZXImIG9wZXJhdG9yPDwoYm9vbCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXIm
IG9wZXJhdG9yPDwodWludDhfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9w
ZXJhdG9yPDwodWludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KHVpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PCh1aW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9y
PDwoaW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwo
aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50
NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSk7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1l
dGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFUgdmFs
dWUpCisgICAgeworICAgICAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3No
YTEsIHZhbHVlKTsKKyAgICAgICAgZW5jb2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQogCiAgICAgY29uc3QgdWludDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVD
aGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihT
SEExJiwgVHlwZSk7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEm
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVSk7CiAKICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOwogCiAgICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBTYWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBzdHJ1Y3QgU2FsdDsKIAogICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZlcjsKICAg
ICBTSEExIG1fc2hhMTsKQEAgLTEwMiwxMCArOTksMTAgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVu
Y29kZXI6OlNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAy
OTsKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5j
b2Rlcjo6U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAx
MDM7IH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotdm9pZCBFbmNvZGVyOjp1cGRhdGVD
aGVja3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUeXBlIHZhbHVlKQordGVtcGxhdGUgPHR5cGVu
YW1lIFU+Cit2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEs
IFUgdmFsdWUpCiB7Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VHlwZT46OnZhbHVlOworICAg
IGF1dG8gdHlwZVNhbHQgPSBTYWx0PFU+Ojp2YWx1ZTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAg
IHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9m
KHZhbHVlKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400129</attachid>
            <date>2020-05-23 11:24:32 -0700</date>
            <delta_ts>2020-05-23 11:49:42 -0700</delta_ts>
            <desc>Patch v11</desc>
            <filename>bug-211880-20200523112543.patch</filename>
            <type>text/plain</type>
            <size>18127</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLjVmMGU0NGQzN2U5M2U3MTc2M2E4ODVhZjNmZmI0YjFmYWNkMmM3
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDUtMjMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBDaGFuZ2Ugc3RydWN0IEVuY29kZXI6OlNhbHQg
dG8gYSBzdGF0aWMgY29uc3RleHByIHRlbXBsYXRlCisgICAgICAgICAgbWV0aG9kIGluIGFuIGF0
dGVtcHQgdG8gYXBwZWFzZSB0aGUgV2luQ2Fpcm8gYnVpbGQuCisgICAgICAgIC0gVXNlIGB0eXBl
bmFtZSBFYCBmb3IgZW51bSB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIFRgIGZvciBu
b24tUE9EIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVWAgZm9yIHN0ZDo6aXNfYXJp
dGhtZXRpYzw+IHR5cGVzLgorICAgICAgICAtIE1vdmUgV0FSTl9VTlVTRURfUkVUVVJOIHRvIHNh
bWUgbGluZSBhcyBgYm9vbGAgcmV0dXJuIHR5cGUuCisKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2Rlcjo6ZGVjb2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4K
KyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0
YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVOdW1iZXIpOiBE
ZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpvcGVyYXRvcj4+KTog
RGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
IGNvbnN0KToKKyAgICAgICAgTW92ZSBzdGF0aWNfYXNzZXJ0KCkgdG8gU0ZJTkFFIGNoZWNrLgor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHA6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4dHJh
Y3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVu
Y29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5j
b2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpz
YWx0PGJvb2w+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8dWlu
dDhfdD4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MTZf
dD4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MzJfdD4p
OgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50NjRfdD4pOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDxpbnQzMl90Pik6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpzYWx0PGludDY0X3Q+KToKKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8ZmxvYXQ+KToKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8ZG91YmxlPik6CisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpzYWx0PGludDE2X3Q+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKToKKwogMjAyMC0wNS0yMiAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVu
dW0oKSBoYXMgYSB0eXBvIGluIHN0YXRpY19hc3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2Fs
IGNvbXBhcmlzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRE
ZWNvZGVyLmNwcAppbmRleCA4NTk1ZmNhZjIzYTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2
Li40ZGIxNTM0MGU5MmRhNTRmNGZmYjhkN2MxYzdjYmRiYzJmYjhlODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0
ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1i
b29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBz
aXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRh
dGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJl
cihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFs
dWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1i
ZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1
aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0
dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRv
cj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJl
cihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgRW5jb2Rlcjo6
dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggYzZkYjUwN2UwMTA4NTY0
ZWJlNTkxZTNiOTU0MDAyYjAxNmQ4N2U5MC4uNTg0YzJiYzQzODZjZmI0OWM3N2M2M2YxOTY5MGYy
YTU1NDdkODZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CkBAIC00MywyMCArNDQs
MjAgQEAgcHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIHZlcmlmeUNoZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3Qp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVG
aXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+Jik7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZf
dD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDx1aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYg
b3BlcmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Fy
aXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4o
T3B0aW9uYWw8VT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7CisgICAgICAgIGlm
IChkZWNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihV
KSkpIHsKKyAgICAgICAgICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hh
MSwgdmFsdWUpOworICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDxUPj46OnZhbHVlICYmICFzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6
dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAg
RGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQogICAgIHsKICAgICAgICAg
cmVzdWx0ID0gQ29kZXI8VD46OmRlY29kZSgqdGhpcyk7CkBAIC02Niw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51
bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDxFPiYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0g
OCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5
cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2
YWx1ZSkKQEAgLTc3LDIyICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRVUk4KLSAg
ICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBj
b25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19h
cml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29u
c3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2
YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBzaXplISIpOwot
Ci0gICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkgLyBzaXplb2YoVCkpCisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YoVSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4obnVt
RWxlbWVudHMgKiBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3Vn
aFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihVKSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSVBDRGVjb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKHNpemVfdCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4g
RGVjb2RlciYgZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFR5cGU+Jik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZURhdGEodWludDhfdCogZGF0YSwg
c2l6ZV90KTsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyOwogICAgIGNvbnN0IHVpbnQ4
X3QqIG1fYnVmZmVyUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdmZTNmODNjMDQ5ZjQxODI4MmM1
NzkxYWYwZTJhYS4uZTM1ODBmMGZlN2EyODQ2MDNkNWM1OTRlYWQwYWFiZTcwN2MzYWU5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00OCw3NyArNDgsMjEgQEAgdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkK
IAogdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8
dWludDhfdCo+Ojp2YWx1ZTsKKyAgICBhdXRvIHR5cGVTYWx0ID0gRW5jb2Rlcjo6c2FsdDx1aW50
OF90Kj4oKTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0
eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6
ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVEYXRhKGNvbnN0IHVp
bnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YSht
X3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplKTsK
ICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVlKQotewotICAg
IEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotCi0gICAg
dWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNweShidWZmZXIs
ICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUVuY29kZXIm
IEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50OF90IHZh
bHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBF
bmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVO
dW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDE2X3Qg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXIm
IEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDY0
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQ2
NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGRvdWJs
ZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUp
OworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUp
OworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2Rl
Q2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBmYjQyYjhlYmExYWRjOWNiZWY5YWIxN2Q2OS4uZDI3
NTIyYTFlOTgyZjc3MGU1MjJkYzg2YjQzNzU2ZWNmMTZmOTdiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDY5ICs0Myw2NiBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBv
cGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXIm
IG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVlKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBi
ZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBz
aXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJp
dHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVp
bnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2Fy
aXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2Vu
dW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRy
PgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIENv
ZGVyPFQ+OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9vbCk7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IEVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNv
ZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAg
ICBFbmNvZGVyJiBvcGVyYXRvcjw8KFUgdmFsdWUpCisgICAgeworICAgICAgICBFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgZW5jb2RlRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9p
ZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7CisgICAgc3RhdGljIHZvaWQg
dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qp
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZv
ck51bWJlcihTSEExJiwgVSk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNv
ZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBF
bmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgdWludDhfdCog
Z3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBTYWx0
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNh
bHQoKTsKIAogICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZlcjsKICAgICBTSEExIG1f
c2hhMTsKIH07CiAKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGJvb2w+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW5jb2Rlcjo6U2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIgIHVuc2lnbmVkIHZhbHVl
ID0gNTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQxNl90PiB7IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA3OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0
IEVuY29kZXI6OlNhbHQ8dWludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1
ZSA9IDExOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDY0X3Q+IHsg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEzOyB9OwotdGVtcGxhdGUgPD4gc3Ry
dWN0IEVuY29kZXI6OlNhbHQ8aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gMTc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQ2NF90PiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxOTsgfTsKLXRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFs
dWUgPSAyMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJsZT4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gMTAxOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MTZfdD4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hB
MSYgc2hhMSwgVHlwZSB2YWx1ZSkKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNv
ZGVyOjpzYWx0PGJvb2w+KCkgeyByZXR1cm4gMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1
bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3Q+KCkgeyByZXR1cm4gNTsgfTsKK3RlbXBsYXRl
IDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQxNl90PigpIHsgcmV0dXJu
IDc7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rlcjo6c2FsdDx1aW50
MzJfdD4oKSB7IHJldHVybiAxMTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBF
bmNvZGVyOjpzYWx0PHVpbnQ2NF90PigpIHsgcmV0dXJuIDEzOyB9OwordGVtcGxhdGUgPD4gY29u
c3RleHByIHVuc2lnbmVkIEVuY29kZXI6OnNhbHQ8aW50MzJfdD4oKSB7IHJldHVybiAxNzsgfTsK
K3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGludDY0X3Q+KCkg
eyByZXR1cm4gMTk7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rlcjo6
c2FsdDxmbG9hdD4oKSB7IHJldHVybiAyMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNp
Z25lZCBFbmNvZGVyOjpzYWx0PGRvdWJsZT4oKSB7IHJldHVybiAyOTsgfTsKK3RlbXBsYXRlIDw+
IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3QqPigpIHsgcmV0dXJuIDEw
MTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGludDE2
X3Q+KCkgeyByZXR1cm4gMTAzOyB9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KK3ZvaWQgRW5j
b2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVSB2YWx1ZSkKIHsKLSAg
ICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0eXBlU2FsdCA9
IEVuY29kZXI6OnNhbHQ8VT4oKTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAgIHNoYTEuYWRkQnl0
ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400131</attachid>
            <date>2020-05-23 11:49:44 -0700</date>
            <delta_ts>2020-05-23 20:03:44 -0700</delta_ts>
            <desc>Patch v12</desc>
            <filename>bug-211880-20200523115055.patch</filename>
            <type>text/plain</type>
            <size>18133</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLjVmMGU0NGQzN2U5M2U3MTc2M2E4ODVhZjNmZmI0YjFmYWNkMmM3
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDUtMjMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBDaGFuZ2Ugc3RydWN0IEVuY29kZXI6OlNhbHQg
dG8gYSBzdGF0aWMgY29uc3RleHByIHRlbXBsYXRlCisgICAgICAgICAgbWV0aG9kIGluIGFuIGF0
dGVtcHQgdG8gYXBwZWFzZSB0aGUgV2luQ2Fpcm8gYnVpbGQuCisgICAgICAgIC0gVXNlIGB0eXBl
bmFtZSBFYCBmb3IgZW51bSB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIFRgIGZvciBu
b24tUE9EIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVWAgZm9yIHN0ZDo6aXNfYXJp
dGhtZXRpYzw+IHR5cGVzLgorICAgICAgICAtIE1vdmUgV0FSTl9VTlVTRURfUkVUVVJOIHRvIHNh
bWUgbGluZSBhcyBgYm9vbGAgcmV0dXJuIHR5cGUuCisKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2Rlcjo6ZGVjb2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4K
KyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0
YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVOdW1iZXIpOiBE
ZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpvcGVyYXRvcj4+KTog
RGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
IGNvbnN0KToKKyAgICAgICAgTW92ZSBzdGF0aWNfYXNzZXJ0KCkgdG8gU0ZJTkFFIGNoZWNrLgor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHA6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4dHJh
Y3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVu
Y29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5j
b2Rlcjo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpz
YWx0PGJvb2w+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8dWlu
dDhfdD4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MTZf
dD4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MzJfdD4p
OgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50NjRfdD4pOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDxpbnQzMl90Pik6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpzYWx0PGludDY0X3Q+KToKKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8ZmxvYXQ+KToKKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8ZG91YmxlPik6CisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpzYWx0PGludDE2X3Q+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKToKKwogMjAyMC0wNS0yMiAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVu
dW0oKSBoYXMgYSB0eXBvIGluIHN0YXRpY19hc3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2Fs
IGNvbXBhcmlzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRE
ZWNvZGVyLmNwcAppbmRleCA4NTk1ZmNhZjIzYTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2
Li40ZGIxNTM0MGU5MmRhNTRmNGZmYjhkN2MxYzdjYmRiYzJmYjhlODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0
ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1i
b29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBz
aXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRh
dGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJl
cihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFs
dWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1i
ZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1
aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0
dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRv
cj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJl
cihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgRW5jb2Rlcjo6
dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggYzZkYjUwN2UwMTA4NTY0
ZWJlNTkxZTNiOTU0MDAyYjAxNmQ4N2U5MC4uMTUyZWRkYWY2ZDc5MTAzMjdiMGMxYTY2YjFmMWY1
MjAwZmIxNDlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CkBAIC00MywyMCArNDQs
MjAgQEAgcHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIHZlcmlmeUNoZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3Qp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVG
aXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+Jik7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZf
dD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDx1aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYg
b3BlcmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Fy
aXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4o
T3B0aW9uYWw8VT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7CisgICAgICAgIGlm
IChkZWNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihV
KSkpIHsKKyAgICAgICAgICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyPFU+KG1f
c2hhMSwgdmFsdWUpOworICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9j
b25zdDxUPj46OnZhbHVlICYmICFzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxU
Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAg
ICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQogICAgIHsKICAgICAg
ICAgcmVzdWx0ID0gQ29kZXI8VD46OmRlY29kZSgqdGhpcyk7CkBAIC02Niw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRp
b25hbDxFPiYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkg
PD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVt
IHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYg
KCF2YWx1ZSkKQEAgLTc3LDIyICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRVUk4K
LSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRz
KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19hcml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykg
Y29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljPFQ+
Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBzaXplISIp
OwotCi0gICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLyBzaXplb2YoVCkpCisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YoVSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4o
bnVtRWxlbWVudHMgKiBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVu
b3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihVKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzSVBDRGVjb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluKHNpemVfdCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4gRGVjb2RlciYgZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFR5cGU+Jik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZURhdGEodWludDhfdCogZGF0
YSwgc2l6ZV90KTsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyOwogICAgIGNvbnN0IHVp
bnQ4X3QqIG1fYnVmZmVyUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdmZTNmODNjMDQ5ZjQxODI4
MmM1NzkxYWYwZTJhYS4uZTM1ODBmMGZlN2EyODQ2MDNkNWM1OTRlYWQwYWFiZTcwN2MzYWU5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00OCw3NyArNDgsMjEgQEAgdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6
ZSkKIAogdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNh
bHQ8dWludDhfdCo+Ojp2YWx1ZTsKKyAgICBhdXRvIHR5cGVTYWx0ID0gRW5jb2Rlcjo6c2FsdDx1
aW50OF90Kj4oKTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwg
c2l6ZSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVEYXRhKGNvbnN0
IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0
YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXpl
KTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVlKQotewot
ICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotCi0g
ICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNweShidWZm
ZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2Rl
TnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50OF90
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDE2
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVu
Y29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWlu
dDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChp
bnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGRv
dWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFs
dWUpOworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNp
emUpOworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5j
b2RlQ2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBmYjQyYjhlYmExYWRjOWNiZWY5YWIxN2Q2OS4u
ZTc0ZWM5YzI1NTg2ZjQ1MzA0NjljZWUzYTMwNWEzOTNiYmVmZGYyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDY5ICs0Myw2NiBAQCBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVy
JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29k
ZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVlKQogICAgIHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5v
dCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8
PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0
IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0
PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6Omlz
X2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6Omlz
X2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxs
cHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAg
IENvZGVyPFQ+OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
fQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9vbCk7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBF
bmNvZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4K
KyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFUgdmFsdWUpCisgICAgeworICAgICAgICBFbmNvZGVy
Ojp1cGRhdGVDaGVja3N1bUZvck51bWJlcjxVPihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgZW5j
b2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2Yo
VSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCog
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1
ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0
aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7CisgICAgc3RhdGlj
IHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVj
a3N1bUZvck51bWJlcihTSEExJiwgVSk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
UENFbmNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgdWlu
dDhfdCogZ3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0cnVj
dCBTYWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHNhbHQoKTsKIAogICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZlcjsKICAgICBT
SEExIG1fc2hhMTsKIH07CiAKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGJvb2w+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Ci10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIgIHVuc2lnbmVk
IHZhbHVlID0gNTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQxNl90
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA3OyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDExOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDY0
X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEzOyB9OwotdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQ2
NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxOTsgfTsKLXRlbXBsYXRl
IDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdmFsdWUgPSAyMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJs
ZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTAxOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50
MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1i
ZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25l
ZCBFbmNvZGVyOjpzYWx0PGJvb2w+KCkgeyByZXR1cm4gMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0
ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3Q+KCkgeyByZXR1cm4gNTsgfTsKK3Rl
bXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQxNl90PigpIHsg
cmV0dXJuIDc7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rlcjo6c2Fs
dDx1aW50MzJfdD4oKSB7IHJldHVybiAxMTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNp
Z25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ2NF90PigpIHsgcmV0dXJuIDEzOyB9OwordGVtcGxhdGUg
PD4gY29uc3RleHByIHVuc2lnbmVkIEVuY29kZXI6OnNhbHQ8aW50MzJfdD4oKSB7IHJldHVybiAx
NzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGludDY0
X3Q+KCkgeyByZXR1cm4gMTk7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5j
b2Rlcjo6c2FsdDxmbG9hdD4oKSB7IHJldHVybiAyMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhw
ciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGRvdWJsZT4oKSB7IHJldHVybiAyOTsgfTsKK3RlbXBs
YXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3QqPigpIHsgcmV0
dXJuIDEwMTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0
PGludDE2X3Q+KCkgeyByZXR1cm4gMTAzOyB9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KK3Zv
aWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVSB2YWx1ZSkK
IHsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUeXBlPjo6dmFsdWU7CisgICAgYXV0byB0eXBl
U2FsdCA9IEVuY29kZXI6OnNhbHQ8VT4oKTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwogICAgIHNoYTEu
YWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVl
KSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400147</attachid>
            <date>2020-05-23 20:03:46 -0700</date>
            <delta_ts>2020-05-23 20:53:49 -0700</delta_ts>
            <desc>Patch v13</desc>
            <filename>bug-211880-20200523200501.patch</filename>
            <type>text/plain</type>
            <size>18559</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLmYzMTliODBkN2Q0MTFkZWNjZmE2YTk5YmRhOGQzNzU4ZjU3MGZl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMjMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBDaGFuZ2Ugc3RydWN0IEVuY29kZXI6OlNhbHQg
dG8gYSBzdGF0aWMgY29uc3RleHByIHRlbXBsYXRlCisgICAgICAgICAgbWV0aG9kIHRvIHNpbXBs
aWZ5LgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIGVudW0gdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3Igbm9uLVBPRCB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5
cGVuYW1lIFVgIGZvciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4KKyAgICAgICAgLSBBZGQg
c3RkOjppc19hcml0aG1ldGljPD4gU0ZJTkFFIGNvbnN0cmFpbnQgdG8KKyAgICAgICAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcigpIGFuZCBtb3ZlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgICAgaW50byB0aGUgY2xhc3MgaW4gYW4gYXR0ZW1wdCB0byBmaXggdGhlIFdpbkNhcmlv
IGJ1aWxkLgorICAgICAgICAtIE1vdmUgV0FSTl9VTlVTRURfUkVUVVJOIHRvIHNhbWUgbGluZSBh
cyBgYm9vbGAgcmV0dXJuIHR5cGUuCisKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVj
b2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVOdW1iZXIpOiBEZWxldGUuCisg
ICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpvcGVyYXRvcj4+KTogRGVsZXRlLgor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluIGNvbnN0KToK
KyAgICAgICAgTW92ZSBzdGF0aWNfYXNzZXJ0KCkgdG8gU0ZJTkFFIGNoZWNrLgorICAgICAgICAq
IHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0
bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVy
OjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpzYWx0PGJvb2w+
KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8dWludDhfdD4pOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MTZfdD4pOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MzJfdD4pOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50NjRfdD4pOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDxpbnQzMl90Pik6CisgICAgICAgIChXVEY6
OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpzYWx0PGludDY0X3Q+KToKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8ZmxvYXQ+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXI6OnNhbHQ8ZG91YmxlPik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpF
bmNvZGVyOjpzYWx0PGludDE2X3Q+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29k
ZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKToKKwogMjAyMC0wNS0yMiAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVudW0oKSBoYXMg
YSB0eXBvIGluIHN0YXRpY19hc3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2FsIGNvbXBhcmlz
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cAppbmRleCA4NTk1ZmNhZjIzYTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2Li40ZGIxNTM0
MGU5MmRhNTRmNGZmYjhkN2MxYzdjYmRiYzJmYjhlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAK
QEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1ib29sIERlY29k
ZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jv
b2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKICAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1
bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25h
bDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFsdWU7Ci0gICAg
bWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZl
clBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9y
TnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0gICAgcmV0dXJu
ICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+
JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNv
ZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRp
b25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYgcmVz
dWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQorICAg
IGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1E
ZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKLXsK
LSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hl
Y2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggYzZkYjUwN2UwMTA4NTY0ZWJlNTkxZTNi
OTU0MDAyYjAxNmQ4N2U5MC4uNTEwNDg5ZTM5NzkwM2E1OWY3YWM1N2ZlNWRjMGE0MDFlOTI3MGUy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgor
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CkBAIC00MywzMCArNDQsMzAgQEAgcHVi
bGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHZl
cmlmeUNoZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0
aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZfdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJf
dD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDx1aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDxpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERl
Y29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+Jik7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGlj
PFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PFU+JiByZXN1bHQpCisgICAgeworICAgICAgICBVIHZhbHVlOworICAgICAgICBpZiAoZGVjb2Rl
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpKSB7Cisg
ICAgICAgICAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcjxVPihtX3NoYTEsIHZh
bHVlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJs
ZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+
Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNv
ZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAgICAgICByZXN1
bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19l
bnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERl
Y29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBiZSBsYXJn
ZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBz
aXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJp
dHMhIik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMg
Pj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiArNzgsMjAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRy
PgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBhIGZpeGVk
LCBrbm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICAgICAgaWYg
KG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVv
ZihVKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgICAg
IHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9m
KFUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENEZWNvZGVyID0g
ZmFsc2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8
VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgY29uc3QgdWludDhfdCog
bV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAppbmRleCAxNGRk
M2Y2ODM4N2ZlM2Y4M2MwNDlmNDE4MjgyYzU3OTFhZjBlMmFhLi5lMzU4MGYwZmU3YTI4NDYwM2Q1
YzU5NGVhZDBhYWJlNzA3YzNhZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDc3ICs0OCwyMSBAQCB1aW50OF90KiBF
bmNvZGVyOjpncm93KHNpemVfdCBzaXplKQogCiB2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3Vt
Rm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOworICAgIGF1dG8gdHlw
ZVNhbHQgPSBFbmNvZGVyOjpzYWx0PHVpbnQ4X3QqPigpOwogICAgIHNoYTEuYWRkQnl0ZXMocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAg
ICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVu
Y29kZXI6OmVuY29kZURhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0g
ICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0KICAgICB1aW50
OF90KiBidWZmZXIgPSBncm93KHNpemUpOwogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotRW5jb2RlciYgRW5jb2Rlcjo6ZW5jb2Rl
TnVtYmVyKFR5cGUgdmFsdWUpCi17Ci0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1i
ZXIobV9zaGExLCB2YWx1ZSk7Ci0KLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihU
eXBlKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgJnZhbHVlLCBzaXplb2YoVHlwZSkpOwotICAgIHJl
dHVybiAqdGhpczsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChib29sIHZhbHVl
KQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNv
ZGVyOjpvcGVyYXRvcjw8KHVpbnQ4X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJl
cih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDE2X3QgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVu
Y29kZXI6Om9wZXJhdG9yPDwoaW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MzJfdCB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2Rl
TnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQzMl90
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZmxvYXQg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXIm
IEVuY29kZXI6Om9wZXJhdG9yPDwoZG91YmxlIHZhbHVlKQordm9pZCBFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
cmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1G
b3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShkYXRhLCBzaXplKTsK
IH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAppbmRleCAyN2FkMGQwN2Y2NTFhMGZiNDJi
OGViYTFhZGM5Y2JlZjlhYjE3ZDY5Li40NzU3NGYyZWQwN2M3NjExN2M3OTY1NzkwYTkzYWI4MGFm
NTk2ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDMsNzIgKzQzLDY4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkVu
Y29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNrc3VtKCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZp
eGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiog
PSBudWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVl
KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2
NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAg
ICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11
c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6Omlz
VmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAg
IHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2Vu
dW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0
aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNv
bnN0IFQmIHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNv
ZGVyJiBvcGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBv
cGVyYXRvcjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PCh1aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9y
PDwodWludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KGludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGlu
dDMyX3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRp
YzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChVIHZhbHVl
KQorICAgIHsKKyAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXI8VT4obV9z
aGExLCB2YWx1ZSk7CisgICAgICAgIGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmRhdGEoKTsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuc2l6ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRl
Q2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIo
U0hBMSYsIFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEEx
JiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51
bGxwdHI+CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hh
MSwgVSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGF1dG8gdHlwZVNhbHQgPSBFbmNvZGVyOjpzYWx0
PFU+KCk7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
JnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgfQog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2
YXRlOgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVy
KFR5cGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90KTsKIAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgU2FsdDsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVT4gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzYWx0KCk7CiAKICAgICBWZWN0b3I8
dWludDhfdCwgNDA5Nj4gbV9idWZmZXI7CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxib29sPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdmFsdWUgPSAzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhf
dD4geyBzdGF0aWMgY29uc3RleHByICB1bnNpZ25lZCB2YWx1ZSA9IDU7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQz
Ml90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMTsgfTsKLXRlbXBsYXRl
IDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAxMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGlu
dDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE3OyB9OwotdGVtcGxh
dGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIHZhbHVlID0gMTk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxm
bG9hdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjM7IH07Ci10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDI5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWlu
dDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKLXRlbXBs
YXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci12b2lk
IEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFR5cGUgdmFsdWUp
Ci17Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VHlwZT46OnZhbHVlOwotICAgIHNoYTEuYWRk
Qnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVT
YWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFs
dWUpLCBzaXplb2YodmFsdWUpKTsKLX0KK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBF
bmNvZGVyOjpzYWx0PGJvb2w+KCkgeyByZXR1cm4gMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhw
ciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3Q+KCkgeyByZXR1cm4gNTsgfTsKK3RlbXBs
YXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQxNl90PigpIHsgcmV0
dXJuIDc7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rlcjo6c2FsdDx1
aW50MzJfdD4oKSB7IHJldHVybiAxMTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25l
ZCBFbmNvZGVyOjpzYWx0PHVpbnQ2NF90PigpIHsgcmV0dXJuIDEzOyB9OwordGVtcGxhdGUgPD4g
Y29uc3RleHByIHVuc2lnbmVkIEVuY29kZXI6OnNhbHQ8aW50MzJfdD4oKSB7IHJldHVybiAxNzsg
fTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGludDY0X3Q+
KCkgeyByZXR1cm4gMTk7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rl
cjo6c2FsdDxmbG9hdD4oKSB7IHJldHVybiAyMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1
bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGRvdWJsZT4oKSB7IHJldHVybiAyOTsgfTsKK3RlbXBsYXRl
IDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3QqPigpIHsgcmV0dXJu
IDEwMTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGlu
dDE2X3Q+KCkgeyByZXR1cm4gMTAzOyB9OwogCiB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400149</attachid>
            <date>2020-05-23 20:53:51 -0700</date>
            <delta_ts>2020-05-24 10:05:04 -0700</delta_ts>
            <desc>Patch v14</desc>
            <filename>bug-211880-20200523205506.patch</filename>
            <type>text/plain</type>
            <size>18553</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLmYzMTliODBkN2Q0MTFkZWNjZmE2YTk5YmRhOGQzNzU4ZjU3MGZl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMDUtMjMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAgLSBDaGFuZ2Ugc3RydWN0IEVuY29kZXI6OlNhbHQg
dG8gYSBzdGF0aWMgY29uc3RleHByIHRlbXBsYXRlCisgICAgICAgICAgbWV0aG9kIHRvIHNpbXBs
aWZ5LgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIGVudW0gdHlwZXMuCisgICAgICAg
IC0gVXNlIGB0eXBlbmFtZSBUYCBmb3Igbm9uLVBPRCB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5
cGVuYW1lIFVgIGZvciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4KKyAgICAgICAgLSBBZGQg
c3RkOjppc19hcml0aG1ldGljPD4gU0ZJTkFFIGNvbnN0cmFpbnQgdG8KKyAgICAgICAgICBFbmNv
ZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcigpIGFuZCBtb3ZlIGltcGxlbWVudGF0aW9uCisg
ICAgICAgICAgaW50byB0aGUgY2xhc3MgaW4gYW4gYXR0ZW1wdCB0byBmaXggdGhlIFdpbkNhcmlv
IGJ1aWxkLgorICAgICAgICAtIE1vdmUgV0FSTl9VTlVTRURfUkVUVVJOIHRvIHNhbWUgbGluZSBh
cyBgYm9vbGAgcmV0dXJuIHR5cGUuCisKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVj
b2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVOdW1iZXIpOiBEZWxldGUuCisg
ICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpvcGVyYXRvcj4+KTogRGVsZXRlLgor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluIGNvbnN0KToK
KyAgICAgICAgTW92ZSBzdGF0aWNfYXNzZXJ0KCkgdG8gU0ZJTkFFIGNoZWNrLgorICAgICAgICAq
IHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0
bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVy
OjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNv
ZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpzYWx0PGJvb2w+
KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8dWludDhfdD4pOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MTZfdD4pOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50MzJfdD4pOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDx1aW50NjRfdD4pOgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6c2FsdDxpbnQzMl90Pik6CisgICAgICAgIChXVEY6
OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpzYWx0PGludDY0X3Q+KToKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXI6OnNhbHQ8ZmxvYXQ+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXI6OnNhbHQ8ZG91YmxlPik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpF
bmNvZGVyOjpzYWx0PGludDE2X3Q+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29k
ZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKToKKwogMjAyMC0wNS0yMiAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVudW0oKSBoYXMg
YSB0eXBvIGluIHN0YXRpY19hc3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2FsIGNvbXBhcmlz
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNw
cAppbmRleCA4NTk1ZmNhZjIzYTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2Li40ZGIxNTM0
MGU5MmRhNTRmNGZmYjhkN2MxYzdjYmRiYzJmYjhlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAK
QEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1ib29sIERlY29k
ZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jv
b2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKICAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1
bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25h
bDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFsdWU7Ci0gICAg
bWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZl
clBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9y
TnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0gICAgcmV0dXJu
ICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+
JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNv
ZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRp
b25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYgcmVz
dWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQorICAg
IGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1E
ZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKLXsK
LSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hl
Y2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggYzZkYjUwN2UwMTA4NTY0ZWJlNTkxZTNi
OTU0MDAyYjAxNmQ4N2U5MC4uYTRiYzZkMTg1NjcwYTIxYjk4NmI4MzNlMGVhYTI3N2E0NjEyNDI1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0
Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgor
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CkBAIC00MywzMCArNDQsMzAgQEAgcHVi
bGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHZl
cmlmeUNoZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0
aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZfdD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJf
dD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25h
bDx1aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDxpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERl
Y29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+Jik7CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGlj
PFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PFU+JiByZXN1bHQpCisgICAgeworICAgICAgICBVIHZhbHVlOworICAgICAgICBpZiAoZGVjb2Rl
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpKSB7Cisg
ICAgICAgICAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVl
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9p
Zl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2
YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAm
JiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAgICAgICByZXN1bHQg
PSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVt
PEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBiZSBsYXJnZXIg
dGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXpl
b2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMh
Iik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMgPj4g
dmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiArNzgsMjAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
V0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgor
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4o
c2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBhIGZpeGVkLCBr
bm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihV
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFUp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENEZWNvZGVyID0gZmFs
c2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlw
ZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAppbmRleCAxNGRkM2Y2
ODM4N2ZlM2Y4M2MwNDlmNDE4MjgyYzU3OTFhZjBlMmFhLi5lMzU4MGYwZmU3YTI4NDYwM2Q1YzU5
NGVhZDBhYWJlNzA3YzNhZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudEVuY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDc3ICs0OCwyMSBAQCB1aW50OF90KiBFbmNv
ZGVyOjpncm93KHNpemVfdCBzaXplKQogCiB2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9y
RGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOworICAgIGF1dG8gdHlwZVNh
bHQgPSBFbmNvZGVyOjpzYWx0PHVpbnQ4X3QqPigpOwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CiAgICAg
c2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhl
ZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29k
ZXI6OmVuY29kZURhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0KICAgICB1aW50OF90
KiBidWZmZXIgPSBncm93KHNpemUpOwogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotRW5jb2RlciYgRW5jb2Rlcjo6ZW5jb2RlTnVt
YmVyKFR5cGUgdmFsdWUpCi17Ci0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIo
bV9zaGExLCB2YWx1ZSk7Ci0KLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihUeXBl
KSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgJnZhbHVlLCBzaXplb2YoVHlwZSkpOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChib29sIHZhbHVlKQot
ewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVy
OjpvcGVyYXRvcjw8KHVpbnQ4X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2
YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDE2X3QgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29k
ZXI6Om9wZXJhdG9yPDwoaW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVy
KHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MzJfdCB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5j
b2Rlcjo6b3BlcmF0b3I8PCh1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQzMl90IHZh
bHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBF
bmNvZGVyOjpvcGVyYXRvcjw8KGludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51
bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZmxvYXQgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVu
Y29kZXI6Om9wZXJhdG9yPDwoZG91YmxlIHZhbHVlKQordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhl
ZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0
dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShkYXRhLCBzaXplKTsKIH0K
IAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAppbmRleCAyN2FkMGQwN2Y2NTFhMGZiNDJiOGVi
YTFhZGM5Y2JlZjlhYjE3ZDY5Li41ODg1MDliNGY5N2I5ZmEzNjQ0MzM3NDJhNTZkZWE5MzlkYTJl
NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5j
b2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDMsNzIgKzQzLDY4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkVuY29k
ZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNrc3VtKCk7Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVk
TGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBu
dWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiog
PSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVlKQog
ICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90
KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAgICAg
ICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qg
bm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFs
aWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAgIHJl
dHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08
VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1l
dGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0
IFQmIHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVy
JiBvcGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRv
cjw8KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8
PCh1aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwo
dWludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGlu
dDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDMy
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0X3Qp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxV
Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChVIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2
YWx1ZSk7CisgICAgICAgIGVuY29kZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAog
ICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEo
KTsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6
ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tz
dW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYs
IFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWLCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxWPjo6dmFsdWU+KiA9IG51bGxwdHI+
CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgViB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGF1dG8gdHlwZVNhbHQgPSBFbmNvZGVyOjpzYWx0PFY+KCk7
CisgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVT
YWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgfQogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVyKFR5cGUp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90KTsKIAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgU2FsdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Vj4gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzYWx0KCk7CiAKICAgICBWZWN0b3I8dWludDhf
dCwgNDA5Nj4gbV9idWZmZXI7CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDxib29sPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFs
dWUgPSAzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdD4geyBz
dGF0aWMgY29uc3RleHByICB1bnNpZ25lZCB2YWx1ZSA9IDU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQzMl90PiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMTsgfTsKLXRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dmFsdWUgPSAxMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDMyX3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE3OyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxmbG9hdD4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjM7IH07Ci10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDI5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKLXRlbXBsYXRlIDw+
IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDEwMzsgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29k
ZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFR5cGUgdmFsdWUpCi17Ci0g
ICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VHlwZT46OnZhbHVlOwotICAgIHNoYTEuYWRkQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7
Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBz
aXplb2YodmFsdWUpKTsKLX0KK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVy
OjpzYWx0PGJvb2w+KCkgeyByZXR1cm4gMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNp
Z25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3Q+KCkgeyByZXR1cm4gNTsgfTsKK3RlbXBsYXRlIDw+
IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQxNl90PigpIHsgcmV0dXJuIDc7
IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rlcjo6c2FsdDx1aW50MzJf
dD4oKSB7IHJldHVybiAxMTsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNv
ZGVyOjpzYWx0PHVpbnQ2NF90PigpIHsgcmV0dXJuIDEzOyB9OwordGVtcGxhdGUgPD4gY29uc3Rl
eHByIHVuc2lnbmVkIEVuY29kZXI6OnNhbHQ8aW50MzJfdD4oKSB7IHJldHVybiAxNzsgfTsKK3Rl
bXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGludDY0X3Q+KCkgeyBy
ZXR1cm4gMTk7IH07Cit0ZW1wbGF0ZSA8PiBjb25zdGV4cHIgdW5zaWduZWQgRW5jb2Rlcjo6c2Fs
dDxmbG9hdD4oKSB7IHJldHVybiAyMzsgfTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25l
ZCBFbmNvZGVyOjpzYWx0PGRvdWJsZT4oKSB7IHJldHVybiAyOTsgfTsKK3RlbXBsYXRlIDw+IGNv
bnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PHVpbnQ4X3QqPigpIHsgcmV0dXJuIDEwMTsg
fTsKK3RlbXBsYXRlIDw+IGNvbnN0ZXhwciB1bnNpZ25lZCBFbmNvZGVyOjpzYWx0PGludDE2X3Q+
KCkgeyByZXR1cm4gMTAzOyB9OwogCiB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400165</attachid>
            <date>2020-05-24 10:05:06 -0700</date>
            <delta_ts>2020-05-24 10:22:13 -0700</delta_ts>
            <desc>Patch v15</desc>
            <filename>bug-211880-20200524100623.patch</filename>
            <type>text/plain</type>
            <size>19497</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLmRlZDJhNWM5NDQ1OWU0NGM2YzEzMGUyNGVjYTdkYjExYjQ1MzFj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjAtMDUtMjQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
PD4gcGFyYW1ldGVyIHR5cGVzLgorICAgICAgICAtIEV4dHJhY3QgY2hjZWNrc3VtIG1ldGhvZHMg
YW5kIHN0cnVjdCBTYWx0IHRvIGl0cyBvd24gQ2hlY2tzdW0KKyAgICAgICAgICBjbGFzcy4gIFRo
aXMgaXMgc2xpZ2h0bHkgY2xlYW5lciBkZXNpZ24gc2luY2UgYm90aCBEZWNvZGVyIGFuZAorICAg
ICAgICAgIEVuY29kZXIgdXNlIGl0LCBhbmQgaXQgYXZvaWRzIGEgY29tcGlsZXIgZXJyb3Igb24g
TVNWQysrLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBl
cy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMu
CisgICAgICAgIC0gVXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0
aWM8PiB0eXBlcy4KKyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxp
bmUgYXMgYGJvb2xgIHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6
OmRlY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRl
LgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0
ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAg
ICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25z
dCk6CisgICAgICAgIE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAg
ICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAg
ICAgICAgTW92ZSBmcm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNr
c3VtIGNsYXNzLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0
YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAg
ICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IE1vdmUgZnJvbQor
ICAgICAgICBFbmNvZGVyIGNsYXNzLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q2hlY2tz
dW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKTogRGl0dG8uCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKTogTW92ZSB0bworICAgICAgICBDaGVj
a3N1bSBjbGFzcy4KKwogMjAyMC0wNS0yMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVudW0oKSBoYXMgYSB0eXBvIGluIHN0YXRpY19h
c3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2FsIGNvbXBhcmlzb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCA4NTk1ZmNhZjIz
YTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2Li4yYWFjYTcxOTJlNzVlOGNjM2UwOWQ1OWU2
ZjU5MzUzY2FkMjU2MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4K
IAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1l
c3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBA
QCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUp
IGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVu
ZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2Rl
RGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1l
bWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9u
ICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBk
YXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17
Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVvZihUKSkpCi0gICAg
ICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9i
dWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVv
ZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFs
dWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
LX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVz
dWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYg
RGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICBy
ZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJh
dG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVy
OjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0YShk
YXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3No
YTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZl
cmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hl
Y2tzdW0oKQogICAgIHJldHVybiBjb21wdXRlZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19
Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3
ZTAxMDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi4zMzZjNjFlNGZkNjAwNmE3ODVhZGQy
MzNhNTk4NjdiNzU0MGExYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQz
LDMwICs0NCwzMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCos
IHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90
PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0
PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oT3B0aW9uYWw8VT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7Cisg
ICAgICAgIGlmIChkZWNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSks
IHNpemVvZihVKSkpIHsKKyAgICAgICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51
bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAg
ewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBu
dWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAg
ICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBt
dXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxh
cmdlciB0aGFuIDY0IGJpdHMhIik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsK
ICAgICAgICAgKnRoaXMgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiAr
NzgsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZh
bHVlPiogPSBudWxscHRyPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11
c3QgaGF2ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihU
KSkKKyAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAvIHNpemVvZihVKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVv
ZihUKSk7CisgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVs
ZW1lbnRzICogc2l6ZW9mKFUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJUENEZWNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6
ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVO
dW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAg
Y29uc3QgdWludDhfdCogbV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3Np
dGlvbjsKQEAgLTEwMSw2ICsxMDAsNSBAQCBwcml2YXRlOgogICAgIFNIQTEgbV9zaGExOwogfTsK
IAotfSAKLX0KLQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3Bw
CmluZGV4IDE0ZGQzZjY4Mzg3ZmUzZjgzYzA0OWY0MTgyODJjNTc5MWFmMGUyYWEuLjFlNzJmYzZi
MDEzMjhlOTRjMjNjZTAyZWVjMWU2MmRiMzlhODY1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMTMgQEAK
IG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAordm9pZCBDaGVja3N1
bTo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQoreworICAgIGF1dG8gdHlwZVNhbHQgPSBDaGVja3N1bTo6U2FsdDx1aW50
OF90Kj46OnZhbHVlOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5hZGRCeXRlcyhkYXRh
LCBzaXplKTsKK30KKwogRW5jb2Rlcjo6RW5jb2RlcigpCiB7CiB9CkBAIC00Niw3OSArNTMsMTYg
QEAgdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gbV9idWZm
ZXIuZGF0YSgpICsgbmV3UG9zaXRpb247CiB9CiAKLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tz
dW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQot
ewotICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PHVpbnQ4X3QqPjo6dmFsdWU7Ci0gICAgc2hhMS5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlw
ZVNhbHQpKTsKLSAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwotfQotCi12b2lkIEVuY29k
ZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKLSAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsK
LQogICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwg
ZGF0YSwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNv
ZGVyOjplbmNvZGVOdW1iZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVj
a3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdy
b3coc2l6ZW9mKFR5cGUpKTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBl
KSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGJvb2wgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1
aW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQot
RW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KHVpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJl
dHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRv
cjw8KGludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChmbG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0K
LQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29k
ZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICBDaGVja3N1bTo6dXBk
YXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShk
YXRhLCBzaXplKTsKIH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCkBAIC0xMjgs
NSArNzIsNSBAQCB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKICAgICBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpKTsKIH0KIAotfQotfQorfSAvLyBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBm
YjQyYjhlYmExYWRjOWNiZWY5YWIxN2Q2OS4uM2Q2ZjY5MDJlMjBjM2ZhODI4YTNlYTBlNDBjMTIy
ZTBhNmE2MmM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDkgKzMzLDM3IEBACiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKLWNsYXNzIEVuY29kZXI7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCitjbGFz
cyBDaGVja3N1bSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMg
dm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUIHZhbHVlKQorICAgIHsK
KyAgICAgICAgYXV0byB0eXBlU2FsdCA9IENoZWNrc3VtOjpTYWx0PFQ+Ojp2YWx1ZTsKKyAgICAg
ICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBz
aXplb2YodHlwZVNhbHQpKTsKKyAgICAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBTYWx0OworfTsKKwordGVtcGxhdGUgPD4g
c3RydWN0IENoZWNrc3VtOjpTYWx0PGJvb2w+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8dWludDhfdD4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gNTsgfTsKK3RlbXBsYXRlIDw+IHN0
cnVjdCBDaGVja3N1bTo6U2FsdDx1aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gNzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBDaGVja3N1bTo6U2FsdDx1aW50MzJf
dD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8dWludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDEzOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGlu
dDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE3OyB9OwordGVtcGxh
dGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCB2YWx1ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0
PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBDaGVja3N1bTo6U2FsdDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCB2YWx1ZSA9IDI5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0
PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OworCiBjbGFzcyBFbmNvZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQzLDcyICs3MSw0NCBAQCBwdWJsaWM6
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBvcGVy
YXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNvZGVyJiBv
cGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUg
bGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6
ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRz
ISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx1aW50
NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0
aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWU+KiA9IG51bGxwdHI+
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51
bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+
CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgQ29k
ZXI8VD46OmVuY29kZSgqdGhpcywgdCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChib29sKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50OF90KTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50MTZfdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDMyX3QpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlciYgb3BlcmF0b3I8PChmbG9hdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29k
ZXImIG9wZXJhdG9yPDwoZG91YmxlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IEVuY29kZXImIG9wZXJhdG9yPDwoVSB2YWx1ZSkKKyAgICB7CisgICAgICAgIENoZWNrc3VtOjp1
cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgZW5jb2RlRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9p
ZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7Ci0KICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QpOwogCiAgICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFR5cGU+IHN0cnVjdCBTYWx0OwotCiAgICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVm
ZmVyOwogICAgIFNIQTEgbV9zaGExOwogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6
OlNhbHQ8Ym9vbD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMzsgfTsKLXRl
bXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3Q+IHsgc3RhdGljIGNvbnN0ZXhw
ciAgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNh
bHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDc7IH07Ci10
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MzJfdD4geyBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6
U2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7IH07
Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVy
OjpTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9
OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6
OlNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyOTsgfTsK
LXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rl
cjo6U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDM7
IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVj
a3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUeXBlIHZhbHVlKQotewotICAgIGF1dG8gdHlwZVNh
bHQgPSBTYWx0PFR5cGU+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRk
Qnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7
Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBX
VEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400166</attachid>
            <date>2020-05-24 10:22:15 -0700</date>
            <delta_ts>2020-05-24 12:32:40 -0700</delta_ts>
            <desc>Patch v16</desc>
            <filename>bug-211880-20200524102332.patch</filename>
            <type>text/plain</type>
            <size>19495</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLmRlZDJhNWM5NDQ1OWU0NGM2YzEzMGUyNGVjYTdkYjExYjQ1MzFj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjAtMDUtMjQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
PD4gcGFyYW1ldGVyIHR5cGVzLgorICAgICAgICAtIEV4dHJhY3QgY2hjZWNrc3VtIG1ldGhvZHMg
YW5kIHN0cnVjdCBTYWx0IHRvIGl0cyBvd24gQ2hlY2tzdW0KKyAgICAgICAgICBjbGFzcy4gIFRo
aXMgaXMgc2xpZ2h0bHkgY2xlYW5lciBkZXNpZ24gc2luY2UgYm90aCBEZWNvZGVyIGFuZAorICAg
ICAgICAgIEVuY29kZXIgdXNlIGl0LCBhbmQgaXQgYXZvaWRzIGEgY29tcGlsZXIgZXJyb3Igb24g
TVNWQysrLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBl
cy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMu
CisgICAgICAgIC0gVXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0
aWM8PiB0eXBlcy4KKyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxp
bmUgYXMgYGJvb2xgIHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6
OmRlY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAg
ICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRl
LgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0
ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAg
ICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25z
dCk6CisgICAgICAgIE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAg
ICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAg
ICAgICAgTW92ZSBmcm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNr
c3VtIGNsYXNzLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0
YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAg
ICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IE1vdmUgZnJvbQor
ICAgICAgICBFbmNvZGVyIGNsYXNzLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q2hlY2tz
dW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKTogRGl0dG8uCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKTogTW92ZSB0bworICAgICAgICBDaGVj
a3N1bSBjbGFzcy4KKwogMjAyMC0wNS0yMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVudW0oKSBoYXMgYSB0eXBvIGluIHN0YXRpY19h
c3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2FsIGNvbXBhcmlzb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCA4NTk1ZmNhZjIz
YTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2Li4yYWFjYTcxOTJlNzVlOGNjM2UwOWQ1OWU2
ZjU5MzUzY2FkMjU2MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4K
IAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1l
c3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBA
QCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUp
IGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVu
ZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2Rl
RGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1l
bWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9u
ICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBk
YXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17
Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVvZihUKSkpCi0gICAg
ICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9i
dWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVv
ZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFs
dWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
LX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVz
dWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYg
RGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICBy
ZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJh
dG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVy
OjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0YShk
YXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2Rl
TnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3No
YTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZl
cmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hl
Y2tzdW0oKQogICAgIHJldHVybiBjb21wdXRlZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19
Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3
ZTAxMDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi4zMzZjNjFlNGZkNjAwNmE3ODVhZGQy
MzNhNTk4NjdiNzU0MGExYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQz
LDMwICs0NCwzMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCos
IHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90
PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0
PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFs
PGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oT3B0aW9uYWw8VT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7Cisg
ICAgICAgIGlmIChkZWNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSks
IHNpemVvZihVKSkpIHsKKyAgICAgICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51
bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVs
bHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAg
ewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBu
dWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAg
ICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBt
dXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxh
cmdlciB0aGFuIDY0IGJpdHMhIik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsK
ICAgICAgICAgKnRoaXMgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiAr
NzgsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZh
bHVlPiogPSBudWxscHRyPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11
c3QgaGF2ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihU
KSkKKyAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAvIHNpemVvZihVKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVv
ZihUKSk7CisgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVs
ZW1lbnRzICogc2l6ZW9mKFUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJUENEZWNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6
ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVO
dW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAg
Y29uc3QgdWludDhfdCogbV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3Np
dGlvbjsKQEAgLTEwMSw2ICsxMDAsNSBAQCBwcml2YXRlOgogICAgIFNIQTEgbV9zaGExOwogfTsK
IAotfSAKLX0KLQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3Bw
CmluZGV4IDE0ZGQzZjY4Mzg3ZmUzZjgzYzA0OWY0MTgyODJjNTc5MWFmMGUyYWEuLjFlNzJmYzZi
MDEzMjhlOTRjMjNjZTAyZWVjMWU2MmRiMzlhODY1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMTMgQEAK
IG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAordm9pZCBDaGVja3N1
bTo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQoreworICAgIGF1dG8gdHlwZVNhbHQgPSBDaGVja3N1bTo6U2FsdDx1aW50
OF90Kj46OnZhbHVlOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5hZGRCeXRlcyhkYXRh
LCBzaXplKTsKK30KKwogRW5jb2Rlcjo6RW5jb2RlcigpCiB7CiB9CkBAIC00Niw3OSArNTMsMTYg
QEAgdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gbV9idWZm
ZXIuZGF0YSgpICsgbmV3UG9zaXRpb247CiB9CiAKLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tz
dW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQot
ewotICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PHVpbnQ4X3QqPjo6dmFsdWU7Ci0gICAgc2hhMS5h
ZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlw
ZVNhbHQpKTsKLSAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwotfQotCi12b2lkIEVuY29k
ZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKLSAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsK
LQogICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwg
ZGF0YSwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNv
ZGVyOjplbmNvZGVOdW1iZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVj
a3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdy
b3coc2l6ZW9mKFR5cGUpKTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBl
KSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGJvb2wgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1
aW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQot
RW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KHVpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJl
dHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRv
cjw8KGludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChmbG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0K
LQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29k
ZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICBDaGVja3N1bTo6dXBk
YXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShk
YXRhLCBzaXplKTsKIH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCkBAIC0xMjgs
NSArNzIsNSBAQCB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKICAgICBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpKTsKIH0KIAotfQotfQorfSAvLyBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBm
YjQyYjhlYmExYWRjOWNiZWY5YWIxN2Q2OS4uYTczMDgzNGQyZDRiYTlmMjE3Y2YwZGI5ZTdhY2Qw
NDM5ZjI5YjlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDkgKzMzLDM5IEBACiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKLWNsYXNzIEVuY29kZXI7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCitjbGFz
cyBDaGVja3N1bSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHVw
ZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUIHZhbHVlKTsKKworcHJpdmF0ZToKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFNhbHQ7Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgQ2hlY2tzdW06OlNhbHQ8Ym9vbD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVl
ID0gMzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBDaGVja3N1bTo6U2FsdDx1aW50OF90PiB7IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwordGVtcGxhdGUgPD4gc3RydWN0
IENoZWNrc3VtOjpTYWx0PHVpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFs
dWUgPSA3OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PHVpbnQzMl90PiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMTsgfTsKK3RlbXBsYXRlIDw+IHN0
cnVjdCBDaGVja3N1bTo6U2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8aW50MzJf
dD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTc7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTk7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8Zmxv
YXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwordGVtcGxhdGUg
PD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMjk7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8dWlu
dDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBDaGVja3N1bTo6U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAxMDM7IH07CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBD
aGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2YWx1ZSkKK3sK
KyAgICBhdXRvIHR5cGVTYWx0ID0gQ2hlY2tzdW06OlNhbHQ8VD46OnZhbHVlOworICAgIHNoYTEu
YWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5
cGVTYWx0KSk7CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigm
dmFsdWUpLCBzaXplb2YodmFsdWUpKTsKK30KKwogY2xhc3MgRW5jb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00Myw3MiArNzMsNDQgQEAgcHVibGljOgog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2RlcigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
bmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0
b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3Bl
cmF0b3I8PChjb25zdCBFJiBlbnVtVmFsdWUpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihUKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxh
cmdlciB0aGFuIDY0IGJpdHMuIik7Ci0gICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4odCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVv
Zih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEi
KTsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGVudW1WYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihlbnVtVmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGht
ZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlPiogPSBudWxscHRyPgor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08
VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgog
ICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIENvZGVy
PFQ+OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9vbCk7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IEVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVu
Y29kZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVy
JiBvcGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBF
bmNvZGVyJiBvcGVyYXRvcjw8KFUgdmFsdWUpCisgICAgeworICAgICAgICBDaGVja3N1bTo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAgICAgIGVuY29kZURhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKTsKKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBidWZmZXJTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RhdGljIHZvaWQg
dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwotCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVyKFR5cGUpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
KTsKIAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUeXBlPiBzdHJ1Y3QgU2FsdDsKLQogICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZl
cjsKICAgICBTSEExIG1fc2hhMTsKIH07CiAKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpT
YWx0PGJvb2w+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Ci10ZW1w
bGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIg
IHVuc2lnbmVkIHZhbHVlID0gNTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0
PHVpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA3OyB9OwotdGVt
cGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCB2YWx1ZSA9IDExOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNh
bHQ8dWludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEzOyB9Owot
dGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MzJfdD4geyBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHZhbHVlID0gMTc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6
U2FsdDxpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxOTsgfTsK
LXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpT
YWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7IH07Ci10
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIHZhbHVlID0gMTAxOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6
OlNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tz
dW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKLXsKLSAgICBhdXRvIHR5cGVTYWx0
ID0gU2FsdDxUeXBlPjo6dmFsdWU7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKLSAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOwot
fQotCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RG
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400167</attachid>
            <date>2020-05-24 11:01:57 -0700</date>
            <delta_ts>2020-05-24 12:15:35 -0700</delta_ts>
            <desc>Patch v17</desc>
            <filename>bug-211880-v17.diff</filename>
            <type>text/plain</type>
            <size>19208</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLmRlZDJhNWM5NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byBpdHMgb3duIENo
ZWNrc3VtCisgICAgICAgICAgY2xhc3MuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIgZGVzaWdu
IHNpbmNlIGJvdGggRGVjb2RlciBhbmQKKyAgICAgICAgICBFbmNvZGVyIHVzZSBpdCwgYW5kIGl0
IGF2b2lkcyBhIGNvbXBpbGVyIGVycm9yIG9uIE1TVkMrKy4KKyAgICAgICAgLSBVc2UgYHR5cGVu
YW1lIEVgIGZvciBFbmNvZGVyIGVudW0gdHlwZXMuCisgICAgICAgIC0gVXNlIGB0eXBlbmFtZSBU
YCBmb3IgRW5jb2RlciBub24tUE9EIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVWAg
Zm9yIEVuY29kZXIgc3RkOjppc19hcml0aG1ldGljPD4gdHlwZXMuCisgICAgICAgIC0gTW92ZSBX
QVJOX1VOVVNFRF9SRVRVUk4gdG8gc2FtZSBsaW5lIGFzIGBib29sYCByZXR1cm4gdHlwZS4KKwor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHA6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVEYXRhKTogQWRkLiAgRXh0cmFjdCBj
b2RlIHRvCisgICAgICAgIHNoYXJlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXI6OmRlY29kZU51bWJlcik6IERlbGV0ZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXI6Om9wZXJhdG9yPj4pOiBEZWxldGUuCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
OjpvcGVyYXRvcj4+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICBNb3ZlIHN0YXRpY19hc3Nl
cnQoKSB0byBTRklOQUUgY2hlY2suCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRh
dGVDaGVja3N1bUZvckRhdGEpOiBBZGQuCisgICAgICAgIE1vdmUgZnJvbSBFbmNvZGVyIGNsYXNz
LgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKTogTW92ZSB0bworICAgICAgICBDaGVja3N1bSBjbGFzcy4KKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAg
ICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5j
b2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVD
aGVja3N1bUZvckRhdGEpOiBNb3ZlIGZyb20KKyAgICAgICAgRW5jb2RlciBjbGFzcy4KKyAgICAg
ICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcik6
IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6
CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51
bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFsaWRF
bnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9naWNh
bCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYyM2EuLmQxYzU4M2QxYTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0
ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1i
b29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBz
aXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRh
dGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJl
cihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFs
dWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1i
ZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1
aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0
dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRv
cj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJl
cihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tzdW08
dWludDhfdCo+Ojp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCkBAIC0x
MzYsNSArNzYsNSBAQCBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKICAgICByZXR1cm4g
Y29tcHV0ZWRIYXNoID09IHNhdmVkSGFzaDsKIH0KIAotfQotfQorfSAvLyBuYW1lc3BhY2UgUGVy
c2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3Rl
bmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggYzZkYjUwN2UwMTAuLjRlMjAwMDQ0Y2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NI
QTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmg+CisjaW5j
bHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDMwICs0NCwzMCBAQCBwdWJsaWM6
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgdmVyaWZ5
Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0
YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQzMl90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJh
dG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2Rl
ciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46
OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VT4m
IHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7CisgICAgICAgIGlmIChkZWNvZGVEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihVKSkpIHsKKyAgICAg
ICAgICAgIENoZWNrc3VtPFU+Ojp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVl
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9p
Zl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2
YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAm
JiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAgICAgICByZXN1bHQg
PSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVt
PEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBiZSBsYXJnZXIg
dGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXpl
b2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMh
Iik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMgPj4g
dmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiArNzgsMjAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
V0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgor
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4o
c2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBhIGZpeGVkLCBr
bm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICAgICAgaWYgKG51
bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihV
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFUp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENEZWNvZGVyID0gZmFs
c2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlw
ZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKQEAgLTEwMSw2ICsx
MDAsNSBAQCBwcml2YXRlOgogICAgIFNIQTEgbV9zaGExOwogfTsKIAotfSAKLX0KLQorfSAvLyBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwIGIvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCmluZGV4IDE0ZGQzZjY4Mzg3
Li5hNTY4ZTA0NjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSwxNCBAQAogbmFtZXNwYWNlIFdURiB7CiBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCit0ZW1wbGF0ZSA8Pgordm9pZCBDaGVja3N1bTx1aW50
OF90Kj46OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0ID0gQ2hlY2tzdW08dWludDhf
dCo+OjpTYWx0Ojp2YWx1ZTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOworICAgIHNoYTEuYWRkQnl0ZXMo
ZGF0YSwgc2l6ZSk7Cit9CisKIEVuY29kZXI6OkVuY29kZXIoKQogewogfQpAQCAtNDYsNzkgKzU0
LDE2IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIG1f
YnVmZmVyLmRhdGEoKSArIG5ld1Bvc2l0aW9uOwogfQogCi12b2lkIEVuY29kZXI6OnVwZGF0ZUNo
ZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLXsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOwotICAgIHNo
YTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9m
KHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKLX0KLQotdm9pZCBF
bmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6
ZSk7Ci0KICAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemUpOwogICAgIG1lbWNweShidWZm
ZXIsIGRhdGEsIHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotRW5jb2RlciYg
RW5jb2Rlcjo6ZW5jb2RlTnVtYmVyKFR5cGUgdmFsdWUpCi17Ci0gICAgRW5jb2Rlcjo6dXBkYXRl
Q2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0KLSAgICB1aW50OF90KiBidWZmZXIg
PSBncm93KHNpemVvZihUeXBlKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgJnZhbHVlLCBzaXplb2Yo
VHlwZSkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChib29sIHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ4X3QgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9y
PDwodWludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MTZfdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PCh1aW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsK
LX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50NjRfdCB2YWx1ZSkKLXsKLSAg
ICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3Bl
cmF0b3I8PChpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUp
OwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDY0X3QgdmFsdWUpCi17Ci0g
ICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9w
ZXJhdG9yPDwoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7
Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZG91YmxlIHZhbHVlKQordm9pZCBF
bmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiB7Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7CisgICAgQ2hlY2tzdW08
dWludDhfdCo+Ojp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAg
ICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNr
c3VtKCkKQEAgLTEyOCw1ICs3Myw1IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlQ2hlY2tzdW0oKQog
ICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkpOwogfQog
Ci19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5o
IGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAppbmRleCAy
N2FkMGQwN2Y2NS4uYWIxNjU1Mjc4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw5ICszMyw0MCBAQAogbmFtZXNwYWNlIFdURiB7CiBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCi1jbGFzcyBFbmNvZGVyOwogY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBDaGVja3N1bSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hl
Y2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOworCisgICAg
c3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFQgdmFsdWUpOworCitw
cml2YXRlOgorICAgIHN0cnVjdCBTYWx0OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNr
c3VtPGJvb2w+OjpTYWx0IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW08dWludDhfdD46OlNhbHQgeyBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHZhbHVlID0gNTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBDaGVja3N1
bTx1aW50MTZfdD46OlNhbHQgeyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gNzsg
fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBDaGVja3N1bTx1aW50MzJfdD46OlNhbHQgeyBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hl
Y2tzdW08dWludDY0X3Q+OjpTYWx0IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDEzOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtPGludDMyX3Q+OjpTYWx0IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE3OyB9OwordGVtcGxhdGUgPD4gc3RydWN0
IENoZWNrc3VtPGludDY0X3Q+OjpTYWx0IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1
ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtPGZsb2F0Pjo6U2FsdCB7IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyMzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVj
dCBDaGVja3N1bTxkb3VibGU+OjpTYWx0IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1
ZSA9IDI5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtPHVpbnQ4X3QqPjo6U2FsdCB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgQ2hlY2tzdW08aW50MTZfdD46OlNhbHQgeyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTAzOyB9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQ2hlY2tzdW08
VD46OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFQgdmFsdWUpCit7CisgICAg
YXV0byB0eXBlU2FsdCA9IENoZWNrc3VtPFQ+OjpTYWx0Ojp2YWx1ZTsKKyAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2Fs
dCkpOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKIGNsYXNzIEVuY29kZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDMsNzIgKzc0LDQ0IEBAIHB1YmxpYzoKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgfkVuY29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGVuY29kZUNoZWNrc3VtKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9yPDwo
Y29uc3QgVCYgdCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9y
PDwoY29uc3QgRSYgZW51bVZhbHVlKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIg
dGhhbiA2NCBiaXRzLiIpOwotICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHQpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWlu
dDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7Cisg
ICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pihl
bnVtVmFsdWUpKSk7CisgICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oZW51bVZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVu
YWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBF
bmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6
ZW5jb2RlKCp0aGlzLCB0KTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBF
bmNvZGVyJiBvcGVyYXRvcjw8KGludDMyX3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNv
ZGVyJiBvcGVyYXRvcjw8KGludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVy
JiBvcGVyYXRvcjw8KGZsb2F0KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3Bl
cmF0b3I8PChkb3VibGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2Rl
ciYgb3BlcmF0b3I8PChVIHZhbHVlKQorICAgIHsKKyAgICAgICAgQ2hlY2tzdW08VT46OnVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOworICAgICAgICBlbmNvZGVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihVKSk7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgYnVmZmVyU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhf
dCosIHNpemVfdCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0YXRpYyB2b2lkIHVw
ZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUeXBlKTsKLQogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihUeXBlKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7
CiAKICAgICB1aW50OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZT4gc3RydWN0IFNhbHQ7Ci0KICAgICBWZWN0b3I8dWludDhfdCwgNDA5Nj4gbV9idWZmZXI7
CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2Fs
dDxib29sPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAzOyB9OwotdGVtcGxh
dGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdD4geyBzdGF0aWMgY29uc3RleHByICB1
bnNpZ25lZCB2YWx1ZSA9IDU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1
aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gNzsgfTsKLXRlbXBs
YXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAxMTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0
PHVpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMzsgfTsKLXRl
bXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCB2YWx1ZSA9IDE3OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNh
bHQ8aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTk7IH07Ci10
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxmbG9hdD4geyBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHZhbHVlID0gMjM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2Fs
dDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OyB9OwotdGVt
cGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpT
YWx0PGludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3Vt
Rm9yTnVtYmVyKFNIQTEmIHNoYTEsIFR5cGUgdmFsdWUpCi17Ci0gICAgYXV0byB0eXBlU2FsdCA9
IFNhbHQ8VHlwZT46OnZhbHVlOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKLX0K
LQotfQotfQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400173</attachid>
            <date>2020-05-24 12:15:35 -0700</date>
            <delta_ts>2020-05-24 12:22:00 -0700</delta_ts>
            <desc>Patch v18</desc>
            <filename>bug-211880-v18.diff</filename>
            <type>text/plain</type>
            <size>19191</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLmRlZDJhNWM5NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byBpdHMgb3duIENo
ZWNrc3VtCisgICAgICAgICAgY2xhc3MuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIgZGVzaWdu
IHNpbmNlIGJvdGggRGVjb2RlciBhbmQKKyAgICAgICAgICBFbmNvZGVyIHVzZSBpdCwgYW5kIGl0
IGF2b2lkcyBhIGNvbXBpbGVyIGVycm9yIG9uIE1TVkMrKy4KKyAgICAgICAgLSBVc2UgYHR5cGVu
YW1lIEVgIGZvciBFbmNvZGVyIGVudW0gdHlwZXMuCisgICAgICAgIC0gVXNlIGB0eXBlbmFtZSBU
YCBmb3IgRW5jb2RlciBub24tUE9EIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVWAg
Zm9yIEVuY29kZXIgc3RkOjppc19hcml0aG1ldGljPD4gdHlwZXMuCisgICAgICAgIC0gTW92ZSBX
QVJOX1VOVVNFRF9SRVRVUk4gdG8gc2FtZSBsaW5lIGFzIGBib29sYCByZXR1cm4gdHlwZS4KKwor
ICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHA6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVEYXRhKTogQWRkLiAgRXh0cmFjdCBj
b2RlIHRvCisgICAgICAgIHNoYXJlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXI6OmRlY29kZU51bWJlcik6IERlbGV0ZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXI6Om9wZXJhdG9yPj4pOiBEZWxldGUuCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
OjpvcGVyYXRvcj4+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICBNb3ZlIHN0YXRpY19hc3Nl
cnQoKSB0byBTRklOQUUgY2hlY2suCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRh
dGVDaGVja3N1bUZvckRhdGEpOiBBZGQuCisgICAgICAgIE1vdmUgZnJvbSBFbmNvZGVyIGNsYXNz
LgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKTogTW92ZSB0bworICAgICAgICBDaGVja3N1bSBjbGFzcy4KKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZURhdGEpOiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAg
ICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5j
b2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6
b3BlcmF0b3I8PCk6IERlbGV0ZS4KKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVD
aGVja3N1bUZvckRhdGEpOiBNb3ZlIGZyb20KKyAgICAgICAgRW5jb2RlciBjbGFzcy4KKyAgICAg
ICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcik6
IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8PCk6
CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51
bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFsaWRF
bnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9naWNh
bCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYyM2EuLjJhYWNhNzE5MmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0
ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1i
b29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBz
aXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRh
dGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJl
cihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFs
dWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAg
ICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0g
ICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1i
ZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1
aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0
dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRv
cj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJl
cihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tzdW06
OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0
cnVlOwogfQogCiBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3Niw1
IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRlZEhh
c2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQor
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAxMC4uMzM2YzYxZTRmZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2lu
Y2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBuYW1l
c3BhY2UgUGVyc2lzdGVuY2UgewpAQCAtNDMsMzAgKzQ0LDMwIEBAIHB1YmxpYzoKIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgp
OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERl
Y29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+Jik7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50
MTZfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRp
b25hbDxpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIm
IG9wZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERl
Y29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9
IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxVPiYgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgVSB2YWx1ZTsKKyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKSkgeworICAgICAgICAgICAgQ2hl
Y2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOworICAgICAgICAg
ICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNf
YXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlICYmICFzdGQ6
OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2Fy
aXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4o
T3B0aW9uYWw8VD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9IENvZGVyPFQ+Ojpk
ZWNvZGUoKnRoaXMpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiog
PSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDxFPiYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoRSkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMh
Iik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCks
ICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAg
ICAgaWYgKCF2YWx1ZSkKQEAgLTc3LDIyICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9S
RVRVUk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVs
ZW1lbnRzKSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxl
bWVudHMpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQg
c2l6ZSEiKTsKLQotICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4obnVtRWxlbWVudHMgKiBzaXplb2YoVSkpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0RlY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0
ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAgICBj
b25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpAQCAtMTAxLDYgKzEwMCw1IEBAIHByaXZh
dGU6CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi19IAotfQotCit9IC8vIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODcuLjFlNzJmYzZiMDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDYgKzMxLDEzIEBACiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKK3ZvaWQgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBz
aGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIHR5cGVT
YWx0ID0gQ2hlY2tzdW06OlNhbHQ8dWludDhfdCo+Ojp2YWx1ZTsKKyAgICBzaGExLmFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkp
OworICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6ZSk7Cit9CisKIEVuY29kZXI6OkVuY29kZXIo
KQogewogfQpAQCAtNDYsNzkgKzUzLDE2IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90
IHNpemUpCiAgICAgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKSArIG5ld1Bvc2l0aW9uOwogfQogCi12
b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLXsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50
OF90Kj46OnZhbHVlOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhkYXRh
LCBzaXplKTsKLX0KLQotdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29u
c3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0KICAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNp
emUpOwogICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUeXBlPgotRW5jb2RlciYgRW5jb2Rlcjo6ZW5jb2RlTnVtYmVyKFR5cGUgdmFsdWUpCi17
Ci0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0K
LSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihUeXBlKSk7Ci0gICAgbWVtY3B5KGJ1
ZmZlciwgJnZhbHVlLCBzaXplb2YoVHlwZSkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRW5j
b2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChib29sIHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ4
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVu
Y29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50
MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5j
b2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1
aW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQot
RW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
ZG91YmxlIHZhbHVlKQordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2
YWx1ZSk7CisgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEs
IHNpemUpOworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6
ZW5jb2RlQ2hlY2tzdW0oKQpAQCAtMTI4LDUgKzcyLDUgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVD
aGVja3N1bSgpCiAgICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhhc2guZGF0YSgpLCBoYXNoLnNp
emUoKSk7CiB9CiAKLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRFbmNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5oCmluZGV4IDI3YWQwZDA3ZjY1Li4wZDNlOTU2YjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDkgKzMzLDM5IEBACiBuYW1lc3Bh
Y2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKLWNsYXNzIEVuY29kZXI7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogCitjbGFzcyBDaGVja3N1bSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRh
KFNIQTEmLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOworCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEEx
JiwgVCB2YWx1ZSk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBTYWx0OworfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGJvb2w+IHsg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgQ2hlY2tzdW06OlNhbHQ8dWludDhfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gNTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBDaGVja3N1bTo6U2FsdDx1aW50MTZfdD4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gNzsgfTsKK3RlbXBsYXRlIDw+IHN0
cnVjdCBDaGVja3N1bTo6U2FsdDx1aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNhbHQ8dWludDY0
X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEzOyB9OwordGVtcGxhdGUg
PD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDE3OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGlu
dDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9OwordGVtcGxh
dGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAyMzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBDaGVja3N1bTo6U2FsdDxk
b3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OyB9OwordGVtcGxh
dGUgPD4gc3RydWN0IENoZWNrc3VtOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ2hlY2tzdW06OlNh
bHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIENoZWNrc3VtOjp1cGRhdGVDaGVj
a3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUIHZhbHVlKQoreworICAgIGF1dG8gdHlwZVNhbHQg
PSBDaGVja3N1bTo6U2FsdDxUPjo6dmFsdWU7CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKKyAgICBzaGEx
LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1
ZSkpOworfQorCiBjbGFzcyBFbmNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTQzLDcyICs3Myw0NCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVj
a3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0
YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
bmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVu
dW1WYWx1ZSkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVv
Zih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4i
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0g
dHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQo
V1RGOjppc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOwor
ICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3Rk
Ojppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRW5jb2RlciYgb3BlcmF0
b3I8PChjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgQ29kZXI8VD46OmVuY29kZSgqdGhpcywg
dCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRW5jb2RlciYgb3BlcmF0b3I8PChib29sKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5j
b2RlciYgb3BlcmF0b3I8PCh1aW50OF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2Rl
ciYgb3BlcmF0b3I8PCh1aW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXIm
IG9wZXJhdG9yPDwodWludDMyX3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBv
cGVyYXRvcjw8KHVpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3Bl
cmF0b3I8PChpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PChpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8
PChpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChm
bG9hdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZG91Ymxl
KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Fy
aXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwo
VSB2YWx1ZSkKKyAgICB7CisgICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgZW5jb2RlRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1
cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51
bWJlcihTSEExJiwgVHlwZSk7Ci0KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNv
ZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBF
bmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgdWludDhfdCog
Z3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBTYWx0
OwotCiAgICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGEx
OwogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8Ym9vbD4geyBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNv
ZGVyOjpTYWx0PHVpbnQ4X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciAgdW5zaWduZWQgdmFsdWUgPSA1
OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDE2X3Q+IHsgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5j
b2Rlcjo6U2FsdDx1aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0g
MTE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50NjRfdD4geyBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW5jb2Rlcjo6U2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUg
PSAxNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDY0X3Q+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0
IEVuY29kZXI6OlNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDIzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZG91YmxlPiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyOTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBF
bmNvZGVyOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUg
PSAxMDE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQxNl90PiB7IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDM7IH07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUeXBlPgotdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiBz
aGExLCBUeXBlIHZhbHVlKQotewotICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFR5cGU+Ojp2YWx1
ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2Fs
dCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7Ci19Ci0KLX0KLX0KK30gLy8gbmFt
ZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400174</attachid>
            <date>2020-05-24 12:32:42 -0700</date>
            <delta_ts>2020-05-24 12:32:42 -0700</delta_ts>
            <desc>Patch v19</desc>
            <filename>bug-211880-20200524123402.patch</filename>
            <type>text/plain</type>
            <size>19133</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwNGE0NTMzODc5YTU0MjQxZGJlODhk
NTIyODE4MDM2ZWEzYWQ1MjMuLjI0MjRhNzM3MDdkNTg2YWUzZjY1NzcyNDlhZjYxYTc1MTllZmJm
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjAtMDUtMjQgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNh
dGUgY29kZSBpbiBQZXJzaXN0ZW5jZTo6RGVjb2RlciBhbmQgUGVyc2lzdGVuY2U6OkVuY29kZXIg
Y2xhc3NlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjExODgwPgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjMyMTM0NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlcywgdGhpcyBjaGFuZ2UgZml4ZXMgdGhl
IGZvbGxvd2luZyBpc3N1ZXM6CisgICAgICAgIC0gVGVtcGxhdGl6ZSBFbmNvZGVyOjpvcGVyYXRv
cjw8KCkgYW5kIERlY29kZXI6Om9wZXJhdG9yPj4oKQorICAgICAgICAgIG1ldGhvZHMgdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlLiAgVGhpcyBkZWxldGVkIGNvZGUgaW4gc291cmNlCisgICAgICAg
ICAgZmlsZXMsIGFkZGVkIHRlbXBsYXRlIG1ldGhvZHMgdG8gaGVhZGVyIGZpbGVzLCBhbmQgcmVx
dWlyZWQgYQorICAgICAgICAgIGZldyBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlbXBsYXRlcyBpbiBo
ZWFkZXIgZmlsZXMgdG8KKyAgICAgICAgICBkaXNhbWJpZ3VhdGUgc3RkOjppc19hcml0aG1ldGlj
PD4gcGFyYW1ldGVyIHR5cGVzLgorICAgICAgICAtIEV4dHJhY3QgY2hjZWNrc3VtIG1ldGhvZHMg
YW5kIHN0cnVjdCBTYWx0IHRvIHRoZWlyIG93bgorICAgICAgICAgIENoZWNrc3VtIG5hbWVzcGFj
ZS4gIFRoaXMgaXMgc2xpZ2h0bHkgY2xlYW5lciBkZXNpZ24gc2luY2UKKyAgICAgICAgICBib3Ro
IERlY29kZXIgYW5kIEVuY29kZXIgdXNlIGl0LCBhbmQgaXQgYXZvaWRzIGEgY29tcGlsZXIKKyAg
ICAgICAgICBlcnJvciBvbiBNU1ZDKysuCisgICAgICAgIC0gVXNlIGB0eXBlbmFtZSBFYCBmb3Ig
RW5jb2RlciBlbnVtIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVGAgZm9yIEVuY29k
ZXIgbm9uLVBPRCB0eXBlcy4KKyAgICAgICAgLSBVc2UgYHR5cGVuYW1lIFVgIGZvciBFbmNvZGVy
IHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHR5cGVzLgorICAgICAgICAtIE1vdmUgV0FSTl9VTlVTRURf
UkVUVVJOIHRvIHNhbWUgbGluZSBhcyBgYm9vbGAgcmV0dXJuIHR5cGUuCisKKyAgICAgICAgKiB3
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlRGF0YSk6IEFkZC4gIEV4dHJhY3QgY29kZSB0bworICAg
ICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZUZp
eGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNv
ZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpv
cGVyYXRvcj4+KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+
Pik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluIGNvbnN0KToKKyAgICAgICAgTW92ZSBzdGF0aWNfYXNzZXJ0KCkgdG8gU0ZJ
TkFFIGNoZWNrLgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5j
cHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpDaGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1G
b3JEYXRhKTogQWRkLgorICAgICAgICBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAg
KFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IE1vdmUg
dG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpF
bmNvZGVyOjplbmNvZGVEYXRhKTogQWRkLiAgRXh0cmFjdCBjb2RlIHRvCisgICAgICAgIHNoYXJl
LgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZU51bWJlcik6
IERlbGV0ZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJhdG9yPDwp
OiBEZWxldGUuCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg6
CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpDaGVja3N1bTo6U2FsdCk6IE1vdmUgZnJvbSBF
bmNvZGVyIGNsYXNzLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q2hlY2tzdW06OnVwZGF0
ZUNoZWNrc3VtRm9yRGF0YSk6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q2hl
Y2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKTogRGl0dG8uCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKTogTW92ZSB0bworICAgICAgICBD
aGVja3N1bSBjbGFzcy4KKwogMjAyMC0wNS0yMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFdURjo6aXNWYWxpZEVudW0oKSBoYXMgYSB0eXBvIGluIHN0YXRp
Y19hc3NlcnQgbWFraW5nIGl0IGEgdGF1dG9sb2dpY2FsIGNvbXBhcmlzb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCA4NTk1ZmNh
ZjIzYTJiOWMxMmQ0MGQzNzczMDM4YjEyZmYwOTg2NDg2Li4yYWFjYTcxOTJlNzVlOGNjM2UwOWQ1
OWU2ZjU5MzUzY2FkMjU2MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIu
aD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBu
YW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwy
MyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNp
emUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZl
ckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZUZpeGVk
TGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVj
b2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0
aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGEx
LCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwp
Ci17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVvZihUKSkpCi0g
ICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwg
bV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNp
emVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwg
dmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1E
ZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0g
ICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpv
cGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYg
cmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2Rl
ciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNv
ZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0
YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVy
OjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVj
b2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSht
X3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERlY29kZXI6
OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5
Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRlZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19
Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCBjNmRi
NTA3ZTAxMDg1NjRlYmU1OTFlM2I5NTQwMDJiMDE2ZDg3ZTkwLi4zMzZjNjFlNGZkNjAwNmE3ODVh
ZGQyMzNhNTk4NjdiNzU0MGExYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnREZWNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudENvZGVyLmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAg
LTQzLDMwICs0NCwzMCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhf
dCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50
OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZs
b2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXIm
IG9wZXJhdG9yPj4oT3B0aW9uYWw8VT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7
CisgICAgICAgIGlmIChkZWNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZihVKSkpIHsKKyAgICAgICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3Rk
Ojppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAg
ICAgewogICAgICAgICByZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiog
PSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkK
ICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUg
VCBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJl
IGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1
ZTsKICAgICAgICAgKnRoaXMgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03Nywy
MiArNzgsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJ
c0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46
OnZhbHVlPiogPSBudWxscHRyPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBU
IG11c3QgaGF2ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYg
KG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVv
ZihUKSkKKyAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSAvIHNpemVvZihVKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNp
emVvZihUKSk7CisgICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51
bUVsZW1lbnRzICogc2l6ZW9mKFUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJUENEZWNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4o
c2l6ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNv
ZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAg
ICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQ
b3NpdGlvbjsKQEAgLTEwMSw2ICsxMDAsNSBAQCBwcml2YXRlOgogICAgIFNIQTEgbV9zaGExOwog
fTsKIAotfSAKLX0KLQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVu
Y29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
Y3BwCmluZGV4IDE0ZGQzZjY4Mzg3ZmUzZjgzYzA0OWY0MTgyODJjNTc5MWFmMGUyYWEuLjYxNWYw
ZWNkNDBlNjBlOGQ1NDUyYzdhMDA3MTU3ZWU3OWNhODRhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNzkgKzQ2LDE2
IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIG1fYnVm
ZmVyLmRhdGEoKSArIG5ld1Bvc2l0aW9uOwogfQogCi12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
K3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOwotICAgIHNo
YTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9m
KHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKLX0KLQotdm9pZCBF
bmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCi17Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7
Ci0KICAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemUpOwogICAgIG1lbWNweShidWZmZXIs
IGRhdGEsIHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotRW5jb2RlciYgRW5j
b2Rlcjo6ZW5jb2RlTnVtYmVyKFR5cGUgdmFsdWUpCi17Ci0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hl
Y2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0KLSAgICB1aW50OF90KiBidWZmZXIgPSBn
cm93KHNpemVvZihUeXBlKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgJnZhbHVlLCBzaXplb2YoVHlw
ZSkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8
PChib29sIHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ4X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
dWludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1
cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8
PCh1aW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0K
LQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50NjRfdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwot
fQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDY0X3QgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJh
dG9yPDwoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19
Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZG91YmxlIHZhbHVlKQordm9pZCBFbmNv
ZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7CisgICAgQ2hlY2tzdW06OnVw
ZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIGVuY29kZURhdGEo
ZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlQ2hlY2tzdW0oKQpAQCAtMTI4
LDUgKzY1LDUgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCiAgICAgZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7CiB9CiAKLX0KLX0KK30gLy8g
bmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmluZGV4IDI3YWQwZDA3ZjY1MWEw
ZmI0MmI4ZWJhMWFkYzljYmVmOWFiMTdkNjkuLjhmNDRhMmMxOGJkOTY5NTdhY2IwOTQ3YThlZDJm
NDlkODVmMGJmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMyw4ICszMywzNyBAQAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2UgUGVy
c2lzdGVuY2UgewogCi1jbGFzcyBFbmNvZGVyOwotY2xhc3MgRGF0YVJlZmVyZW5jZTsKK25hbWVz
cGFjZSBDaGVja3N1bSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2FsdDsKK3Rl
bXBsYXRlIDw+IHN0cnVjdCBTYWx0PGJvb2w+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50OF90PiB7IHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8
dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDc7IH07Cit0ZW1w
bGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50NjRfdD4geyBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
U2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsK
K3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8ZmxvYXQ+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwordGVtcGxhdGUgPD4gc3RydWN0
IFNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyOTsgfTsK
K3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxpbnQxNl90PiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDM7IH07CisKK2lubGluZSB2b2lk
IHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVl
OworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0
KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51
bWJlcihTSEExJiBzaGExLCBUIHZhbHVlKQoreworICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFQ+
Ojp2YWx1ZTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0
eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIENoZWNrc3VtCiAKIGNsYXNzIEVuY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNDMsNzIgKzcyLDQ0IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgfkVuY29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNr
c3VtKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZh
bHVlPiogPSBudWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46
OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51
bVZhbHVlKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9m
KHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIp
OwotICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0
eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChX
VEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7Cisg
ICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjpp
c19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRv
cjw8KGNvbnN0IFQmIHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0
KTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBFbmNvZGVyJiBvcGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNv
ZGVyJiBvcGVyYXRvcjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVy
JiBvcGVyYXRvcjw8KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYg
b3BlcmF0b3I8PCh1aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9w
ZXJhdG9yPDwodWludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KGludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRv
cjw8KGludDMyX3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KGludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZs
b2F0KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUp
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJp
dGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChV
IHZhbHVlKQorICAgIHsKKyAgICAgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVy
KG1fc2hhMSwgdmFsdWUpOworICAgICAgICBlbmNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihVKSk7CisgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLnNpemUoKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVw
ZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yTnVt
YmVyKFNIQTEmLCBUeXBlKTsKLQogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29k
ZXIgPSBmYWxzZTsKIAogcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IEVu
Y29kZXImIGVuY29kZU51bWJlcihUeXBlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
bmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICB1aW50OF90KiBn
cm93KHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RydWN0IFNhbHQ7
Ci0KICAgICBWZWN0b3I8dWludDhfdCwgNDA5Nj4gbV9idWZmZXI7CiAgICAgU0hBMSBtX3NoYTE7
CiB9OwogCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxib29sPiB7IHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29k
ZXI6OlNhbHQ8dWludDhfdD4geyBzdGF0aWMgY29uc3RleHByICB1bnNpZ25lZCB2YWx1ZSA9IDU7
IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MTZfdD4geyBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNv
ZGVyOjpTYWx0PHVpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAx
MTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ2NF90PiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBF
bmNvZGVyOjpTYWx0PGludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDE3OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50NjRfdD4geyBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW5jb2Rlcjo6U2FsdDxmbG9hdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0g
MjM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDI5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVu
Y29kZXI6OlNhbHQ8dWludDhfdCo+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDEwMTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsgfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFR5cGU+Ci12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNo
YTEsIFR5cGUgdmFsdWUpCi17Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VHlwZT46OnZhbHVl
OwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0
KSwgc2l6ZW9mKHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKLX0KLQotfQotfQorfSAvLyBuYW1l
c3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400176</attachid>
            <date>2020-05-24 13:31:10 -0700</date>
            <delta_ts>2020-05-25 09:20:59 -0700</delta_ts>
            <desc>Patch v20</desc>
            <filename>bug-211880-v20.diff</filename>
            <type>text/plain</type>
            <size>18831</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLjI0MjRhNzM3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byB0aGVpciBvd24K
KyAgICAgICAgICBDaGVja3N1bSBuYW1lc3BhY2UuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIg
ZGVzaWduIHNpbmNlCisgICAgICAgICAgYm90aCBEZWNvZGVyIGFuZCBFbmNvZGVyIHVzZSBpdCwg
YW5kIGl0IGF2b2lkcyBhIGNvbXBpbGVyCisgICAgICAgICAgZXJyb3Igb24gTVNWQysrLgorICAg
ICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBlcy4KKyAgICAgICAg
LSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
IE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAgICAgICAgTW92ZSBm
cm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNrc3VtIGNsYXNzLgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4
dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q2hlY2tzdW06OlNhbHQpOiBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cik6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFs
aWRFbnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9n
aWNhbCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYyM2EuLjJhYWNhNzE5MmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQog
Ci1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9u
LCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51
bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQg
dmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsK
LSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9w
dGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1
bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tz
dW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3
Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRl
ZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5j
ZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAxMC4uMzM2YzYxZTRmZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgog
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewpAQCAtNDMsMzAgKzQ0LDMwIEBAIHB1YmxpYzoKIAogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1
bSgpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3Bl
cmF0b3I+PihPcHRpb25hbDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+
Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50MTZfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+
KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxVPiYgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgVSB2YWx1ZTsKKyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKSkgeworICAgICAgICAgICAg
Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlICYmICFz
dGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6Omlz
X2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9y
Pj4oT3B0aW9uYWw8VD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9IENvZGVyPFQ+
OjpkZWNvZGUoKnRoaXMpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxFPiYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoRSkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJp
dHMhIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRf
dCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAg
ICAgICAgaWYgKCF2YWx1ZSkKQEAgLTc3LDIyICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNF
RF9SRVRVUk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51
bUVsZW1lbnRzKSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVt
RWxlbWVudHMpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJp
dGhtZXRpYzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29k
ZWQgc2l6ZSEiKTsKLQotICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICBpZiAobnVtRWxlbWVudHMg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4obnVtRWxlbWVudHMgKiBzaXplb2YoVSkpOwogICAgIH0K
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0RlY29kZXIgPSBmYWxzZTsKIAogcHJp
dmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAg
ICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpAQCAtMTAxLDYgKzEwMCw1IEBAIHBy
aXZhdGU6CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi19IAotfQotCit9IC8vIG5hbWVzcGFjZSBQ
ZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODcuLjYxNWYwZWNk
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ2LDc5ICs0NiwxNiBAQCB1aW50OF90KiBFbmNvZGVyOjpncm93KHNpemVf
dCBzaXplKQogICAgIHJldHVybiBtX2J1ZmZlci5kYXRhKCkgKyBuZXdQb3NpdGlvbjsKIH0KIAot
dm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8
dWludDhfdCo+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRkQnl0ZXMo
ZGF0YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotewotICAgIHVwZGF0ZUNoZWNrc3VtRm9y
RGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3Jvdyhz
aXplKTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVlKQot
ewotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwot
Ci0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNweShi
dWZmZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50
OF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGlu
dDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
dWludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1
cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8
PChpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGRvdWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIo
dmFsdWUpOworICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRh
LCBzaXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEVuY29kZXI6
OmVuY29kZUNoZWNrc3VtKCkKQEAgLTEyOCw1ICs2NSw1IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2Rl
Q2hlY2tzdW0oKQogICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShoYXNoLmRhdGEoKSwgaGFzaC5z
aXplKCkpOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RW5jb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuaAppbmRleCAyN2FkMGQwN2Y2NS4uMmM4YmIzNzExNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw4ICszMywzNyBAQAogbmFtZXNw
YWNlIFdURiB7CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCi1jbGFzcyBFbmNvZGVyOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKK25hbWVzcGFjZSBDaGVja3N1bSB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgU2FsdDsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGJvb2w+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
U2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA1OyB9Owor
dGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDc7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50MzJfdD4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgU2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7
IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGludDY0X3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4g
c3RydWN0IFNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIz
OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAyOTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQ4X3Qq
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgU2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUg
PSAxMDM7IH07CisKK2lubGluZSB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGEx
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0
ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5h
ZGRCeXRlcyhkYXRhLCBzaXplKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFUgPSBUPgoraW5saW5lIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwg
VCB2YWx1ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxVPjo6dmFsdWU7CisgICAgc2hh
MS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2Yo
dHlwZVNhbHQpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBDaGVja3N1bQog
CiBjbGFzcyBFbmNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQzLDcy
ICs3Miw0NCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4K
LSAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVt
IHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBs
YXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxF
PihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4gKnRo
aXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6
dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQog
ICAgIHsKICAgICAgICAgQ29kZXI8VD46OmVuY29kZSgqdGhpcywgdCk7CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PChib29sKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1
aW50OF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50
MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDMy
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQ2NF90
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQxNl90KTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQzMl90KTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQ2NF90KTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChmbG9hdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZG91YmxlKTsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoVSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsK
KyAgICAgICAgZW5jb2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFs
dWUpLCBzaXplb2YoVSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29u
c3QgdWludDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0K
IAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRh
dGEoU0hBMSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7
Ci0KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHBy
aXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1i
ZXIoVHlwZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBTYWx0OwotCiAgICAgVmVjdG9yPHVp
bnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGExOwogfTsKIAotdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8Ym9vbD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciAgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MzJf
dD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQz
Ml90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKLXRlbXBsYXRl
IDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDE5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8Zmxv
YXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwotdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdmFsdWUgPSAyOTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4
X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Ci10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAxMDM7IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotdm9pZCBF
bmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUeXBlIHZhbHVlKQot
ewotICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFR5cGU+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2Fs
dCkpOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKHZhbHVlKSk7Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNl
Cit9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400199</attachid>
            <date>2020-05-25 08:06:29 -0700</date>
            <delta_ts>2020-05-25 08:09:20 -0700</delta_ts>
            <desc>Patch v21</desc>
            <filename>bug-211880-v21.diff</filename>
            <type>text/plain</type>
            <size>19275</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLjI0MjRhNzM3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byB0aGVpciBvd24K
KyAgICAgICAgICBDaGVja3N1bSBuYW1lc3BhY2UuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIg
ZGVzaWduIHNpbmNlCisgICAgICAgICAgYm90aCBEZWNvZGVyIGFuZCBFbmNvZGVyIHVzZSBpdCwg
YW5kIGl0IGF2b2lkcyBhIGNvbXBpbGVyCisgICAgICAgICAgZXJyb3Igb24gTVNWQysrLgorICAg
ICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBlcy4KKyAgICAgICAg
LSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
IE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAgICAgICAgTW92ZSBm
cm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNrc3VtIGNsYXNzLgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4
dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q2hlY2tzdW06OlNhbHQpOiBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cik6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFs
aWRFbnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9n
aWNhbCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYyM2EuLjJhYWNhNzE5MmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQog
Ci1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9u
LCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51
bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQg
dmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsK
LSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9w
dGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1
bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tz
dW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3
Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRl
ZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5j
ZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAxMC4uNjU0YWVlNjM1MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgog
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewpAQCAtNDMsMzAgKzQ0LDMzIEBAIHB1YmxpYzoKIAogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1
bSgpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3Bl
cmF0b3I+PihPcHRpb25hbDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+
Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50MTZfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+
KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxVPiYgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgVSB2YWx1ZTsKKyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKSkgeworICAgICAgICAgICAg
Ly9DaGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAg
ICAgICAgICBhdXRvIHR5cGVTYWx0ID0gQ2hlY2tzdW06OlNhbHQ8VT46OnZhbHVlOworICAgICAg
ICAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQp
LCBzaXplb2YodHlwZVNhbHQpKTsKKyAgICAgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19hcml0
aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNf
ZW51bTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRp
b25hbDxUPiYgcmVzdWx0KQogICAgIHsKICAgICAgICAgcmVzdWx0ID0gQ29kZXI8VD46OmRlY29k
ZSgqdGhpcyk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51
bGxwdHI+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPEU+JiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihF
KSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVu
dW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIpOwogICAgICAgICBPcHRp
b25hbDx1aW50NjRfdD4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAgICBp
ZiAoIXZhbHVlKQpAQCAtNzcsMjIgKzgxLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFdBUk5fVU5VU0VEX1JFVFVS
TgotICAgIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxlbWVu
dHMpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19hcml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50
cykgY29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGlj
PFQ+Ojp2YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBzaXpl
ISIpOwotCi0gICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkgLyBzaXplb2YoVCkpCisgICAgICAgIGlmIChudW1FbGVtZW50cyA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YoVSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW4obnVtRWxlbWVudHMgKiBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihVKSk7CiAgICAgfQogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRGVjb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluKHNpemVfdCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZT4gRGVjb2RlciYgZGVjb2RlTnVtYmVyKE9wdGlvbmFsPFR5cGU+Jik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZURhdGEodWludDhfdCog
ZGF0YSwgc2l6ZV90KTsKIAogICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyOwogICAgIGNvbnN0
IHVpbnQ4X3QqIG1fYnVmZmVyUG9zaXRpb247CkBAIC0xMDEsNiArMTAzLDUgQEAgcHJpdmF0ZToK
ICAgICBTSEExIG1fc2hhMTsKIH07CiAKLX0gCi19Ci0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3Rl
bmNlCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRFbmNvZGVyLmNwcAppbmRleCAxNGRkM2Y2ODM4Ny4uNjE1ZjBlY2Q0MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDYsNzkgKzQ2LDE2IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IHNpemUp
CiAgICAgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKSArIG5ld1Bvc2l0aW9uOwogfQogCi12b2lkIEVu
Y29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25zdCB1aW50OF90
ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90
Kj46OnZhbHVlOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
JnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBz
aXplKTsKLX0KLQotdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi17Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1f
c2hhMSwgZGF0YSwgc2l6ZSk7Ci0KICAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemUpOwog
ICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlPgotRW5jb2RlciYgRW5jb2Rlcjo6ZW5jb2RlTnVtYmVyKFR5cGUgdmFsdWUpCi17Ci0gICAg
RW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7Ci0KLSAgICB1
aW50OF90KiBidWZmZXIgPSBncm93KHNpemVvZihUeXBlKSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwg
JnZhbHVlLCBzaXplb2YoVHlwZSkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PChib29sIHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1i
ZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQ4X3QgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVu
Y29kZXI6Om9wZXJhdG9yPDwodWludDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51
bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MTZfdCB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYg
RW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2Rl
TnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50NjRf
dCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDY0
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoZG91Ymxl
IHZhbHVlKQordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7
CisgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUp
OworICAgIGVuY29kZURhdGEoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6ZW5jb2Rl
Q2hlY2tzdW0oKQpAQCAtMTI4LDUgKzY1LDUgQEAgdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1
bSgpCiAgICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7
CiB9CiAKLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmlu
ZGV4IDI3YWQwZDA3ZjY1Li45YmMyMWRlNDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDggKzMzLDM3IEBACiBuYW1lc3BhY2UgV1RG
IHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKLWNsYXNzIEVuY29kZXI7Ci1jbGFzcyBEYXRh
UmVmZXJlbmNlOworbmFtZXNwYWNlIENoZWNrc3VtIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBTYWx0OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8Ym9vbD4geyBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHZhbHVlID0gMzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVp
bnQ4X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDU7IH07Cit0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gNzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQzMl90PiB7IHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0
PHVpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMzsgfTsKK3Rl
bXBsYXRlIDw+IHN0cnVjdCBTYWx0PGludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDE3OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8aW50NjRfdD4geyBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTk7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
U2FsdDxmbG9hdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjM7IH07Cit0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDI5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDhfdCo+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVj
dCBTYWx0PGludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMzsg
fTsKKworaW5saW5lIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0
PHVpbnQ4X3QqPjo6dmFsdWU7CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKKyAgICBzaGExLmFkZEJ5dGVz
KGRhdGEsIHNpemUpOworfQorCisvL3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0g
VD4KKy8vaW5saW5lIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVCB2
YWx1ZSkKKy8veworLy8gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VT46OnZhbHVlOworLy8gICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXpl
b2YodHlwZVNhbHQpKTsKKy8vICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7CisvL30KKworfSAvLyBuYW1lc3BhY2UgQ2hl
Y2tzdW0KIAogY2xhc3MgRW5jb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC00Myw3MiArNzIsNDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2Rl
cigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51
bGxwdHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9
IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBFJiBlbnVtVmFsdWUpCiAg
ICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA8PSBzaXplb2YodWludDY0X3Qp
LCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMuIik7Ci0gICAgICAg
IHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odCk7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBu
b3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxp
ZEVudW08RT4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSkpKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxU
Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDxUPj46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0
aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3Qg
VCYgdCkKICAgICB7CiAgICAgICAgIENvZGVyPFQ+OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXIm
IG9wZXJhdG9yPDwoYm9vbCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJh
dG9yPDwodWludDhfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9y
PDwodWludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KHVpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1
aW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50
MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJf
dCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFU+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFUgdmFsdWUpCisg
ICAgeworICAgICAgICAvL0NoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEs
IHZhbHVlKTsKKyAgICAgICAgYXV0byB0eXBlU2FsdCA9IENoZWNrc3VtOjpTYWx0PFU+Ojp2YWx1
ZTsKKyAgICAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlw
ZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKKyAgICAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKKyAgICAgICAgZW5j
b2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2Yo
VSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCog
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1
ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0
aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7Ci0KICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QpOwogCiAgICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBTYWx0OwotCiAgICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+
IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGExOwogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IEVu
Y29kZXI6OlNhbHQ8Ym9vbD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMzsg
fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3Q+IHsgc3RhdGljIGNv
bnN0ZXhwciAgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29k
ZXI6OlNhbHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDc7
IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MzJfdD4geyBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5j
b2Rlcjo6U2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0g
MTM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQzMl90PiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBF
bmNvZGVyOjpTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDE5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZmxvYXQ+IHsgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVu
Y29kZXI6OlNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAy
OTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
RW5jb2Rlcjo6U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUg
PSAxMDM7IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotdm9pZCBFbmNvZGVyOjp1cGRh
dGVDaGVja3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUeXBlIHZhbHVlKQotewotICAgIGF1dG8g
dHlwZVNhbHQgPSBTYWx0PFR5cGU+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNo
YTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZh
bHVlKSk7Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVz
cGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400200</attachid>
            <date>2020-05-25 08:09:20 -0700</date>
            <delta_ts>2020-05-25 09:22:08 -0700</delta_ts>
            <desc>Patch v22 - v19 with Checksum:: updateChecksumForNumber() inlined - WinCairo compiled!</desc>
            <filename>bug-211880-v22.diff</filename>
            <type>text/plain</type>
            <size>19283</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLjI0MjRhNzM3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byB0aGVpciBvd24K
KyAgICAgICAgICBDaGVja3N1bSBuYW1lc3BhY2UuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIg
ZGVzaWduIHNpbmNlCisgICAgICAgICAgYm90aCBEZWNvZGVyIGFuZCBFbmNvZGVyIHVzZSBpdCwg
YW5kIGl0IGF2b2lkcyBhIGNvbXBpbGVyCisgICAgICAgICAgZXJyb3Igb24gTVNWQysrLgorICAg
ICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBlcy4KKyAgICAgICAg
LSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
IE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAgICAgICAgTW92ZSBm
cm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNrc3VtIGNsYXNzLgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4
dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q2hlY2tzdW06OlNhbHQpOiBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cik6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFs
aWRFbnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9n
aWNhbCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYyM2EuLjJhYWNhNzE5MmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQog
Ci1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9u
LCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51
bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQg
dmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsK
LSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9w
dGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1
bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tz
dW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3
Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRl
ZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5j
ZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAxMC4uOTcyMDhlNjRiMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgog
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewpAQCAtNDMsMzAgKzQ0LDMzIEBAIHB1YmxpYzoKIAogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1
bSgpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3Bl
cmF0b3I+PihPcHRpb25hbDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+
Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50MTZfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+
KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxVPiYgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgVSB2YWx1ZTsKKyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKSkgeworICAgICAgICAgICAg
Ly9DaGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAg
ICAgICAgICBhdXRvIHR5cGVTYWx0ID0gQ2hlY2tzdW06OlNhbHQ8VT46OnZhbHVlOworICAgICAg
ICAgICAgbV9zaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2Fs
dCksIHNpemVvZih0eXBlU2FsdCkpOworICAgICAgICAgICAgbV9zaGExLmFkZEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOworICAgICAgICAg
ICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNf
YXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlICYmICFzdGQ6
OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2Fy
aXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9yPj4o
T3B0aW9uYWw8VD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9IENvZGVyPFQ+Ojpk
ZWNvZGUoKnRoaXMpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiog
PSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+
PihPcHRpb25hbDxFPiYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoRSkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMh
Iik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCks
ICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAg
ICAgaWYgKCF2YWx1ZSkKQEAgLTc3LDIyICs4MSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9S
RVRVUk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVs
ZW1lbnRzKSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxl
bWVudHMpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGht
ZXRpYzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQg
c2l6ZSEiKTsKLQotICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW4obnVtRWxlbWVudHMgKiBzaXplb2YoVSkpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0RlY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0
ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAgICBj
b25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpAQCAtMTAxLDYgKzEwMyw1IEBAIHByaXZh
dGU6CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi19IAotfQotCit9IC8vIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODcuLjYxNWYwZWNkNDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ2LDc5ICs0NiwxNiBAQCB1aW50OF90KiBFbmNvZGVyOjpncm93KHNpemVfdCBz
aXplKQogICAgIHJldHVybiBtX2J1ZmZlci5kYXRhKCkgKyBuZXdQb3NpdGlvbjsKIH0KIAotdm9p
ZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29uc3QgdWlu
dDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8dWlu
dDhfdCo+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRkQnl0ZXMoZGF0
YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotewotICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0
YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXpl
KTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVlKQotewot
ICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotCi0g
ICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNweShidWZm
ZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2Rl
TnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50OF90
IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVy
JiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNv
ZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDE2
X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29k
ZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVu
Y29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWlu
dDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChp
bnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGRv
dWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFs
dWUpOworICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBz
aXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEVuY29kZXI6OmVu
Y29kZUNoZWNrc3VtKCkKQEAgLTEyOCw1ICs2NSw1IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlQ2hl
Y2tzdW0oKQogICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShoYXNoLmRhdGEoKSwgaGFzaC5zaXpl
KCkpOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIu
aAppbmRleCAyN2FkMGQwN2Y2NS4uODE4NTRmYmZlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw4ICszMywzNyBAQAogbmFtZXNwYWNl
IFdURiB7CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCi1jbGFzcyBFbmNvZGVyOwotY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKK25hbWVzcGFjZSBDaGVja3N1bSB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgU2FsdDsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGJvb2w+IHsgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2Fs
dDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwordGVt
cGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDc7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50MzJfdD4geyBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
U2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7IH07
Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAxNzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGludDY0X3Q+IHsg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4gc3Ry
dWN0IFNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9
OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAyOTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQ4X3QqPiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgU2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAx
MDM7IH07CisKK2lubGluZSB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0ID0g
U2FsdDx1aW50OF90Kj46OnZhbHVlOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5hZGRC
eXRlcyhkYXRhLCBzaXplKTsKK30KKworLy90ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSA9IFQ+CisvL2lubGluZSB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEs
IFQgdmFsdWUpCisvL3sKKy8vICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFU+Ojp2YWx1ZTsKKy8v
ICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwg
c2l6ZW9mKHR5cGVTYWx0KSk7CisvLyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOworLy99CisKK30gLy8gbmFtZXNwYWNl
IENoZWNrc3VtCiAKIGNsYXNzIEVuY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNDMsNzIgKzcyLDQ3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkVu
Y29kZXIoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNrc3VtKCk7
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZp
eGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiog
PSBudWxscHRyPgotICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgRSYgZW51bVZhbHVl
KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2
NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzLiIpOwotICAg
ICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHQpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11
c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAgICAgIEFTU0VSVChXVEY6Omlz
VmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbnVtVmFsdWUpKSk7CisgICAgICAg
IHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2Vu
dW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0
aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNv
bnN0IFQmIHQpCiAgICAgewogICAgICAgICBDb2RlcjxUPjo6ZW5jb2RlKCp0aGlzLCB0KTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNv
ZGVyJiBvcGVyYXRvcjw8KGJvb2wpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBv
cGVyYXRvcjw8KHVpbnQ4X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVy
YXRvcjw8KHVpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PCh1aW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9y
PDwodWludDY0X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8
KGludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGlu
dDMyX3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGludDY0
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KGZsb2F0KTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChkb3VibGUpOworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRp
YzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChVIHZhbHVl
KQorICAgIHsKKyAgICAgICAgLy9DaGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9z
aGExLCB2YWx1ZSk7CisgICAgICAgIGF1dG8gdHlwZVNhbHQgPSBDaGVja3N1bTo6U2FsdDxVPjo6
dmFsdWU7CisgICAgICAgIG1fc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKKyAgICAgICAgbV9zaGExLmFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOworICAg
ICAgICBlbmNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSks
IHNpemVvZihVKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICAgICBjb25zdCB1
aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBz
aXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShT
SEExJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5
cGU+IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUeXBlKTsKLQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSBmYWxzZTsKIAogcHJpdmF0
ZToKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IEVuY29kZXImIGVuY29kZU51bWJlcihU
eXBlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICB1aW50OF90KiBncm93KHNpemVfdCk7CiAKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RydWN0IFNhbHQ7Ci0KICAgICBWZWN0b3I8dWludDhf
dCwgNDA5Nj4gbV9idWZmZXI7CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDxib29sPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFs
dWUgPSAzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdD4geyBz
dGF0aWMgY29uc3RleHByICB1bnNpZ25lZCB2YWx1ZSA9IDU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1
Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQzMl90PiB7
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMTsgfTsKLXRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dmFsdWUgPSAxMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDMyX3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE3OyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMTk7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxmbG9hdD4g
eyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjM7IH07Ci10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDxkb3VibGU+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDI5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDhfdCo+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEwMTsgfTsKLXRlbXBsYXRlIDw+
IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDEwMzsgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci12b2lkIEVuY29k
ZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFR5cGUgdmFsdWUpCi17Ci0g
ICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8VHlwZT46OnZhbHVlOwotICAgIHNoYTEuYWRkQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7
Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBz
aXplb2YodmFsdWUpKTsKLX0KLQotfQotfQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30g
Ly8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400205</attachid>
            <date>2020-05-25 09:20:59 -0700</date>
            <delta_ts>2020-05-25 09:48:10 -0700</delta_ts>
            <desc>Patch v23</desc>
            <filename>bug-211880-v23.diff</filename>
            <type>text/plain</type>
            <size>18916</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLjI0MjRhNzM3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byB0aGVpciBvd24K
KyAgICAgICAgICBDaGVja3N1bSBuYW1lc3BhY2UuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIg
ZGVzaWduIHNpbmNlCisgICAgICAgICAgYm90aCBEZWNvZGVyIGFuZCBFbmNvZGVyIHVzZSBpdCwg
YW5kIGl0IGF2b2lkcyBhIGNvbXBpbGVyCisgICAgICAgICAgZXJyb3Igb24gTVNWQysrLgorICAg
ICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBlcy4KKyAgICAgICAg
LSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
IE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAgICAgICAgTW92ZSBm
cm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNrc3VtIGNsYXNzLgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4
dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q2hlY2tzdW06OlNhbHQpOiBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cik6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFs
aWRFbnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9n
aWNhbCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHAKaW5kZXggODU5NWZjYWYyM2EuLjJhYWNhNzE5MmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJz
aXN0ZW5jZSB7CiAKQEAgLTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQog
Ci1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9u
LCBzaXplKTsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51
bWJlcihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluKHNpemVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQg
dmFsdWU7Ci0gICAgbWVtY3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsK
LSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0
ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9w
dGlvbmFsPGJvb2w+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQp
OwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDx1aW50MzJfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7
Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGZsb2F0PiYgcmVzdWx0KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1
bHQpOwotfQorICAgIGlmICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tz
dW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3
Niw1IEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRl
ZEhhc2ggPT0gc2F2ZWRIYXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5j
ZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaAppbmRleCBjNmRiNTA3ZTAxMC4uMzM2YzYxZTRmZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgog
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KKyNpbmNsdWRlIDx3
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBu
YW1lc3BhY2UgUGVyc2lzdGVuY2UgewpAQCAtNDMsMzAgKzQ0LDMwIEBAIHB1YmxpYzoKIAogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1
bSgpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3Bl
cmF0b3I+PihPcHRpb25hbDxib29sPiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+Jik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+
Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50MTZfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihP
cHRpb25hbDxpbnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDY0X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZmxvYXQ+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8ZG91YmxlPiYpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+
KiA9IG51bGxwdHI+CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxVPiYgcmVzdWx0
KQorICAgIHsKKyAgICAgICAgVSB2YWx1ZTsKKyAgICAgICAgaWYgKGRlY29kZURhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKSkgeworICAgICAgICAgICAg
Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOworICAgICAg
ICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6
aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlICYmICFz
dGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6Omlz
X2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9wZXJhdG9y
Pj4oT3B0aW9uYWw8VD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9IENvZGVyPFQ+
OjpkZWNvZGUoKnRoaXMpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxFPiYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoRSkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJp
dHMhIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRf
dCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAg
ICAgICAgaWYgKCF2YWx1ZSkKQEAgLTc3LDIyICs3OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNF
RF9SRVRVUk4KLSAgICBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51
bUVsZW1lbnRzKSBjb25zdAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVLCBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxVPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVt
RWxlbWVudHMpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJp
dGhtZXRpYzxUPjo6dmFsdWUsICJUeXBlIFQgbXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29k
ZWQgc2l6ZSEiKTsKLQotICAgICAgICBpZiAobnVtRWxlbWVudHMgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFQpKQorICAgICAgICBpZiAobnVtRWxlbWVudHMg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mKFUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdo
VG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFQpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4obnVtRWxlbWVudHMgKiBzaXplb2YoVSkpOwogICAgIH0K
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0RlY29kZXIgPSBmYWxzZTsKIAogcHJp
dmF0ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihPcHRpb25hbDxUeXBlPiYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVEYXRhKHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKICAg
ICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0aW9uOwpAQCAtMTAxLDYgKzEwMCw1IEBAIHBy
aXZhdGU6CiAgICAgU0hBMSBtX3NoYTE7CiB9OwogCi19IAotfQotCit9IC8vIG5hbWVzcGFjZSBQ
ZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODcuLjYxNWYwZWNk
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ2LDc5ICs0NiwxNiBAQCB1aW50OF90KiBFbmNvZGVyOjpncm93KHNpemVf
dCBzaXplKQogICAgIHJldHVybiBtX2J1ZmZlci5kYXRhKCkgKyBuZXdQb3NpdGlvbjsKIH0KIAot
dm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZURhdGEoY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8
dWludDhfdCo+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRkQnl0ZXMo
ZGF0YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotewotICAgIHVwZGF0ZUNoZWNrc3VtRm9y
RGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotCiAgICAgdWludDhfdCogYnVmZmVyID0gZ3Jvdyhz
aXplKTsKICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZT4KLUVuY29kZXImIEVuY29kZXI6OmVuY29kZU51bWJlcihUeXBlIHZhbHVlKQot
ewotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOwot
Ci0gICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzaXplb2YoVHlwZSkpOwotICAgIG1lbWNweShi
dWZmZXIsICZ2YWx1ZSwgc2l6ZW9mKFR5cGUpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50
OF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGlu
dDE2X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVu
Y29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
dWludDY0X3QgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0K
LUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwoaW50MzJfdCB2YWx1ZSkKLXsKLSAgICByZXR1
cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8
PChpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGZsb2F0IHZhbHVlKQotewotICAgIHJldHVy
biBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8
KGRvdWJsZSB2YWx1ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIo
dmFsdWUpOworICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRh
LCBzaXplKTsKKyAgICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEVuY29kZXI6
OmVuY29kZUNoZWNrc3VtKCkKQEAgLTEyOCw1ICs2NSw1IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2Rl
Q2hlY2tzdW0oKQogICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShoYXNoLmRhdGEoKSwgaGFzaC5z
aXplKCkpOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RW5jb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuaAppbmRleCAyN2FkMGQwN2Y2NS4uYWM5Y2RlMjAzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw4ICszMywzOCBAQAogbmFtZXNw
YWNlIFdURiB7CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCi1jbGFzcyBFbmNvZGVyOwotY2xh
c3MgRGF0YVJlZmVyZW5jZTsKK25hbWVzcGFjZSBDaGVja3N1bSB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgU2FsdDsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGJvb2w+IHsgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
U2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA1OyB9Owor
dGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDc7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50MzJfdD4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgU2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7
IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGludDY0X3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4g
c3RydWN0IFNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIz
OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgdmFsdWUgPSAyOTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQ4X3Qq
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgU2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUg
PSAxMDM7IH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFNhbHQgeyBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHZhbHVlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC0xKTsgfTsKKwor
aW5saW5lIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PHVpbnQ4
X3QqPjo6dmFsdWU7CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKKyAgICBzaGExLmFkZEJ5dGVzKGRhdGEs
IHNpemUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIHVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKFNIQTEmIHNoYTEsIFQgdmFsdWUpCit7CisgICAgYXV0byB0eXBlU2Fs
dCA9IFNhbHQ8VD46OnZhbHVlOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5hZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgQ2hlY2tzdW0KIAogY2xhc3MgRW5jb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Myw3MiArNzMsNDQgQEAgcHVibGljOgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB+RW5jb2RlcigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZW5jb2RlQ2hlY2tzdW0oKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZW51bTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25z
dCBUJiB0KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgRW5jb2RlciYgb3BlcmF0b3I8PChj
b25zdCBFJiBlbnVtVmFsdWUpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihU
KSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFu
IDY0IGJpdHMuIik7Ci0gICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4odCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRf
dCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKKyAgICAg
ICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1W
YWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihl
bnVtVmFsdWUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVl
ICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIEVuY29k
ZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIENvZGVyPFQ+OjplbmNv
ZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9vbCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVu
Y29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29k
ZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXIm
IG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9w
ZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRv
cjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19hcml0aG1ldGljPFU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNvZGVyJiBv
cGVyYXRvcjw8KFUgdmFsdWUpCisgICAgeworICAgICAgICBDaGVja3N1bTo6dXBkYXRlQ2hlY2tz
dW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CisgICAgICAgIGVuY29kZURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFUpKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hl
Y2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2YXRlOgotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVyKFR5cGUpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAogICAg
IHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBz
dHJ1Y3QgU2FsdDsKLQogICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBtX2J1ZmZlcjsKICAgICBT
SEExIG1fc2hhMTsKIH07CiAKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGJvb2w+
IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDM7IH07Ci10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4cHIgIHVuc2lnbmVk
IHZhbHVlID0gNTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQxNl90
PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA3OyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDExOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDY0
X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDEzOyB9OwotdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQ2
NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxOTsgfTsKLXRlbXBsYXRl
IDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdmFsdWUgPSAyMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJs
ZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTAxOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8aW50
MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JOdW1i
ZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKLXsKLSAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxU
eXBlPjo6dmFsdWU7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOwotfQotCi19Ci19
Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400207</attachid>
            <date>2020-05-25 09:52:02 -0700</date>
            <delta_ts>2020-05-25 10:34:23 -0700</delta_ts>
            <desc>Patch v24</desc>
            <filename>bug-211880-v24.diff</filename>
            <type>text/plain</type>
            <size>19173</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLjI0MjRhNzM3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byB0aGVpciBvd24K
KyAgICAgICAgICBDaGVja3N1bSBuYW1lc3BhY2UuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIg
ZGVzaWduIHNpbmNlCisgICAgICAgICAgYm90aCBEZWNvZGVyIGFuZCBFbmNvZGVyIHVzZSBpdCwg
YW5kIGl0IGF2b2lkcyBhIGNvbXBpbGVyCisgICAgICAgICAgZXJyb3Igb24gTVNWQysrLgorICAg
ICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBlcy4KKyAgICAgICAg
LSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
IE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAgICAgICAgTW92ZSBm
cm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNrc3VtIGNsYXNzLgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4
dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q2hlY2tzdW06OlNhbHQpOiBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cik6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFs
aWRFbnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9n
aWNhbCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9T
b3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggYzFiZTM5MjczODIuLmNlMjgxOTc3ZDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKKysrIGIvU291cmNlL1dURi93dGYv
U2Vjb25kcy5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCmluZGV4IDg1OTVmY2FmMjNhLi4yYWFjYTcx
OTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+CiAKLSNpbmNsdWRl
IDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KLQogbmFtZXNwYWNlIFdURiB7
CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCkBAIC00Nyw4MSArNDUsMjMgQEAgYm9vbCBEZWNv
ZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBzaXplKSBjb25zdAogICAg
IHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9idWZmZXJFbmQgLSBtX2J1ZmZl
clBvc2l0aW9uKTsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIERlY29kZXI6OmRlY29kZURhdGEodWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluKHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtZW1jcHkoZGF0YSwg
bV9idWZmZXJQb3NpdGlvbiwgc2l6ZSk7CiAgICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplOwot
Ci0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1EZWNvZGVyJiBE
ZWNvZGVyOjpkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQotewotICAgIGlmICgh
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplb2YoVCkpKQotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0KLSAgICBUIHZhbHVlOwotICAgIG1lbWNweSgmdmFsdWUsIG1fYnVmZmVyUG9zaXRp
b24sIHNpemVvZihUKSk7Ci0gICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplb2YoVCk7Ci0KLSAg
ICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKLSAgICBv
cHRpb25hbCA9IHZhbHVlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotRGVjb2RlciYgRGVjb2Rl
cjo6b3BlcmF0b3I+PihPcHRpb25hbDxib29sPiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNv
ZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRp
b25hbDx1aW50OF90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZfdD4m
IHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29k
ZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MTZfdD4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9w
ZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29k
ZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlv
bmFsPHVpbnQ2NF90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0
KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxpbnQzMl90PiYg
cmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2Rl
ciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYgcmVzdWx0KQotewotICAg
IHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3Bl
cmF0b3I+PihPcHRpb25hbDxmbG9hdD4mIHJlc3VsdCkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBk
ZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KKyAgICBpZiAoIWRlY29kZURhdGEoZGF0YSwgc2l6ZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihP
cHRpb25hbDxkb3VibGU+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1
bHQpOworICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBz
aXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1
bSgpCkBAIC0xMzYsNSArNzYsNSBAQCBib29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKICAg
ICByZXR1cm4gY29tcHV0ZWRIYXNoID09IHNhdmVkSGFzaDsKIH0KIAotfQotfQorfSAvLyBuYW1l
c3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggYzZkYjUwN2UwMTAuLjMzNmM2
MWU0ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVk
ZSA8d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKQEAgLTQzLDMwICs0NCwzMCBA
QCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNpemVfdCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVk
TGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYp
OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVp
bnQzMl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9w
dGlvbmFsPHVpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29k
ZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRo
bWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0
aW9uYWw8VT4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7CisgICAgICAgIGlmIChk
ZWNvZGVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihVKSkp
IHsKKyAgICAgICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEs
IHZhbHVlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVu
YWJsZV9pZl90PCFzdGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8
VD4+Ojp2YWx1ZSAmJiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2
YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAgICAgICBy
ZXN1bHQgPSBDb2RlcjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogICAg
IERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAgICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBiZSBs
YXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8
PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0
IGJpdHMhIik7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRo
aXMgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiArNzgsMjAgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxs
cHRyPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBhIGZp
eGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICAgICAg
aWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNp
emVvZihVKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAg
ICAgIHJldHVybiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVsZW1lbnRzICogc2l6
ZW9mKFUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENEZWNvZGVy
ID0gZmFsc2U7CiAKIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9u
YWw8VHlwZT4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgY29uc3QgdWludDhf
dCogbV9idWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKQEAgLTEw
MSw2ICsxMDAsNSBAQCBwcml2YXRlOgogICAgIFNIQTEgbV9zaGExOwogfTsKIAotfSAKLX0KLQor
fSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCmluZGV4IDE0ZGQz
ZjY4Mzg3Li42MTVmMGVjZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRFbmNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3OSArNDYsMTYgQEAgdWludDhfdCogRW5j
b2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gbV9idWZmZXIuZGF0YSgpICsgbmV3
UG9zaXRpb247CiB9CiAKLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEm
IHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjpl
bmNvZGVEYXRhKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGF1dG8g
dHlwZVNhbHQgPSBTYWx0PHVpbnQ4X3QqPjo6dmFsdWU7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKLSAg
ICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOwotfQotCi12b2lkIEVuY29kZXI6OmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLXsKLSAgICB1
cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAgIHVpbnQ4X3Qq
IGJ1ZmZlciA9IGdyb3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjplbmNvZGVOdW1i
ZXIoVHlwZSB2YWx1ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlciht
X3NoYTEsIHZhbHVlKTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9mKFR5cGUp
KTsKLSAgICBtZW1jcHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0gICAgcmV0dXJu
ICp0aGlzOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wgdmFsdWUpCi17
Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6
Om9wZXJhdG9yPDwodWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZh
bHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZfdCB2YWx1ZSkK
LXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rl
cjo6b3BlcmF0b3I8PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIo
dmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQzMl90IHZhbHVl
KQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNv
ZGVyOjpvcGVyYXRvcjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1i
ZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDMyX3QgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVu
Y29kZXI6Om9wZXJhdG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChmbG9hdCB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5j
b2Rlcjo6b3BlcmF0b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1
cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKKyAgICBDaGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShkYXRhLCBzaXplKTsKIH0K
IAogdm9pZCBFbmNvZGVyOjplbmNvZGVDaGVja3N1bSgpCkBAIC0xMjgsNSArNjUsNSBAQCB2b2lk
IEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKICAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoaGFz
aC5kYXRhKCksIGhhc2guc2l6ZSgpKTsKIH0KIAotfQotfQorfSAvLyBuYW1lc3BhY2UgUGVyc2lz
dGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUuLjhmNDRhMmMxOGJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOCAr
MzMsMzcgQEAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotY2xh
c3MgRW5jb2RlcjsKLWNsYXNzIERhdGFSZWZlcmVuY2U7CituYW1lc3BhY2UgQ2hlY2tzdW0gewor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFNhbHQ7Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3Qg
U2FsdDxib29sPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAzOyB9OwordGVt
cGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDhfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gNTsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQxNl90PiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSA3OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNh
bHQ8dWludDMyX3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDExOyB9Owor
dGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDEzOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8aW50MzJfdD4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTc7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgU2FsdDxpbnQ2NF90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxOTsg
fTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGZsb2F0PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAyMzsgfTsKK3RlbXBsYXRlIDw+IHN0cnVjdCBTYWx0PGRvdWJsZT4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMjk7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1
Y3QgU2FsdDx1aW50OF90Kj4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAx
OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHZhbHVlID0gMTAzOyB9OworCitpbmxpbmUgdm9pZCB1cGRhdGVDaGVja3N1bUZv
ckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7Cisg
ICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8dWludDhfdCo+Ojp2YWx1ZTsKKyAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2Fs
dCkpOworICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgoraW5saW5lIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwg
VCB2YWx1ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUPjo6dmFsdWU7CisgICAgc2hh
MS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2Yo
dHlwZVNhbHQpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBDaGVja3N1bQog
CiBjbGFzcyBFbmNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQzLDcy
ICs3Miw0NCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4K
LSAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KKyAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVt
IHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoRSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBs
YXJnZXIgdGhhbiA2NCBiaXRzISIpOworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxF
PihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4gKnRo
aXMgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZSAmJiAhc3RkOjppc19hcml0aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6
dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6
dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQog
ICAgIHsKICAgICAgICAgQ29kZXI8VD46OmVuY29kZSgqdGhpcywgdCk7CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0
b3I8PChib29sKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1
aW50OF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50
MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDMy
X3QpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQ2NF90
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQxNl90KTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQzMl90KTsKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQ2NF90KTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChmbG9hdCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoZG91YmxlKTsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJhdG9yPDwoVSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsK
KyAgICAgICAgZW5jb2RlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFs
dWUpLCBzaXplb2YoVSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29u
c3QgdWludDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0K
IAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRh
dGEoU0hBMSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7
Ci0KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHBy
aXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1i
ZXIoVHlwZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBTYWx0OwotCiAgICAgVmVjdG9yPHVp
bnQ4X3QsIDQwOTY+IG1fYnVmZmVyOwogICAgIFNIQTEgbV9zaGExOwogfTsKIAotdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8Ym9vbD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHZhbHVlID0gMzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3Q+
IHsgc3RhdGljIGNvbnN0ZXhwciAgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwotdGVtcGxhdGUgPD4g
c3RydWN0IEVuY29kZXI6OlNhbHQ8dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCB2YWx1ZSA9IDc7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MzJf
dD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Ci10ZW1wbGF0ZSA8
PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIHZhbHVlID0gMTM7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQz
Ml90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKLXRlbXBsYXRl
IDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCB2YWx1ZSA9IDE5OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8Zmxv
YXQ+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwotdGVtcGxhdGUg
PD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgdmFsdWUgPSAyOTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4
X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Ci10ZW1wbGF0
ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgdmFsdWUgPSAxMDM7IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotdm9pZCBF
bmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiBzaGExLCBUeXBlIHZhbHVlKQot
ewotICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFR5cGU+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2Fs
dCkpOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKHZhbHVlKSk7Ci19Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNl
Cit9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400208</attachid>
            <date>2020-05-25 10:34:23 -0700</date>
            <delta_ts>2020-05-25 10:34:23 -0700</delta_ts>
            <desc>Patch v25</desc>
            <filename>bug-211880-v25.diff</filename>
            <type>text/plain</type>
            <size>24738</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzA0YTQ1MzM4NzkuLjI0MjRhNzM3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIw
LTA1LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6OkRlY29k
ZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJyb2FkIHN0
cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAgICAgICAt
IFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVyYXRvcj4+
KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRoaXMgZGVs
ZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0ZSBtZXRo
b2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcgY2hhbmdl
cyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAgICAgZGlz
YW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYzw+IHBhcmFtZXRlciB0eXBlcy4KKyAgICAgICAg
LSBFeHRyYWN0IGNoY2Vja3N1bSBtZXRob2RzIGFuZCBzdHJ1Y3QgU2FsdCB0byB0aGVpciBvd24K
KyAgICAgICAgICBDaGVja3N1bSBuYW1lc3BhY2UuICBUaGlzIGlzIHNsaWdodGx5IGNsZWFuZXIg
ZGVzaWduIHNpbmNlCisgICAgICAgICAgYm90aCBEZWNvZGVyIGFuZCBFbmNvZGVyIHVzZSBpdCwg
YW5kIGl0IGF2b2lkcyBhIGNvbXBpbGVyCisgICAgICAgICAgZXJyb3Igb24gTVNWQysrLgorICAg
ICAgICAtIFVzZSBgdHlwZW5hbWUgRWAgZm9yIEVuY29kZXIgZW51bSB0eXBlcy4KKyAgICAgICAg
LSBVc2UgYHR5cGVuYW1lIFRgIGZvciBFbmNvZGVyIG5vbi1QT0QgdHlwZXMuCisgICAgICAgIC0g
VXNlIGB0eXBlbmFtZSBVYCBmb3IgRW5jb2RlciBzdGQ6OmlzX2FyaXRobWV0aWM8PiB0eXBlcy4K
KyAgICAgICAgLSBNb3ZlIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBzYW1lIGxpbmUgYXMgYGJvb2xg
IHJldHVybiB0eXBlLgorCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmRlY29kZURhdGEp
OiBBZGQuICBFeHRyYWN0IGNvZGUgdG8KKyAgICAgICAgc2hhcmUuCisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKTogRGVsZXRlLgorICAgICAgICAo
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6b3BlcmF0b3I+Pik6IERlbGV0ZS4KKyAgICAgICAg
KiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAg
IE1vdmUgc3RhdGljX2Fzc2VydCgpIHRvIFNGSU5BRSBjaGVjay4KKyAgICAgICAgKiB3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q2hlY2tzdW06OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YSk6IEFkZC4KKyAgICAgICAgTW92ZSBm
cm9tIEVuY29kZXIgY2xhc3MuCisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1
cGRhdGVDaGVja3N1bUZvckRhdGEpOiBNb3ZlIHRvCisgICAgICAgIENoZWNrc3VtIGNsYXNzLgor
ICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRGF0YSk6IEFkZC4gIEV4
dHJhY3QgY29kZSB0bworICAgICAgICBzaGFyZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyOjplbmNvZGVOdW1iZXIpOiBEZWxldGUuCisgICAgICAgIChXVEY6OlBlcnNp
c3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlLgorICAgICAgICAqIHd0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q2hlY2tzdW06OlNhbHQpOiBNb3ZlIGZyb20gRW5jb2RlciBjbGFzcy4KKyAgICAgICAgKFdURjo6
UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvckRhdGEpOiBEaXR0by4KKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cik6IERpdHRvLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6b3BlcmF0b3I8
PCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ck51bWJlcik6IE1vdmUgdG8KKyAgICAgICAgQ2hlY2tzdW0gY2xhc3MuCisKIDIwMjAtMDUtMjIg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEY6OmlzVmFs
aWRFbnVtKCkgaGFzIGEgdHlwbyBpbiBzdGF0aWNfYXNzZXJ0IG1ha2luZyBpdCBhIHRhdXRvbG9n
aWNhbCBjb21wYXJpc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5OWFlMTRlNDRhMy4uYjIzNTdmNjJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzY5LDYgKzM2OSw3IEBACiAJCTM5MUJENkJBNEQxNjRGRDI5
NEY5QTkzRCAvKiBTdGRNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rk
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0ZFOEY1MUY4RDJFQUIwMEY2
RDdENyAvKiBDYWxsYmFja0FnZ3JlZ2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FsbGJhY2tBZ2dyZWdhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzMEI0Nzg3MUFBQUFDMUEwMDEyMjNEQSAvKiBTdHJpbmdDb21tb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ0MDg0NTMxMjQ3QzMzRUQwMDQ0NDRFMyAvKiBQZXJzaXN0ZW50Q2hlY2tzdW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lzdGVudENoZWNrc3VtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJBNCAv
KiBBU0NJSUNUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFT
Q0lJQ1R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJBOUVBQjFGNENE
NjFFMDA5QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVmQ291bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNDk5LDYgKzE1MDAsNyBAQAogCQlFNDNBNDY4NTFFMjI4QjU3MDAyNzZCMDUgLyogcGVyc2lz
dGVuY2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ0
MDg0NTMxMjQ3QzMzRUQwMDQ0NDRFMyAvKiBQZXJzaXN0ZW50Q2hlY2tzdW0uaCAqLywKIAkJCQk1
MUYxNzUyNDFGM0Q0ODYwMDBDNzQ5NTAgLyogUGVyc2lzdGVudENvZGVyLmggKi8sCiAJCQkJNTFG
MTc1MjYxRjNENDg2MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnRDb2RlcnMuY3BwICovLAogCQkJCTUx
RjE3NTI1MUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50Q29kZXJzLmggKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CmluZGV4IDUwOGUxOWQ2MmI0Li4zZDk1YzEzZjQ1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKQEAgLTMwNyw2ICszMDcsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgZHRv
YS9zdHJ0b2QuaAogICAgIGR0b2EvdXRpbHMuaAogCisgICAgcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENoZWNrc3VtLmgKICAgICBwZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAogICAgIHBlcnNp
c3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaAogICAgIHBlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuY3BwIGIvU291cmNlL1dURi93
dGYvU0hBMS5jcHAKaW5kZXggMmI5ZmI5YTM3YTAuLmUxYjcxODhhYTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TSEExLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TSEExLmNwcApAQCAt
MjAyLDYgKzIwMiwxMiBAQCB2b2lkIFNIQTE6OnJlc2V0KCkKIAogI2VuZGlmCiAKK3ZvaWQgU0hB
MTo6YWRkQnl0ZXMoY29uc3QgQ1N0cmluZyYgaW5wdXQpCit7CisgICAgY29uc3QgY2hhciogc3Ry
aW5nID0gaW5wdXQuZGF0YSgpOworICAgIGFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHN0cmluZyksIGlucHV0Lmxlbmd0aCgpKTsKK30KKwogQ1N0cmluZyBTSEExOjpo
ZXhEaWdlc3QoY29uc3QgRGlnZXN0JiBkaWdlc3QpCiB7CiAgICAgY2hhciogc3RhcnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU0hBMS5oIGIvU291cmNlL1dURi93dGYv
U0hBMS5oCmluZGV4IDJjN2Q5YTM2NGUxLi5jN2M3YTEwOGY2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvU0hBMS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaApAQCAtMzIsNyArMzIs
NiBAQAogCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
PENvbW1vbkNyeXB0by9Db21tb25EaWdlc3QuaD4KQEAgLTQwLDYgKzM5LDggQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKK2NsYXNzIENTdHJpbmc7CisKIGNsYXNzIFNIQTEgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDksMTEgKzUwLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgYWRkQnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0K
LSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IENTdHJpbmcmIGlucHV0KQotICAgIHsKLSAgICAgICAg
Y29uc3QgY2hhciogc3RyaW5nID0gaW5wdXQuZGF0YSgpOwotICAgICAgICBhZGRCeXRlcyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcpLCBpbnB1dC5sZW5ndGgoKSk7Ci0g
ICAgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0IENTdHJpbmcm
IGlucHV0KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50
OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBTaXplIG9mIHRoZSBTSEExIGhh
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaCBiL1NvdXJjZS9XVEYvd3Rm
L1NlY29uZHMuaAppbmRleCBjMWJlMzkyNzM4Mi4uNTEzNGE3NWFhNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAg
LTI4LDYgKzI4LDkgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogCisvLyBXb3JrYXJvdW5kIGlzc3VlIGluIE1TVkMrKyBvbiBXaW5DYWly
by4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENoZWNrc3VtLmg+CisKIG5h
bWVzcGFjZSBXVEYgewogCiBjbGFzcyBNb25vdG9uaWNUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENoZWNrc3VtLmggYi9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q2hlY2tzdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMTI1NDRjMmUxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q2hlY2tzdW0uaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9TSEExLmg+
CisKK25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKK25hbWVzcGFjZSBD
aGVja3N1bSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2FsdDsKK3RlbXBsYXRl
IDw+IHN0cnVjdCBTYWx0PGJvb2w+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9
IDM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50OF90PiB7IHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdmFsdWUgPSA1OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8dWludDE2
X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDc7IH07Cit0ZW1wbGF0ZSA8
PiBzdHJ1Y3QgU2FsdDx1aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVl
ID0gMTE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDx1aW50NjRfdD4geyBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxp
bnQzMl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBTYWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2
YWx1ZSA9IDE5OyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwordGVtcGxhdGUgPD4gc3RydWN0IFNhbHQ8
ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyOTsgfTsKK3RlbXBs
YXRlIDw+IHN0cnVjdCBTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
dmFsdWUgPSAxMDE7IH07Cit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2FsdDxpbnQxNl90PiB7IHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDM7IH07CisKK2lubGluZSB2b2lkIHVwZGF0
ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK3sKKyAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOworICAg
IHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6
ZW9mKHR5cGVTYWx0KSk7CisgICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihT
SEExJiBzaGExLCBUIHZhbHVlKQoreworICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFQ+Ojp2YWx1
ZTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2Fs
dCksIHNpemVvZih0eXBlU2FsdCkpOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IENoZWNrc3VtCit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAK
aW5kZXggODU5NWZjYWYyM2EuLjJhYWNhNzE5MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDggKzI2LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuaD4KIAotI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5j
b2Rlci5oPgotCiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKQEAg
LTQ3LDgxICs0NSwyMyBAQCBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW4oc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCi1ib29sIERlY29kZXI6
OmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wg
RGVjb2Rlcjo6ZGVjb2RlRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBp
ZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXplKTsKICAgICBt
X2J1ZmZlclBvc2l0aW9uICs9IHNpemU7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZv
ckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLURlY29kZXImIERlY29kZXI6OmRlY29kZU51bWJlcihPcHRpb25hbDxU
PiYgb3B0aW9uYWwpCi17Ci0gICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNp
emVvZihUKSkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIFQgdmFsdWU7Ci0gICAgbWVt
Y3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZlclBv
c2l0aW9uICs9IHNpemVvZihUKTsKLQotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVt
YmVyKG1fc2hhMSwgdmFsdWUpOwotICAgIG9wdGlvbmFsID0gdmFsdWU7Ci0gICAgcmV0dXJuICp0
aGlzOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+JiBy
ZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVy
JiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ4X3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVO
dW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25h
bDxpbnQxNl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsK
LX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXIm
IERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVy
YXRvcj4+KE9wdGlvbmFsPGludDMyX3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51
bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFs
PGludDY0X3Q+JiByZXN1bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwot
fQotCi1EZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYgcmVzdWx0
KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQorICAgIGlm
ICghZGVjb2RlRGF0YShkYXRhLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1EZWNv
ZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mIHJlc3VsdCkKLXsKLSAg
ICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7CisgICAgQ2hlY2tzdW06OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBi
b29sIERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKQEAgLTEzNiw1ICs3Niw1IEBAIGJvb2wgRGVj
b2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQogICAgIHJldHVybiBjb21wdXRlZEhhc2ggPT0gc2F2ZWRI
YXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIu
aAppbmRleCBjNmRiNTA3ZTAxMC4uNDBiYTUxN2YyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiw5IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENoZWNrc3VtLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2Rlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQzLDMwICs0NSwzMCBAQCBwdWJsaWM6CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgdmVyaWZ5Q2hl
Y2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YSh1
aW50OF90KiBkYXRhLCBzaXplX3QpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIm
IG9wZXJhdG9yPj4oT3B0aW9uYWw8Ym9vbD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVj
b2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQxNl90PiYpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQzMl90PiYpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2
NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlv
bmFsPGludDE2X3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9y
Pj4oT3B0aW9uYWw8aW50MzJfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYg
b3BlcmF0b3I+PihPcHRpb25hbDxpbnQ2NF90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGZsb2F0PiYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZh
bHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VT4mIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIFUgdmFsdWU7CisgICAgICAgIGlmIChkZWNvZGVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihVKSkpIHsKKyAgICAgICAg
ICAgIENoZWNrc3VtOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX2FyaXRobWV0aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZSAm
JiAhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3Rk
Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBEZWNvZGVyJiBvcGVy
YXRvcj4+KE9wdGlvbmFsPFQ+JiByZXN1bHQpCiAgICAgewogICAgICAgICByZXN1bHQgPSBDb2Rl
cjxUPjo6ZGVjb2RlKCp0aGlzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2
YWx1ZT4qID0gbnVsbHB0cj4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgogICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oT3B0aW9uYWw8RT4mIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKEUpIDw9IDgsICJFbnVtIHR5cGUgVCBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2
NCBiaXRzISIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWlu
dDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CiAg
ICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdmFsdWU7
CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC03NywyMiArNzksMjAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gV0FSTl9V
TlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVf
dCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90
IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBhIGZpeGVkLCBrbm93biBl
bmNvZGVkIHNpemUhIik7Ci0KLSAgICAgICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKKyAgICAgICAgaWYgKG51bUVsZW1l
bnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihVKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVu
b3VnaFRvQ29udGFpbihudW1FbGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgICAgIHJldHVybiBi
dWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVsZW1lbnRzICogc2l6ZW9mKFUpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENEZWNvZGVyID0gZmFsc2U7CiAK
IHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRGF0
YSh1aW50OF90KiBkYXRhLCBzaXplX3QpOwogCiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7
CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKQEAgLTEwMSw2ICsxMDEsNSBA
QCBwcml2YXRlOgogICAgIFNIQTEgbV9zaGExOwogfTsKIAotfSAKLX0KLQorfSAvLyBuYW1lc3Bh
Y2UgUGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCmluZGV4IDE0ZGQzZjY4Mzg3Li42MTVm
MGVjZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Niw3OSArNDYsMTYgQEAgdWludDhfdCogRW5jb2Rlcjo6Z3Jvdyhz
aXplX3Qgc2l6ZSkKICAgICByZXR1cm4gbV9idWZmZXIuZGF0YSgpICsgbmV3UG9zaXRpb247CiB9
CiAKLXZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVEYXRhKGNv
bnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGF1dG8gdHlwZVNhbHQgPSBT
YWx0PHVpbnQ4X3QqPjo6dmFsdWU7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKLSAgICBzaGExLmFkZEJ5
dGVzKGRhdGEsIHNpemUpOwotfQotCi12b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKLXsKLSAgICB1cGRhdGVDaGVja3N1
bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdy
b3coc2l6ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjplbmNvZGVOdW1iZXIoVHlwZSB2YWx1
ZSkKLXsKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVl
KTsKLQotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9mKFR5cGUpKTsKLSAgICBtZW1j
cHkoYnVmZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
dWludDhfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQot
RW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1
cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8
PChpbnQxNl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQot
Ci1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQzMl90IHZhbHVlKQotewotICAgIHJl
dHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRv
cjw8KHVpbnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwot
fQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDMyX3QgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJh
dG9yPDwoaW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsK
LX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChmbG9hdCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0
b3I8PChkb3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZW5jb2RlTnVt
YmVyKHZhbHVlKTsKKyAgICBDaGVja3N1bTo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwg
ZGF0YSwgc2l6ZSk7CisgICAgZW5jb2RlRGF0YShkYXRhLCBzaXplKTsKIH0KIAogdm9pZCBFbmNv
ZGVyOjplbmNvZGVDaGVja3N1bSgpCkBAIC0xMjgsNSArNjUsNSBAQCB2b2lkIEVuY29kZXI6OmVu
Y29kZUNoZWNrc3VtKCkKICAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoaGFzaC5kYXRhKCksIGhh
c2guc2l6ZSgpKTsKIH0KIAotfQotfQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUuLjYyOGRhOTYxMDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTQgKzI4LDEyIEBACiAj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENo
ZWNrc3VtLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiAKLWNsYXNzIEVuY29k
ZXI7Ci1jbGFzcyBEYXRhUmVmZXJlbmNlOwotCiBjbGFzcyBFbmNvZGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQzLDcyICs0MSw0NCBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBvcGVyYXRv
cjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEUsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNvZGVyJiBvcGVy
YXRvcjw8KGNvbnN0IEUmIGVudW1WYWx1ZSkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFQpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFy
Z2VyIHRoYW4gNjQgYml0cy4iKTsKLSAgICAgICAgcmV0dXJuICp0aGlzIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih0KTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gc2l6ZW9m
KHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiA2NCBiaXRzISIp
OworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx1aW50NjRf
dD4oZW51bVZhbHVlKSkpOworICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGVudW1WYWx1ZSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1l
dGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Pjo6dmFsdWU+KiA9IG51bGxwdHI+Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxU
Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAg
ICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQogICAgIHsKICAgICAgICAgQ29kZXI8
VD46OmVuY29kZSgqdGhpcywgdCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChib29sKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50OF90KTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50MTZfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDMyX3QpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQxNl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgRW5jb2RlciYgb3BlcmF0b3I8PChpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlciYgb3BlcmF0b3I8PChpbnQ2NF90KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRW5j
b2RlciYgb3BlcmF0b3I8PChmbG9hdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXIm
IG9wZXJhdG9yPDwoZG91YmxlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVu
Y29kZXImIG9wZXJhdG9yPDwoVSB2YWx1ZSkKKyAgICB7CisgICAgICAgIENoZWNrc3VtOjp1cGRh
dGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgZW5jb2RlRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVSkpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9pZCB1
cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7Ci0KICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CiAKIHByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlPiBFbmNvZGVyJiBlbmNvZGVOdW1iZXIoVHlwZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qp
OwogCiAgICAgdWludDhfdCogZ3JvdyhzaXplX3QpOwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFR5cGU+IHN0cnVjdCBTYWx0OwotCiAgICAgVmVjdG9yPHVpbnQ4X3QsIDQwOTY+IG1fYnVmZmVy
OwogICAgIFNIQTEgbV9zaGExOwogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNh
bHQ8Ym9vbD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMzsgfTsKLXRlbXBs
YXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciAg
dW5zaWduZWQgdmFsdWUgPSA1OyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8
dWludDE2X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDc7IH07Ci10ZW1w
bGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50MzJfdD4geyBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHZhbHVlID0gMTE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2Fs
dDx1aW50NjRfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTM7IH07Ci10
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDxpbnQzMl90PiB7IHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdmFsdWUgPSAxNzsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpT
YWx0PGludDY0X3Q+IHsgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB2YWx1ZSA9IDE5OyB9Owot
dGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNhbHQ8ZmxvYXQ+IHsgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCB2YWx1ZSA9IDIzOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IEVuY29kZXI6OlNh
bHQ8ZG91YmxlPiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAyOTsgfTsKLXRl
bXBsYXRlIDw+IHN0cnVjdCBFbmNvZGVyOjpTYWx0PHVpbnQ4X3QqPiB7IHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgdmFsdWUgPSAxMDE7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6
U2FsdDxpbnQxNl90PiB7IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdmFsdWUgPSAxMDM7IH07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1
bUZvck51bWJlcihTSEExJiBzaGExLCBUeXBlIHZhbHVlKQotewotICAgIGF1dG8gdHlwZVNhbHQg
PSBTYWx0PFR5cGU+Ojp2YWx1ZTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRkQnl0
ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZhbHVlKSk7Ci19
Ci0KLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401311</attachid>
            <date>2020-06-07 21:46:35 -0700</date>
            <delta_ts>2020-06-07 21:46:35 -0700</delta_ts>
            <desc>v2 + OPENSSL_NO_SHA and OPENSSL_NO_SHA1</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>15839</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMDNlZmYzNzkxNmUuLjljMjQzOWI1ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIw
LTA2LTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQ
Q10gVXNlIHRlbXBsYXRlcyB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUgaW4gUGVyc2lzdGVuY2U6
OkRlY29kZXIgYW5kIFBlcnNpc3RlbmNlOjpFbmNvZGVyIGNsYXNzZXMKKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzIxMTg4MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMjEzNDYy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJy
b2FkIHN0cm9rZXMsIHRoaXMgY2hhbmdlIGZpeGVzIHRoZSBmb2xsb3dpbmcgaXNzdWVzOgorICAg
ICAgICAtIFRlbXBsYXRpemUgRW5jb2Rlcjo6b3BlcmF0b3I8PCgpIGFuZCBEZWNvZGVyOjpvcGVy
YXRvcj4+KCkKKyAgICAgICAgICBtZXRob2RzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZS4gIFRo
aXMgZGVsZXRlZCBjb2RlIGluIHNvdXJjZQorICAgICAgICAgIGZpbGVzLCBhZGRlZCB0ZW1wbGF0
ZSBtZXRob2RzIHRvIGhlYWRlciBmaWxlcywgYW5kIHJlcXVpcmVkIGEKKyAgICAgICAgICBmZXcg
Y2hhbmdlcyB0byBleGlzdGluZyB0ZW1wbGF0ZXMgaW4gaGVhZGVyIGZpbGVzIHRvCisgICAgICAg
ICAgZGlzYW1iaWd1YXRlIHN0ZDo6aXNfYXJpdGhtZXRpYyBwYXJhbWV0ZXIgdHlwZXMuCisgICAg
ICAgIC0gVXNlIGB0eXBlbmFtZSBFYCBmb3IgYWxsIHRlbXBsYXRlIG1ldGhvZHMgdGhhdCBoYW5k
bGUgZW51bQorICAgICAgICAgIHR5cGVzLgorICAgICAgICAtIFVzZSBgdHlwZW5hbWUgVGAgZm9y
IGFsbCBvdGhlciB0ZW1wbGF0ZSBtZXRob2QgdHlwZXMuCisgICAgICAgIC0gTW92ZSBXQVJOX1VO
VVNFRF9SRVRVUk4gdG8gc2FtZSBsaW5lIGFzIGBib29sYCByZXR1cm4gdHlwZS4KKworICAgICAg
ICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHA6CisgICAgICAgIChXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpkZWNvZGVEYXRhKTogQWRkLiAgRXh0cmFjdCBjb2RlIHRv
CisgICAgICAgIHNoYXJlLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6ZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6
OmRlY29kZU51bWJlcik6IERlbGV0ZS4KKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXI6Om9wZXJhdG9yPj4pOiBEZWxldGUuCisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpvcGVy
YXRvcj4+KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpl
bmNvZGVEYXRhKTogQWRkLiAgRXh0cmFjdCBjb2RlIHRvCisgICAgICAgIHNoYXJlLgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZU51bWJlcik6IERlbGV0ZS4K
KyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6Om9wZXJhdG9yPDwpOiBEZWxldGUu
CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjpvcGVyYXRvcjw8KToKKwogMjAyMC0wNi0wNyAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gSEFW
RShQQVlNRU5UX01FVEhPRF9CSUxMSU5HX0FERFJFU1MpIHNob3VsZCBiZSB0cnVlIG9uIGlPUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIu
Y3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCmlu
ZGV4IDg1OTVmY2FmMjNhLi40ZGIxNTM0MGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmg+CiAKLSNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuaD4KLQogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCkBAIC00
Nyw4MSArNDUsMjMgQEAgYm9vbCBEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
KHNpemVfdCBzaXplKSBjb25zdAogICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVf
dD4obV9idWZmZXJFbmQgLSBtX2J1ZmZlclBvc2l0aW9uKTsKIH0KIAotYm9vbCBEZWNvZGVyOjpk
ZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIERl
Y29kZXI6OmRlY29kZURhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYg
KCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBtZW1jcHkoZGF0YSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZSk7CiAgICAgbV9i
dWZmZXJQb3NpdGlvbiArPSBzaXplOwotCi0gICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1EZWNvZGVyJiBEZWNvZGVyOjpkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VD4m
IG9wdGlvbmFsKQotewotICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXpl
b2YoVCkpKQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICBUIHZhbHVlOwotICAgIG1lbWNw
eSgmdmFsdWUsIG1fYnVmZmVyUG9zaXRpb24sIHNpemVvZihUKSk7Ci0gICAgbV9idWZmZXJQb3Np
dGlvbiArPSBzaXplb2YoVCk7Ci0KLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cihtX3NoYTEsIHZhbHVlKTsKLSAgICBvcHRpb25hbCA9IHZhbHVlOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxib29sPiYgcmVz
dWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYg
RGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDx1aW50OF90PiYgcmVzdWx0KQotewotICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDx1aW50MTZfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVt
YmVyKHJlc3VsdCk7Ci19Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8
aW50MTZfdD4mIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gZGVjb2RlTnVtYmVyKHJlc3VsdCk7Ci19
Ci0KLURlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDMyX3Q+JiByZXN1
bHQpCi17Ci0gICAgcmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOwotfQotCi1EZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KE9wdGlvbmFsPHVpbnQ2NF90PiYgcmVzdWx0KQotewotICAgIHJl
dHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0
b3I+PihPcHRpb25hbDxpbnQzMl90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1i
ZXIocmVzdWx0KTsKLX0KLQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxp
bnQ2NF90PiYgcmVzdWx0KQotewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0K
LQotRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mIHJlc3VsdCkK
K2Jvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewotICAgIHJldHVybiBkZWNvZGVOdW1iZXIocmVzdWx0KTsKLX0KKyAgICBpZiAo
IWRlY29kZURhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotRGVjb2Rl
ciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+JiByZXN1bHQpCi17Ci0gICAg
cmV0dXJuIGRlY29kZU51bWJlcihyZXN1bHQpOworICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3Vt
Rm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29s
IERlY29kZXI6OnZlcmlmeUNoZWNrc3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5oCmluZGV4IGM2ZGI1MDdlMDEwLi45YmNhYTZkM2U2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9TSEEx
Lmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgorI2luY2x1
ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CkBAIC00MywyMCArNDQsMjAgQEAgcHVibGljOgog
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHZlcmlmeUNo
ZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEo
dWludDhfdCogZGF0YSwgc2l6ZV90KTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVy
JiBvcGVyYXRvcj4+KE9wdGlvbmFsPGJvb2w+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERl
Y29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8dWludDhfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MTZfdD4mKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50MzJfdD4mKTsK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDx1aW50
NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRp
b25hbDxpbnQxNl90PiYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPGludDMyX3Q+Jik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIm
IG9wZXJhdG9yPj4oT3B0aW9uYWw8aW50NjRfdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxmbG9hdD4mKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+Jik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZh
bHVlPiogPSBudWxscHRyPgorICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIFQgdmFsdWU7CisgICAgICAgIGlmIChkZWNvZGVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSkpIHsKKyAgICAgICAg
ICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUpOworICAg
ICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0
ZDo6aXNfYXJpdGhtZXRpYzx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPj46OnZhbHVlICYm
ICFzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6
aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0
b3I+PihPcHRpb25hbDxUPiYgcmVzdWx0KQogICAgIHsKICAgICAgICAgcmVzdWx0ID0gQ29kZXI8
VD46OmRlY29kZSgqdGhpcyk7CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9
IG51bGxwdHI+CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxFPiYgcmVzdWx0KQog
ICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRSkgPD0gOCwgIkVudW0gdHlwZSBU
IG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUg
bGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVl
OwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKQEAgLTc3LDgg
Kzc4LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gV0FSTl9VTlVTRURfUkVUVVJOCi0gICAgYm9vbCBidWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKICAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3Qg
aGF2ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7CiAKQEAgLTkyLDYgKzkzLDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZURhdGEo
dWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNv
ZGVyJiBkZWNvZGVOdW1iZXIoT3B0aW9uYWw8VHlwZT4mKTsKIAogICAgIGNvbnN0IHVpbnQ4X3Qq
IG1fYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVu
Y29kZXIuY3BwCmluZGV4IDE0ZGQzZjY4Mzg3Li4zMDA3Mjg3NjkxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw3MiAr
NTMsMTYgQEAgdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUKICAgICBzaGExLmFkZEJ5dGVzKGRhdGEs
IHNpemUpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRGF0YShjb25z
dCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICB1cGRhdGVDaGVja3N1bUZvckRh
dGEobV9zaGExLCBkYXRhLCBzaXplKTsKLQogICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6
ZSk7CiAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+Ci1FbmNvZGVyJiBFbmNvZGVyOjplbmNvZGVOdW1iZXIoVHlwZSB2YWx1ZSkKLXsK
LSAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVlKTsKLQot
ICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZW9mKFR5cGUpKTsKLSAgICBtZW1jcHkoYnVm
ZmVyLCAmdmFsdWUsIHNpemVvZihUeXBlKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGJvb2wgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGVuY29k
ZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwodWludDhf
dCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2Rl
ciYgRW5jb2Rlcjo6b3BlcmF0b3I8PCh1aW50MTZfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5j
b2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChpbnQx
Nl90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNv
ZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVpbnQzMl90IHZhbHVlKQotewotICAgIHJldHVybiBl
bmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1FbmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KHVp
bnQ2NF90IHZhbHVlKQotewotICAgIHJldHVybiBlbmNvZGVOdW1iZXIodmFsdWUpOwotfQotCi1F
bmNvZGVyJiBFbmNvZGVyOjpvcGVyYXRvcjw8KGludDMyX3QgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IGVuY29kZU51bWJlcih2YWx1ZSk7Ci19Ci0KLUVuY29kZXImIEVuY29kZXI6Om9wZXJhdG9yPDwo
aW50NjRfdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQot
RW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChmbG9hdCB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
ZW5jb2RlTnVtYmVyKHZhbHVlKTsKLX0KLQotRW5jb2RlciYgRW5jb2Rlcjo6b3BlcmF0b3I8PChk
b3VibGUgdmFsdWUpCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gZW5jb2RlTnVtYmVyKHZh
bHVlKTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAg
ICBlbmNvZGVEYXRhKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNr
c3VtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5o
CmluZGV4IDI3YWQwZDA3ZjY1Li5kOGQ2MTFiM2YwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDQ4ICs0Myw0NSBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVyJiBvcGVyYXRv
cjw8KGNvbnN0IFQmIHQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZf
dDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIEVuY29kZXImIG9wZXJh
dG9yPDwoY29uc3QgRSYgZW51bVZhbHVlKQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgIkVudW0gdHlwZSBtdXN0IG5vdCBiZSBsYXJn
ZXIgdGhhbiA2NCBiaXRzLiIpOwotICAgICAgICByZXR1cm4gKnRoaXMgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHQpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2Yo
dWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7
CisgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90
PihlbnVtVmFsdWUpKSk7CisgICAgICAgIHJldHVybiAqdGhpcyA8PCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oZW51bVZhbHVlKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0
aWM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46
OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgogICAg
IEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKICAgICB7CiAgICAgICAgIENvZGVyPFQ+
OjplbmNvZGUoKnRoaXMsIHQpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwoYm9vbCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDhfdCk7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIEVuY29kZXImIG9wZXJhdG9yPDwodWludDE2X3QpOwotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBFbmNvZGVyJiBvcGVyYXRvcjw8KHVpbnQzMl90KTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRW5jb2RlciYgb3BlcmF0b3I8PCh1aW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIEVuY29kZXImIG9wZXJhdG9yPDwoaW50MTZfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IEVuY29kZXImIG9wZXJhdG9yPDwoaW50MzJfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVu
Y29kZXImIG9wZXJhdG9yPDwoaW50NjRfdCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIEVuY29k
ZXImIG9wZXJhdG9yPDwoZmxvYXQpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBFbmNvZGVyJiBv
cGVyYXRvcjw8KGRvdWJsZSk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBFbmNv
ZGVyJiBvcGVyYXRvcjw8KFQgdmFsdWUpCisgICAgeworICAgICAgICB1cGRhdGVDaGVja3N1bUZv
ck51bWJlcihtX3NoYTEsIHZhbHVlKTsKKyAgICAgICAgZW5jb2RlRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YoVCkpOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQogCiAgICAgY29uc3QgdWludDhfdCogYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1
bUZvck51bWJlcihTSEExJiwgVHlwZSk7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1G
b3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFQpOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwogCiBwcml2
YXRlOgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRW5jb2RlciYgZW5jb2RlTnVtYmVy
KFR5cGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90KTsKIAogICAgIHVpbnQ4X3QqIGdyb3coc2l6ZV90KTsKIAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdHJ1Y3QgU2FsdDsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RydWN0IFNhbHQ7CiAKICAgICBWZWN0b3I8dWludDhfdCwgNDA5Nj4gbV9idWZm
ZXI7CiAgICAgU0hBMSBtX3NoYTE7CkBAIC0xMDIsMTAgKzk5LDEwIEBAIHRlbXBsYXRlIDw+IHN0
cnVjdCBFbmNvZGVyOjpTYWx0PGRvdWJsZT4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gMjk7CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW5jb2Rlcjo6U2FsdDx1aW50OF90Kj4geyBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZhbHVlID0gMTAxOyB9OwogdGVtcGxhdGUgPD4gc3Ry
dWN0IEVuY29kZXI6OlNhbHQ8aW50MTZfdD4geyBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZh
bHVlID0gMTAzOyB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4KLXZvaWQgRW5jb2Rlcjo6
dXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYgc2hhMSwgVHlwZSB2YWx1ZSkKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgordm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEEx
JiBzaGExLCBUIHZhbHVlKQogewotICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PFR5cGU+Ojp2YWx1
ZTsKKyAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDxUPjo6dmFsdWU7CiAgICAgc2hhMS5hZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQp
KTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSks
IHNpemVvZih2YWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IDZiZGNkMTcx
NWU0Li4zZDljYmQ5MjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcApAQCAtMjksNyArMjks
NiBAQAogI2lmIFVTRShDVVJMKQogCiAjaW5jbHVkZSAiT3BlblNTTEhlbHBlci5oIgotI2luY2x1
ZGUgPG9wZW5zc2wvc3NsLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5oCmluZGV4IDE4NWRhZjViNzIwLi40OGZkNWVlODhk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5T
U0xIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3Bl
blNTTEhlbHBlci5oCkBAIC0yNiwxMCArMjYsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ2VydGlmaWNhdGVJbmZvLmgiCi0jaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNkZWZpbmUgT1BF
TlNTTF9OT19TSEEKKyNkZWZpbmUgT1BFTlNTTF9OT19TSEExCisjaW5jbHVkZSA8b3BlbnNzbC9z
c2wuaD4KKwogbmFtZXNwYWNlIE9wZW5TU0wgewogCiBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8+IGNyZWF0ZUNlcnRpZmljYXRlSW5mbyhYNTA5X1NUT1JFX0NUWCopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>