<?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>180169</bug_id>
          
          <creation_ts>2017-11-29 14:57:22 -0800</creation_ts>
          <short_desc>Let&apos;s scramble MacroAssemblerCodePtr values.</short_desc>
          <delta_ts>2017-11-30 15:48:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376052</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-29 14:57:22 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376053</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-29 14:58:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/35758340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376071</commentid>
    <comment_count>2</comment_count>
      <attachid>327915</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-29 15:36:35 -0800</bug_when>
    <thetext>Created attachment 327915
proposed patch.

Let&apos;s test this on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376074</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 15:38:24 -0800</bug_when>
    <thetext>Attachment 327915 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376082</commentid>
    <comment_count>4</comment_count>
      <attachid>327916</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-29 15:56:16 -0800</bug_when>
    <thetext>Created attachment 327916
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376083</commentid>
    <comment_count>5</comment_count>
      <attachid>327916</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-29 15:57:09 -0800</bug_when>
    <thetext>Comment on attachment 327916
proposed patch.

Looks like I need to do more testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376163</commentid>
    <comment_count>6</comment_count>
      <attachid>327939</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-29 17:45:15 -0800</bug_when>
    <thetext>Created attachment 327939
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376171</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 18:05:43 -0800</bug_when>
    <thetext>Attachment 327939 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376197</commentid>
    <comment_count>8</comment_count>
      <attachid>327949</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-29 20:43:59 -0800</bug_when>
    <thetext>Created attachment 327949
proposed patch w/ build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376198</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-29 20:46:44 -0800</bug_when>
    <thetext>Attachment 327949 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376389</commentid>
    <comment_count>10</comment_count>
      <attachid>327992</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 10:39:55 -0800</bug_when>
    <thetext>Created attachment 327992
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376392</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-30 10:43:25 -0800</bug_when>
    <thetext>Attachment 327992 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376394</commentid>
    <comment_count>12</comment_count>
      <attachid>327992</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 10:46:20 -0800</bug_when>
    <thetext>Comment on attachment 327992
proposed patch.

I think I&apos;ve resolved all the issues.  Let&apos;s get a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376406</commentid>
    <comment_count>13</comment_count>
      <attachid>327992</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-11-30 11:11:26 -0800</bug_when>
    <thetext>Comment on attachment 327992
proposed patch.

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

Nice.

&gt; Source/JavaScriptCore/assembler/CodeLocation.h:167
&gt; -    return CodeLocationInstruction(reinterpret_cast&lt;char*&gt;(dataLocation()) + offset);
&gt; +    return CodeLocationInstruction(dataLocation&lt;char*&gt;() + offset);

This is a really great change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376421</commentid>
    <comment_count>14</comment_count>
      <attachid>327992</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-30 11:26:14 -0800</bug_when>
    <thetext>Comment on attachment 327992
proposed patch.

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

Can you get perf numbers?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:322
&gt; +    template&lt;typename T = void*&gt;

Is it useful to have a default here? Adding to void* is fraught with peril, so users of this shouldn&apos;t really get a void* no?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:486
&gt; +    // (I guess on RVTC function pointers have a different constness to GCC/MSVC?)

There&apos;s no C-style cast here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376427</commentid>
    <comment_count>15</comment_count>
      <attachid>327992</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-30 11:30:05 -0800</bug_when>
    <thetext>Comment on attachment 327992
proposed patch.

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

r=me too with some comments

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.cpp:32
&gt; +#include &lt;mutex&gt;

Why is this include needed?

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:219
&gt; +#if USE(JSVALUE64)
&gt; +    jit.load64(&amp;g_masmScrambledPtrKey, GPRInfo::regT1);
&gt; +    jit.xor64(GPRInfo::regT1, GPRInfo::regT4);
&gt; +#endif

Isn&apos;t this value guaranteed to be initialized at this point? Why load instead of just materialize the actual value?
like:
jit.move(TrustedImm64(g_masmScrambledPtrKey), regT1)

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:1168
&gt; +#if USE(JSVALUE64)
&gt; +    jit.load64(&amp;g_masmScrambledPtrKey, GPRInfo::regT1);
&gt; +    jit.xor64(GPRInfo::regT1, GPRInfo::regT0);
&gt; +#endif

ditto

&gt; Source/WTF/wtf/ScrambledPtr.cpp:38
&gt; +    key |= 0x7; // Ensure that any valid pointer ^ key will not be 0.

This comment needs some more explanation. Clearly there are valid pointers that could have these bits set, e.g, char* pointers. I think you perhaps mean something more subtle, where you&apos;re at least aligned passed on 2 byte boundaries? But do x86 code pointers guarantee that?

&gt; Source/WTF/wtf/ScrambledPtr.h:30
&gt; +#define ENABLE_PARANOID_SCRAMBLED_PTR_ASSERTS 0

Why not define to 1 on debug builds at least?

&gt; Source/WTF/wtf/ScrambledPtr.h:60
&gt; +    static void paranoidAssertIsScrambled(T value) { RELEASE_ASSERT(isScrambled(value)); }

I don&apos;t see any reason to prefix this with paranoid. I&apos;d just drop that part of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376429</commentid>
    <comment_count>16</comment_count>
      <attachid>327992</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 11:31:31 -0800</bug_when>
    <thetext>Comment on attachment 327992
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:322
&gt;&gt; +    template&lt;typename T = void*&gt;
&gt; 
&gt; Is it useful to have a default here? Adding to void* is fraught with peril, so users of this shouldn&apos;t really get a void* no?

Yes, we normally want void*.  The template argument is to make it so that the cases that want the bits as another type will get an bitcast so that the client doesn&apos;t need to do the explicit cast.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:486
&gt;&gt; +    // (I guess on RVTC function pointers have a different constness to GCC/MSVC?)
&gt; 
&gt; There&apos;s no C-style cast here?

Oh my ... total cargo cult copying from FunctionPtr(FunctionType* value).  I&apos;ll remove the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376439</commentid>
    <comment_count>17</comment_count>
      <attachid>327992</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 12:00:56 -0800</bug_when>
    <thetext>Comment on attachment 327992
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.cpp:32
&gt;&gt; +#include &lt;mutex&gt;
&gt; 
&gt; Why is this include needed?

For std::call_once().  See http://en.cppreference.com/w/cpp/thread/call_once.

&gt;&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:219
&gt;&gt; +#endif
&gt; 
&gt; Isn&apos;t this value guaranteed to be initialized at this point? Why load instead of just materialize the actual value?
&gt; like:
&gt; jit.move(TrustedImm64(g_masmScrambledPtrKey), regT1)

Thanks for catching this.  Fixed (here and at other places where I do the same thing).

&gt;&gt; Source/WTF/wtf/ScrambledPtr.cpp:38
&gt;&gt; +    key |= 0x7; // Ensure that any valid pointer ^ key will not be 0.
&gt; 
&gt; This comment needs some more explanation. Clearly there are valid pointers that could have these bits set, e.g, char* pointers. I think you perhaps mean something more subtle, where you&apos;re at least aligned passed on 2 byte boundaries? But do x86 code pointers guarantee that?

I&apos;ll beef up the comment.  You are right that this &quot;|= 0x7&quot; is incorrect for x86, and it turns out to be unnecessary as well.  The &quot;|= 1 &lt;&lt; 63&quot; below achieves the same goal, and does so correctly.

&gt;&gt; Source/WTF/wtf/ScrambledPtr.h:30
&gt;&gt; +#define ENABLE_PARANOID_SCRAMBLED_PTR_ASSERTS 0
&gt; 
&gt; Why not define to 1 on debug builds at least?

I think we only need this when debugging the application of ScrambledPtrs to new class of pointers.  Once we&apos;re done with debugging, I think it&apos;s rare to introduce bugs that would be caught by this.  I prefer not to slow down debug build runs unnecessarily.  We can always change our mind about this later if I&apos;m proven wrong about this class of bugs.

&gt;&gt; Source/WTF/wtf/ScrambledPtr.h:60
&gt;&gt; +    static void paranoidAssertIsScrambled(T value) { RELEASE_ASSERT(isScrambled(value)); }
&gt; 
&gt; I don&apos;t see any reason to prefix this with paranoid. I&apos;d just drop that part of it.

OK, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376470</commentid>
    <comment_count>18</comment_count>
      <attachid>328009</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 13:02:46 -0800</bug_when>
    <thetext>Created attachment 328009
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376472</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-30 13:05:19 -0800</bug_when>
    <thetext>Attachment 328009 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376483</commentid>
    <comment_count>20</comment_count>
      <attachid>328014</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 13:29:55 -0800</bug_when>
    <thetext>Created attachment 328014
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376485</commentid>
    <comment_count>21</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-30 13:33:48 -0800</bug_when>
    <thetext>Attachment 328014 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376504</commentid>
    <comment_count>22</comment_count>
      <attachid>328024</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 14:12:31 -0800</bug_when>
    <thetext>Created attachment 328024
x86_64 benchmark results.

Perf appears to be neutral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376583</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-30 15:48:34 -0800</bug_when>
    <thetext>Thanks for the reviews.  Landed in r225363: &lt;http://trac.webkit.org/r225363&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327915</attachid>
            <date>2017-11-29 15:36:35 -0800</date>
            <delta_ts>2017-11-29 15:56:16 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>86926</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMS4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5vdyBzdG9yZXMgYSBTY3Jh
bWJsZWRQdHIgaW5zdGVhZCBvZiBhIHZvaWQqLgorCisgICAgICAgIDIuIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cidzIGV4ZWN1dGFibGVBZGRyZXNzKCkgYW5kIGRhdGFMb2NhdGlvbigpIG5vdyB0YWtl
IGEKKyAgICAgICAgICAgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0
byBjYXN0IHRoZSByZXN1bHQuICBUaGlzIG1ha2VzIHRoZQorICAgICAgICAgICBjbGllbnQgY29k
ZSB0aGF0IHVzZXMgdGhlc2UgZnVuY3Rpb25zIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAg
ICAgICAzLiBDaGFuZ2UgdGhlIGNvZGUgYmFzZSBpbiBnZW5lcmFsIHRvIG1pbmltaXplIHBhc3Np
bmcgdm9pZCogY29kZSBwb2ludGVycyBhcm91bmQuCisgICAgICAgICAgIFdlIG5vdyBwYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZGVzY3JhbWJsZSBp
dCBvbmx5CisgICAgICAgICAgIGF0IHRoZSBsYXN0IG1vbWVudCB3aGVuIHdlIG5lZWQgdGhlIHVu
ZGVybHlpbmcgY29kZSBwb2ludGVyLgorCisgICAgICAgIDQuIEFkZGVkIHNvbWUgTWFzbVNjcmFt
YmxlZFB0ciBwYXJhbm9pZCBhc3NlcnRzIHRoYXQgYXJlIGRpc2FibGVkIChub3QgYnVpbHQpIGJ5
CisgICAgICAgICAgIGRlZmF1bHQuICBJJ20gbGVhdmluZyB0aGVtIGluIGJlY2F1c2UgdGhleSBh
cmUgaW5zdHJ1bWVudGFsIGluIGZpbmRpbmcgYnVncworICAgICAgICAgICB3aGVyZSBub3QgYWxs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMgd2VyZSBub3Qgc2NyYW1ibGVkIGFzIGV4cGVj
dGVkLgorICAgICAgICAgICBJIGV4cGVjdCB0aGVtIHRvIGJlIHVzZWZ1bCBpbiB0aGUgbmVhciBm
dXR1cmUgYXMgd2UgYWRkIG1vcmUgc2NyYW1ibGluZy4KKworICAgICAgICA1LiBBbHNvIGRpc2Fi
bGUgdGhlIGNhc3Rpbmcgb3BlcmF0b3Igb24gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIChleGNlcHQg
Zm9yCisgICAgICAgICAgIGV4cGxpY2l0IGNhc3RzIHRvIGEgYm9vbGVhbikuICBUaGlzIGVuc3Vy
ZXMgdGhhdCBjbGllbnRzIHdpbGwgYWx3YXlzIGV4cGxpY2l0bHkKKyAgICAgICAgICAgdXNlIHNj
cmFtYmxlZEJpdHMoKSBvciBleGVjdXRhYmxlQWRkcmVzcygpIHRvIGdldCBhIHZhbHVlIGJhc2Vk
IG9uIHdoaWNoIHZhbHVlCisgICAgICAgICAgIHRoZXkgYWN0dWFsbHkgbmVlZC4KKworICAgICAg
ICA1LiBBZGRlZCBjdXJyZW50VGhyZWFkKCkgaWQgdG8gdGhlIGxvZ2dpbmcgaW4gTExJbnRTbG93
UGF0aCB0cmFjZSBmdW5jdGlvbnMuCisgICAgICAgICAgIFRoaXMgd2FzIGhlbHBmdWwgd2hlbiBk
ZWJ1Z2dpbmcgdGVzdHMgdGhhdCByYW4gbXVsdGlwbGUgVk1zIGNvbmN1cnJlbnRseSBvbgorICAg
ICAgICAgICBkaWZmZXJlbnQgdGhyZWFkcy4KKworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbiA2NC1iaXQgYnVpbGRzIChpbmNsdWRpbmcgdGhl
CisgICAgICAgIENMb29wKS4gIEl0IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIDMyLWJpdCBiZWNh
dXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5CisgICAgICAgIHRvIHJlYWQgYSBnbG9i
YWwgdmFyaWFibGUgZnJvbSAzMi1iaXQgTExJbnQgY29kZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29k
ZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6aW5zdHJ1Y3Rp
b25BdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxBdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6anVtcEF0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpjYWxsQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbFB0ckF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWwzMkF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGluayk6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OnBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpl
eGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJldHVybkFkZHJlc3NQdHI6
OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OnNjcmFtYmxlZFB0ciBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZXhlY3V0YWJsZUFkZHJl
c3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmRhdGFMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlck1hY3Jv
cy5jcHA6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJ
bnRlcnByZXRlcik6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxp
bmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hh
clN0cmluZ0p1bXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxl
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYpOgorICAgICAgICAqIGZ0bC9GVExD
b21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0aElDKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0TWF0aElDRmFzdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ1Nsb3cpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZVdpdGhDb2Rl
UmVmOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpvZmZzZXRPZik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6
CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAg
ICAgKiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwOgorICAgICAgICAoSlNDOjpQQ1RvQ29kZU9y
aWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXApOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKToKKyAgICAgICAgKiBqaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAg
ICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxlZTo6ZW50cnlwb2ludCBjb25zdCk6CisgICAgICAgICogd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSk6CisKIDIwMTctMTEtMjkgIE1hdHQgTGV3aXMg
IDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjI1Mjg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzAsNyArODMwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBhLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGIpCiAgICAgewotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KGIuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBy
ZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oYS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgcmV0dXJuIGIuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpIC0gYS5leGVjdXRhYmxl
QWRkcmVzczxwdHJkaWZmX3Q+KCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQo
KSB7IHJldHVybiBtX2Fzc2VtYmxlci5kZWJ1Z09mZnNldCgpOyB9CkBAIC04NTIsNiArODUyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFi
ZWwsIHZhbHVlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBj
b2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWwsIHZh
bHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkKiBnZXRM
aW5rZXJBZGRyZXNzKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGxhYmVsKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmdldFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgbGFi
ZWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2Nh
dGlvbi5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NCw1NSArMTY0LDU1IEBAIHB1Ymxp
YzoKIGlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omlu
c3RydWN0aW9uQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9P
RkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4g
Q29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24oZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsK
IH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsIENvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxB
dE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZz
ZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJl
bChkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0
aW9uSnVtcCBDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KQogewog
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9j
YXRpb25KdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsg
b2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkNhbGwgQ29kZUxvY2F0aW9uQ29tbW9u
OjpjYWxsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChyZWludGVycHJldF9jYXN0
PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRp
b25DYWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2Rl
TG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQoaW50
IG9mZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RF
X09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25OZWFyQ2FsbChyZWludGVy
cHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQsIGNhbGxNb2RlKTsKKyAg
ICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zm
c2V0LCBjYWxsTW9kZSk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgQ29k
ZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAg
IEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsg
b2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKGRhdGFMb2NhdGlv
bjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwz
MiBDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsK
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkp
ICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIoZGF0YUxvY2F0
aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJl
bENvbXBhY3QgQ29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50
IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRh
TGFiZWxDb21wYWN0KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGlu
ZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9m
ZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZlcjo6Zmlu
YWxpemUKICAgICB2YV9lbmQoYXJnTGlzdCk7CiAgICAgb3V0LnByaW50ZigiOlxuIik7CiAKLSAg
ICBvdXQucHJpbnRmKCIgICAgQ29kZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnRmKCIgICAgQ29k
ZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVz
dWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHJlc3VsdC5zaXplKCkpOwog
ICAgIAogICAgIENTdHJpbmcgaGVhZGVyID0gb3V0LnRvQ1N0cmluZygpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9u
IDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGxpbmsoQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
ICAgICB7Ci0gICAgICAgIGxpbmsoY2FsbCwgRnVuY3Rpb25QdHIobGFiZWwuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOworICAgICAgICBsaW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGxhYmVsKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgbGluayhKdW1wIGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVs
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdGNoKERhdGFMYWJlbFB0
ciBsYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgdmFsdWUpCiAgICAgewogICAgICAgICBBc3NlbWJs
ZXJMYWJlbCB0YXJnZXQgPSBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFyZ2V0LCB2YWx1ZS5leGVjdXRhYmxl
QWRkcmVzcygpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwg
dGFyZ2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0
byBvYnRhaW4gaGFuZGxlcyB0byBhbGxvdyB0aGUgY29kZSB0byBiZSByZWxpbmtlZCAvIHJlcGF0
Y2hlZCBsYXRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw5ICsyOSwyMCBAQAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNs
dWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJs
ZWRQdHJLZXk7CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICBnX21hc21TY3JhbWJs
ZWRQdHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihP
cGNvZGVJRCBjb2RlSWQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNp
b24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UiBjaGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBhbmQgdGhhdCBpdCBpcyBh
IHZhbGlkCkBAIC01MCw2ICs1MSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3VzaW5n
IE1hc21TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8Z19tYXNtU2NyYW1ibGVkUHRyS2V5PjsK
KworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworCiBlbnVtIE9wY29kZUlEIDogdW5zaWdu
ZWQ7CiAKIC8vIEZ1bmN0aW9uUHRyOgpAQCAtNTgsMTUgKzY1LDEzIEBAIGVudW0gT3Bjb2RlSUQg
OiB1bnNpZ25lZDsKIC8vIChwYXJ0aWN1bGFybHksIHRoZSBzdHViIGZ1bmN0aW9ucykuCiBjbGFz
cyBGdW5jdGlvblB0ciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25QdHIoKQotICAgICAgICA6IG1f
dmFsdWUoMCkKLSAgICB7Ci0gICAgfQorICAgIEZ1bmN0aW9uUHRyKCkgeyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTc0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVl
KShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0K
IApAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgq
dmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90
U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1f
dmFsdWUpOwogICAgIH0KIApAQCAtODgsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNT
RVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTk1LDYgKzEwMyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMs
IGFyZ1R5cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIApAQCAtMTA5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQs
IGFyZ1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBzZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRp
ZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGFzCkBAIC0xMTksNiArMTMwLDcgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAg
cHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlw
ZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEz
Myw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wg
KnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTE0MCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0x
NDcsNiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNM
ICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE1Nyw2ICsx
NzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTE2NCw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFT
VENBTEwgKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUp
CiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIApAQCAtMTcxLDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0
cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAg
ICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVk
UHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTc4LDYgKzE5Nyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIs
IGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGljOgogICAgICAgICAv
LyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJlbnQgY29u
c3RuZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0g
ICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgZXhwbGljaXQgRnVuY3Rpb25QdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKIAorICAgIHZv
aWQqIHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFu
b2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVl
OworICAgIH0KKyAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCogbV92YWx1ZTsKKyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0
dXJuQWRkcmVzc1B0cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlz
IHRoZSBzb3VyY2Ugb2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0
ciB7CiBwdWJsaWM6Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgw
KQotICAgIHsKLSAgICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRy
IGZ1bmN0aW9uKQogICAgICAgICA6IG1fdmFsdWUoZnVuY3Rpb24udmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92
YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAg
fQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgdm9p
ZCogdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5v
aWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
IHsKQEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQqIG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07CiAKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgyLDcgQEAgcHJpdmF0ZToKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0byB3cmFwIHBvaW50ZXJzIHRvIEpJ
VCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB7CiBwdWJsaWM6
Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAg
ewotICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSB7IH0KIAogICAgIGV4cGxpY2l0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkKICNpZiBDUFUoQVJNX1RIVU1CMikK
QEAgLTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
I2VuZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQo
KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCiAgICAgeworICAg
ICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZh
bHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1i
bGVkUHRyKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1Nj
cmFtYmxlZCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjc3LDI0ICsz
MTIsNjIgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVChyYS52YWx1ZSgpKTsKKyAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2Vy
dElzU2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+Cisg
ICAgVCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLnBh
cmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3Zh
bHVlLmRlc2NyYW1ibGU8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgIH0KICNpZiBDUFUo
QVJNX1RIVU1CMikKICAgICAvLyBUbyB1c2UgdGhpcyBwb2ludGVyIGFzIGEgZGF0YSBhZGRyZXNz
IHJlbW92ZSB0aGUgZGVjb3JhdGlvbi4KLSAgICB2b2lkKiBkYXRhTG9jYXRpb24oKSBjb25zdCB7
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihtX3ZhbHVlKSAtIDE7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9p
ZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92YWx1ZS5w
YXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/
IG1fdmFsdWUuZGVzY3JhbWJsZTxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKKyAgICB9CiAjZWxz
ZQotICAgIHZvaWQqIGRhdGFMb2NhdGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ID0gdm9pZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92
YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5k
ZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoUEFSQU5PSURfU0NSQU1C
TEVEX1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmIGlzRGVsZXRl
ZFZhbHVlKCkpCisgICAgICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQo
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gIW1fdmFsdWU7CisgICAgfQorICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhKCEqdGhpcyk7IH0KICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QK
ICAgICB7CisjaWYgRU5BQkxFKFBBUkFOT0lEX1NDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyAgICAg
ICAgaWYgKCFpc0VtcHR5VmFsdWUoKSAmJiBpc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAgICAgICAg
bV92YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisjZW5kaWYKICAgICAgICAgcmV0
dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKICAgICB9CiAKKyAgICAvLyBEaXNhbGxvdyBh
bnkgY2FzdGluZyBvcGVyYXRpb25zIChleGNlcHQgZm9yIGJvb2xlYW5zKS4gSW5zdGVhZCwgdGhl
IGNsaWVudAorICAgIC8vIHNob3VsZCBiZSBhc2tpbmcgZm9yIHNjcmFtYmxlZFB0cigpIG9yIGV4
ZWN1dGFibGVBZGRyZXNzKCkgZXhwbGljaXRseS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWU+
PgorICAgIG9wZXJhdG9yIFQoKSA9IGRlbGV0ZTsKKwogICAgIHZvaWQgZHVtcFdpdGhOYW1lKGNv
bnN0IGNoYXIqIG5hbWUsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKQEAgLTMwNCwyNCArMzc3LDI0IEBAIHB1Ymxp
YzoKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoRW1wdHlWYWx1ZVRhZykKICAgICAg
ICAgOiBtX3ZhbHVlKGVtcHR5VmFsdWUoKSkKLSAgICB7Ci0gICAgfQorICAgIHsgfQogICAgIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihEZWxldGVkVmFsdWVUYWcpCiAgICAgICAgIDogbV92
YWx1ZShkZWxldGVkVmFsdWUoKSkKLSAgICB7Ci0gICAgfQorICAgIHsgfQogICAgIAogICAgIGJv
b2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBlbXB0eVZhbHVlKCk7
IH0KICAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBk
ZWxldGVkVmFsdWUoKTsgfQotICAgIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX3ZhbHVlKTsgfQorCisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IHsgcmV0dXJuIFB0ckhhc2g8dWludHB0cl90Pjo6aGFzaChtX3ZhbHVlLnNjcmFtYmxl
ZEJpdHMoKSk7IH0KKworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgdm9pZCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpKTsgfQotICAgIHN0YXRpYyB2b2lkKiBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigyKSk7IH0KLSAgICAKLSAgICB2b2lkKiBtX3ZhbHVlOworICAgIHN0YXRpYyBNYXNtU2NyYW1i
bGVkUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBNYXNtU2NyYW1ibGVkUHRyKDEpOyB9CisgICAg
c3RhdGljIE1hc21TY3JhbWJsZWRQdHIgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFt
YmxlZFB0cigyKTsgfQorCisgICAgTWFzbVNjcmFtYmxlZFB0ciBtX3ZhbHVlOwogfTsKIAogc3Ry
dWN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckhhc2ggewpAQCAtNDA1LDYgKzQ3OCwxNiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBtX2V4ZWN1dGFibGVNZW1v
cnk7CiB9OwogCitpbmxpbmUgRnVuY3Rpb25QdHI6OkZ1bmN0aW9uUHRyKE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBwdHIpCisgICAgLy8gVXNpbmcgYSBDLWN0eWxlIGNhc3QgaGVyZSB0byBhdm9pZCBj
b21waWxlciBlcnJvciBvbiBSVlRDOgorICAgIC8vIEVycm9yOiAgIzY5NDogcmVpbnRlcnByZXRf
Y2FzdCBjYW5ub3QgY2FzdCBhd2F5IGNvbnN0IG9yIG90aGVyIHR5cGUgcXVhbGlmaWVycworICAg
IC8vIChJIGd1ZXNzIG9uIFJWVEMgZnVuY3Rpb24gcG9pbnRlcnMgaGF2ZSBhIGRpZmZlcmVudCBj
b25zdG5lc3MgdG8gR0NDL01TVkM/KQorICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSkKK3sKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOworICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGluZGV4KTsKLSAgICAgICAgICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMrKzsKKyAgICAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwogICAgICAgICAgICAgICAg
IC8vIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBoYXZlIHRvIGNsb2JiZXIgbWFjcm8gcmVnaXN0ZXJz
IG9uIFg4Nl82NC4gVGhpcyBpcyBwcm9iYWJseQogICAgICAgICAgICAgICAgIC8vIE9LIHRob3Vn
aC4KICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC01MDUsMTAgKzUwNSwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5k
ZXggPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNj
cmF0Y2goMSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoJmdfbWFzbVNj
cmFtYmxlZFB0cktleSwgZGVzY3JhbWJsZXJLZXkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYWJsZSksIHNjcmF0Y2gp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoQ0NhbGxIZWxwZXJzOjpCYXNlSW5k
ZXgoc2NyYXRjaCwgaW5kZXgsIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxs
SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRy
KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC54b3I2NChkZXNjcmFt
YmxlcktleSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcChzY3Jh
dGNoKTsKKwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgbGFiZWxzIGFyZSBndWFy
YW50ZWVkIHRvIGJlIHBvcHVsYXRlZCBiZWZvcmUgZWl0aGVyIGxhdGUgcGF0aHMgb3IKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGxpbmsgdGFza3MgcnVuLgogICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0gcGFyYW1zLnN1
Y2Nlc3NvckxhYmVscygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAwNyw3ICsxMzAwNyw3IEBAIHZvaWQgdGVzdEludGVycHJldGVy
KCkKICAgICBwb2x5SnVtcC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CiAgICAgcG9seUp1bXAt
PmFwcGVuZFNvbWVSZWdpc3RlcihvcGNvZGUpOwogICAgIHBvbHlKdW1wLT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgcG9seUp1bXAtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycysrOworICAgIHBvbHlKdW1wLT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAy
OwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0
YVBvaW50ZXIpKTsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9j
ayhhZGRUb0NvZGVQb2ludGVyKSk7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVx
dWVudGVkQmxvY2soYWRkVG9EYXRhKSk7CkBAIC0xMzAyOSw5ICsxMzAyOSwxNSBAQCB2b2lkIHRl
c3RJbnRlcnByZXRlcigpCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIqIGp1bXBU
YWJsZSA9IGJpdHdpc2VfY2FzdDxNYWNyb0Fzc2VtYmxlckNvZGVQdHIqPigKICAgICAgICAgICAg
ICAgICBwYXJhbXMucHJvYygpLmFkZERhdGFTZWN0aW9uKHNpemVvZihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIpICogbGFiZWxzLnNpemUoKSkpOwogCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0g
ICAgICAgICAgICBqaXQuanVtcChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChwYXJhbXMuZ3BTY3Jh
dGNoKDApLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSkpOwotICAg
ICAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2go
MCk7CisgICAgICAgICAgICBHUFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNo
KDEpOworCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
anVtcFRhYmxlKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQubG9hZDY0KCZnX21hc21TY3Jh
bWJsZWRQdHJLZXksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgcGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBl
cnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGppdC54b3I2NChkZXNjcmFt
YmxlcktleSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQuanVtcChzY3JhdGNoKTsKKwogICAg
ICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgIFsmLCBqdW1wVGFibGUs
IGxhYmVsc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGFiZWxzLnNpemUoKTsgaS0tOykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNh
c3NlbWJseShQcmludAogICAgIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0ID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHByZXZpb3VzTGFiZWwpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxp
bmtCdWZmZXIubG9jYXRpb25PZihjdXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBj
dXJyZW50TGFiZWw7Ci0gICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVuZC5leGVj
dXRhYmxlQWRkcmVzcygpKSA+PSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdGFydC5leGVjdXRh
YmxlQWRkcmVzcygpKSk7Ci0gICAgZGlzYXNzZW1ibGUoc3RhcnQsIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGVuZC5leGVjdXRhYmxlQWRkcmVzcygpKSAtIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBwcmVmaXhCdWZmZXIuZ2V0KCksIG91dCk7Cisg
ICAgQVNTRVJUKGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpKTsKKyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5k
LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
PHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBA
QCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgCiAgICAgZm9y
IChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZv
ID0gKnJlY29yZC5pbmZvOwotICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxs
LCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNv
cmQuc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtKCktPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAg
ICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJl
Y29yZC5zbG93Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC01MjUsOSArNTI1LDkgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAKICAgICBtX2ppdENvZGUt
PnNocmlua1RvRml0KCk7CiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6
TGF0ZVNocmluayk7Ci0gICAgCi0gICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxBcml0eUZpeHVw
LCBGdW5jdGlvblB0cigodm0oKS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICAKKworICAgIGxpbmtCdWZmZXItPmxpbmso
bV9jYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIodm0oKS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVw
R2VuZXJhdG9yKS5jb2RlKCkpKTsKKwogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2YobV9hcml0eUNoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyOSw4ICsy
MDI5LDggQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSQogICAgIGRv
dWJsZSBhc0RvdWJsZSA9IHZhbHVlLmFzRG91YmxlKCk7CiAgICAgaW50MzJfdCBhc0ludDMyID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUpOwogICAgIGlmIChhc0RvdWJsZSA9PSBhc0lu
dDMyKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHRhYmxlLmN0aUZvclZhbHVl
KGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
aGFyKj4odGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0
dXJuIHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
OworICAgIHJldHVybiB0YWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
OwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCB0YWJsZUluZGV4LCBKU1N0cmluZyogc3RyaW5nKQpAQCAtMjAzOCw3
ICsyMDM4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihleGVjLT5jb2RlQmxv
Y2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpLmN0aUZvclZhbHVlKHN0cmlu
Zy0+dmFsdWUoZXhlYykuaW1wbCgpKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICByZXR1cm4g
ZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlG
b3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCk7CiB9CiAKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdB
bmRHZXRCcmFuY2hPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNT
dHJpbmcqIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc3MSw3
ICs5NzcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKLSAgICBTd2l0Y2hEYXRh
KiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKQorICAgIFN3aXRjaERhdGEqIGRh
dGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBkZXNjcmFtYmxlcktleVNj
cmF0Y2gpCiB7CiAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygp
LT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgdGFibGUuZW5z
dXJlQ1RJVGFibGUoKTsKQEAgLTk3NzksOCArOTc3OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0U3dpdGNoSW50SnVtcCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZz
ZXRzLnNpemUoKSkpLAogICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAgVU5V
U0VEX1BBUkFNKGRlc2NyYW1ibGVyS2V5U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBi
dWlsZC4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0LmxvYWQ2NCgmZ19tYXNtU2NyYW1i
bGVkUHRyS2V5LCBkZXNjcmFtYmxlcktleVNjcmF0Y2gpOworI2VuZGlmCiAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHRhYmxlLmN0aU9mZnNldHMuYmVnaW4oKSksIHNjcmF0Y2gpOwogICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoLCB2YWx1ZSwgSklU
Q29tcGlsZXI6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIG1faml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5U2NyYXRjaCwgc2NyYXRjaCk7CisjZW5k
aWYKICAgICBtX2ppdC5qdW1wKHNjcmF0Y2gpOwogICAgIGRhdGEtPmRpZFVzZUp1bXBUYWJsZSA9
IHRydWU7CiB9CkBAIC05NzkxLDcgKzk3OTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoSW1tKE5vZGUqCiAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWUu
Z3ByKCksIHRlbXAuZ3ByKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7Cisg
ICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVlLmdwcigpLCB0ZW1wLmdwcigpLCB0
ZW1wMi5ncHIoKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC05Nzk5LDE1ICs5ODA4LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0oTm9kZSoKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwogICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaCA9IHRlbXAuZ3ByKCk7Ci0gICAgICAgIAorICAgICAgICBHUFJSZWcgc2NyYXRjaDIg
PSB0ZW1wMi5ncHIoKTsKKwogICAgICAgICB2YWx1ZS51c2UoKTsKICAgICAgICAgCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50ID0gbV9qaXQuYnJh
bmNoNjQoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmVsb3csIHZhbHVlUmVncy5ncHIoKSwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1
bXAoZGF0YSwgdmFsdWVSZWdzLmdwcigpLCBzY3JhdGNoKTsKKyAgICAgICAgZW1pdFN3aXRjaElu
dEp1bXAoZGF0YSwgdmFsdWVSZWdzLmdwcigpLCBzY3JhdGNoLCBzY3JhdGNoMik7CiAgICAgICAg
IG5vdEludC5saW5rKCZtX2ppdCk7CiAgICAgICAgIGFkZEJyYW5jaCgKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q2NCgKQEAgLTk4MjAsNyArOTgzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSoKICNlbHNlCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdEludCA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCB2YWx1ZVJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
OwotICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCBzY3JhdGNoKTsKKyAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogICAgICAgICBub3RJbnQubGluaygmbV9q
aXQpOwogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAg
LTk4NDQsNyArOTg1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9k
ZSoKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKAot
ICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpCisgICAg
U3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNj
cmF0Y2gyKQogewogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCkBAIC05
ODc1LDcgKzk4ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhclN0cmlu
CiAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWUpLCBzY3JhdGNo
KTsKICAgICAKICAgICByZWFkeS5saW5rKCZtX2ppdCk7Ci0gICAgZW1pdFN3aXRjaEludEp1bXAo
ZGF0YSwgc2NyYXRjaCwgdmFsdWUpOworICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHNjcmF0
Y2gsIHZhbHVlLCBzY3JhdGNoMik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hDaGFyKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEpCkBAIC05ODg0LDE0ICs5ODk1LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICBjYXNlIFN0
cmluZ1VzZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgCisg
ICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKwogICAgICAgICBHUFJSZWcgb3AxR1BS
ID0gb3AxLmdwcigpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAg
ICAgIAorICAgICAgICBHUFJSZWcgdGVtcDJHUFIgPSB0ZW1wMi5ncHIoKTsKKwogICAgICAgICBv
cDEudXNlKCk7CiAKICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBvcDFH
UFIpOwotICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxR1BSLCB0ZW1w
R1BSKTsKKyAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQUiwgdGVt
cEdQUiwgdGVtcDJHUFIpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC05ODk5LDE3ICs5OTEyLDE5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIAorICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVn
cyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3By
KCk7Ci0gICAgICAgIAorICAgICAgICBHUFJSZWcgdGVtcDJHUFIgPSB0ZW1wMi5ncHIoKTsKKwog
ICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAg
IAogICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXls
b2FkR1BSKCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAotICAgICAgICBl
bWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBH
UFIpOworICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxUmVncy5wYXls
b2FkR1BSKCksIHRlbXBHUFIsIHRlbXAyR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODU4LDkgKzI4NTgsOSBAQCBwdWJsaWM6CiAgICAgICAg
IEJhc2ljQmxvY2sqIHRhcmdldDsKICAgICB9OwogICAgIAotICAgIHZvaWQgZW1pdFN3aXRjaElu
dEp1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOworICAgIHZv
aWQgZW1pdFN3aXRjaEludEp1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNj
cmF0Y2gsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCBlbWl0U3dpdGNoSW1tKE5vZGUqLCBT
d2l0Y2hEYXRhKik7Ci0gICAgdm9pZCBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoU3dpdGNoRGF0
YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOworICAgIHZvaWQgZW1pdFN3aXRjaENo
YXJTdHJpbmdKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBH
UFJSZWcgc2NyYXRjaDIpOwogICAgIHZvaWQgZW1pdFN3aXRjaENoYXIoTm9kZSosIFN3aXRjaERh
dGEqKTsKICAgICB2b2lkIGVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAogICAgICAgICBT
d2l0Y2hEYXRhKiwgY29uc3QgVmVjdG9yPFN0cmluZ1N3aXRjaENhc2U+JiwgdW5zaWduZWQgbnVt
Q2hlY2tlZCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgZGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2QKICAgICBpZiAodHJ5VG9EaXNhc3NlbWJsZShjb2RlUHRyLCBzaXplLCBwcmVmaXgsIG91
dCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5
IG5vdCBhdmFpbGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKSArIHNpemUpOworICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWls
YWJsZSBmb3IgcmFuZ2UgJXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgKyBzaXplKTsKIH0KIAog
bmFtZXNwYWNlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURp
czg2RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMyArMzcsMTMgQEAgYm9vbCB0cnlUb0Rp
c2Fzc2VtYmxlV2l0aFVEaXM4Nihjb25zdCBNYQogewogICAgIHVkX3QgZGlzYXNzZW1ibGVyOwog
ICAgIHVkX2luaXQoJmRpc2Fzc2VtYmxlcik7Ci0gICAgdWRfc2V0X2lucHV0X2J1ZmZlcigmZGlz
YXNzZW1ibGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpKSwgc2l6ZSk7CisgICAgdWRfc2V0X2lucHV0X2J1ZmZlcigmZGlzYXNzZW1ibGVy
LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzPHVuc2lnbmVkIGNoYXIqPigpLCBzaXplKTsKICNp
ZiBDUFUoWDg2XzY0KQogICAgIHVkX3NldF9tb2RlKCZkaXNhc3NlbWJsZXIsIDY0KTsKICNlbHNl
CiAgICAgdWRfc2V0X21vZGUoJmRpc2Fzc2VtYmxlciwgMzIpOwogI2VuZGlmCi0gICAgdWRfc2V0
X3BjKCZkaXNhc3NlbWJsZXIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOworICAgIHVkX3NldF9wYygmZGlzYXNzZW1ibGVyLCBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7CiAgICAgdWRfc2V0X3N5bnRheCgmZGlzYXNz
ZW1ibGVyLCBVRF9TWU5fQVRUKTsKICAgICAKICAgICB1aW50NjRfdCBjdXJyZW50UEMgPSBkaXNh
c3NlbWJsZXIucGM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4ICsxNTIsOCBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlCiAgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1Rv
Q29kZU9yaWdpbk1hcHBpbmcoKSkKICAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdp
bk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29k
ZUxpbmtCdWZmZXIpKTsKIAotICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gYml0d2lzZV9j
YXN0PEdlbmVyYXRlZEZ1bmN0aW9uPigKLSAgICAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVM
aW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSkpOwor
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5r
QnVmZmVyLT5sb2NhdGlvbk9mKHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CisgICAg
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbC5leGVjdXRhYmxlQWRkcmVzczxHZW5lcmF0
ZWRGdW5jdGlvbj4oKTsKICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQjNCeXByb2R1Y3Rz
KHN0YXRlLnByb2MtPnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogCiAgICAgZm9yIChhdXRvIHBhaXIg
OiBzdGF0ZS5ncmFwaC5tX2VudHJ5cG9pbnRJbmRleFRvQ2F0Y2hCeXRlY29kZU9mZnNldCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAy
MjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIEpJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRk
cmVzc0ZvckNhbGwKIAogdm9pZCogSklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2Fk
ZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworICAgIHJldHVybiBt
X2FkZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgb2Zmc2V0OwogfQog
CiB2b2lkKiBKSVRDb2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcg
KzE3MCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25z
dHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJp
dHlDaGVjayk7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRp
b25IYW5kbGVyRnJvbUNhbGxlckZyYW1lLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxl
ckZyYW1lKTsKLSAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1
bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJp
dHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtLmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikp
LmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBD
b2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0
aW9uKSkpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODIyLDcgKzE4MjIsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aEVuZCA9IGppdC5sYWJlbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlv
bk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRo
RW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihz
bG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC0xODM2LDcgKzE4MzYsNyBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgICAgICAgICAgICAgIGF1dG8gaW5s
aW5lRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5k
KS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVFbmQpLmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0
YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgICAgICAgICAgICAgbWF0
aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAgICAgICAgICAgfSk7CiAj
ZW5kaWYKQEAgLTE5MTUsNyArMTkxNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1BVEhfSUNf
U1RBVFMpCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRW5kID0gaml0Lmxh
YmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRo
RW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVy
LmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
c2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXpl
OwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAjZW5kaWYKQEAgLTE5MjksNyArMTkyOSw3
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgICAgICAgICAgICAg
YXV0byBpbmxpbmVFbmQgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlu
a1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihp
bmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtC
dWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGlu
ZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
aW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICAgICAgICAg
ICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICAgICAgICAgICAg
ICB9KTsKICNlbmRpZgpAQCAtNjc1NSw3ICs2NzU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVu
Y3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkp
OwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlv
bnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1
ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAgLTcwNjYsNyArNzA2Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtD
YWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwg
RnVuY3Rpb25QdHIobGlua0NhbGwpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSks
CkBAIC03MzM3LDcgKzczMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5r
Q2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0
Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93Q2FsbCkpLApAQCAtNzYyMCw3
ICs3NjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlv
bnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1
ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUg
T3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAgICAgLy8gdGhlIExMSW50IGNvZGUg
Zm9yIHRoZSBvcGNvZGUgKHNlZSB0aGUgRU1CRURfT1BDT0RFX0lEX0lGX05FRURFRCBtYWNybwog
ICAgIC8vIGluIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwKS4KICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGNvZGUpKTsKLSAgICBpbnQz
Ml90KiBvcGNvZGVJREFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihjb2RlUHRy
LmRhdGFMb2NhdGlvbigpKSAtIDE7CisgICAgaW50MzJfdCogb3Bjb2RlSURBZGRyZXNzID0gY29k
ZVB0ci5kYXRhTG9jYXRpb248aW50MzJfdCo+KCkgLSAxOwogICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KCpvcGNvZGVJREFkZHJlc3MpOwogICAgIEFTU0VSVChv
cGNvZGVJRCA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMpOwogICAgIHJldHVybiBvcGNvZGVJRDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2
aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIEpJVDo6
ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CiAgICAgYXV0byBpbmxpbmVFbmQgPSBsYWJlbCgpOwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVz
cygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3Rh
cnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4o
KTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7
CiAjZW5kaWYKQEAgLTc4OSw3ICs3ODksNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklU
QmluYXJ5TWF0aElDCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgYXV0byBpbmxpbmVF
bmQgPSBsYWJlbCgpOwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxp
bmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElD
LT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTgyOSw3
ICs4MjksNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8CiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgYXV0byBzbG93UGF0aEVuZCA9IGxhYmVsKCk7CiAg
ICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHNp
emVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93
UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhl
Y3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhT
dGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5l
cmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgIH0pOwogI2VuZGlmCkBAIC04OTUsNyArODk1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQwogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBsYWJlbCgpOwogICAgIGFkZExp
bmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICBzaXplX3Qgc2l6
ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9j
YXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6
ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVB
ZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29k
ZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNywyMCArMTI3
LDIwIEBAIEpJVENvZGVXaXRoQ29kZVJlZjo6fkpJVENvZGVXaXRoQ29kZVJlZigKIHZvaWQqIEpJ
VENvZGVXaXRoQ29kZVJlZjo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVmKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0Owor
ICAgIHJldHVybiBtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgKyBvZmZz
ZXQ7CiB9CiAKIHZvaWQqIEpJVENvZGVXaXRoQ29kZVJlZjo6ZGF0YUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVmKTsKICAgICBBU1NFUlQo
b2Zmc2V0IDw9IHNpemUoKSk7IC8vIHVzZSA8PSBpbnN0ZWFkIG9mIDwgYmVjYXVzZSBpdCBpcyB2
YWxpZCB0byBhc2sgZm9yIGFuIGFkZHJlc3MgYXQgdGhlIGV4Y2x1c2l2ZSBlbmQgb2YgdGhlIGNv
ZGUuCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fcmVmLmNvZGUoKS5kYXRh
TG9jYXRpb24oKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIG1fcmVmLmNvZGUoKS5kYXRhTG9jYXRp
b248Y2hhcio+KCkgKyBvZmZzZXQ7CiB9CiAKIHVuc2lnbmVkIEpJVENvZGVXaXRoQ29kZVJlZjo6
b2Zmc2V0T2Yodm9pZCogcG9pbnRlckludG9Db2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
cmVmKTsKLSAgICBpbnRwdHJfdCByZXN1bHQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihw
b2ludGVySW50b0NvZGUpIC0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9yZWYuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIGludHB0cl90IHJlc3VsdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXJJbnRvQ29kZSkgLSBtX3JlZi5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3M8aW50cHRyX3Q+KCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludHB0cl90Pihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVzdWx0KSkgPT0gcmVzdWx0KTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBEaXNh
c3NlbWJseShQcgogewogICAgIENvZGVMb2NhdGlvbkxhYmVsIGZyb21Mb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihmcm9tKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCB0b0xvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHRvKTsKLSAgICBkaXNhc3NlbWJsZShmcm9tTG9jYXRp
b24sIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRvTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KSkgLSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihmcm9tTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSksICIgICAgICAgICIsIG91dCk7CisgICAgZGlzYXNzZW1ibGUoZnJvbUxvY2F0aW9uLCB0
b0xvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIGZyb21Mb2NhdGlvbi5l
eGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksICIgICAgICAgICIsIG91dCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29k
ZU9yaWdpbk1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
Q1RvQ29kZU9yaWdpbk1hcC5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwNCw4ICsy
MDQsOCBAQCBQQ1RvQ29kZU9yaWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXAoUENUCiAgICAgICAg
ICAgICBjb2RlT3JpZ2luQ29tcHJlc3Nvci53cml0ZTx1aW50cHRyX3Q+KGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgfTsKIAotICAgIG1f
cGNSYW5nZVN0YXJ0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlv
bk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2VzLmZpcnN0KCkuc3RhcnQpLmRhdGFMb2NhdGlvbigpKTsK
LSAgICBtX3BjUmFuZ2VFbmQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoYnVpbGRlci5tX2NvZGVSYW5nZXMubGFzdCgpLmVuZCkuZGF0YUxvY2F0aW9uKCkp
OworICAgIG1fcGNSYW5nZVN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9j
b2RlUmFuZ2VzLmZpcnN0KCkuc3RhcnQpLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCk7CisgICAg
bV9wY1JhbmdlRW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2Vz
Lmxhc3QoKS5lbmQpLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCk7CiAgICAgbV9wY1JhbmdlRW5k
IC09IDE7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVpbGRlci5tX2NvZGVSYW5n
ZXMuc2l6ZSgpOyBpKyspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNyBAQCB2b2lkIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChDb2RlQmxvY2sqCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcygKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICBrZXkgPSBrZXkud2l0aENhbGxUYXJnZXQobmV3Q2FsbGVlRnVuY3Rpb24uZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7Ci0gICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uID0gRnVuY3Rpb25QdHIoCi0gICAg
ICAgICAgICB0aHVua3MuZ2V0U2xvd1BhdGhDYWxsVGh1bmsoa2V5KS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uID0gRnVuY3Rpb25QdHIodGh1
bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKGtleSkuY29kZSgpKTsKICAgICB9CiAjZWxzZSAvLyBF
TkFCTEUoRlRMX0pJVCkKICAgICBVTlVTRURfUEFSQU0oY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIy
NTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTItMjAxNCwgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE2LDYgKzIxNiwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNCiAgICAgCiAgICAgLy8gTWFrZSBh
IHRhaWwgY2FsbC4gVGhpcyB3aWxsIHJldHVybiBiYWNrIHRvIEpJVCBjb2RlLgogICAgIEpTSW50
ZXJmYWNlSklUOjpMYWJlbCBjYWxsQ29kZShqaXQubGFiZWwoKSk7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBqaXQubG9hZDY0KCZnX21hc21TY3JhbWJsZWRQdHJLZXksIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKKyNlbmRp
ZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKICAgICBp
ZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewogICAgICAgICBqaXQucHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKQEAgLTExNTgsNiArMTE2MiwxMCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRl
c3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBqaXQubG9hZDY0KCZnX21hc21TY3JhbWJsZWRQdHJLZXksIEdQUklu
Zm86OnJlZ1QxKTsKKyAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
KTsKKyNlbmRpZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyNTI2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJh
bmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBv
cGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwKKyAgICBkYXRhTG9n
RigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWRcbiIsCisgICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CkBAIC0yMTQsNyArMjE1LDggQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhYwogICAgIH0gdTsKICAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwog
ICAgIGRhdGFMb2dGKAotICAgICAgICAiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6
IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAiPCVkPiAlcCAv
ICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4
eDogJXNcbiIsCisgICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAgLTIzMCw3ICsy
MzIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjCiAKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHRyYWNlX3Byb2xvZ3VlKQogewotICAgIGRhdGFMb2dGKCIlcCAvICVw
OiBpbiBwcm9sb2d1ZSBvZiAiLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgZGF0YUxv
Z0YoIjwlZD4gJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgY3VycmVudFRocmVhZCgpLCBleGVj
LT5jb2RlQmxvY2soKSwgZXhlYyk7CiAgICAgZGF0YUxvZygqZXhlYy0+Y29kZUJsb2NrKCksICJc
biIpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9CkBAIC0yNDAsNyArMjQyLDcgQEAgc3RhdGlj
IHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdAogICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5kKTsKLSAgICBk
YXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgIiwgY29kZUJsb2NrLCBleGVjLCBjb21tZW50KTsK
KyAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBpbiAlcyBvZiAiLCBjdXJyZW50VGhyZWFkKCks
IGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CiAgICAgZGF0YUxvZygqY29kZUJsb2NrKTsKICAg
ICBkYXRhTG9nRigiIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51
bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlTG9jYWxzID0gJXUsIGNhbGxlciA9ICVwLlxuIiwK
ICAgICAgICAgY2FsbGVlLCBleGVjdXRhYmxlLCBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMsIGV4ZWMt
PmNhbGxlckZyYW1lKCkpOwpAQCAtMjczLDcgKzI3NSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHRyYWNlX2FyaXR5Q2hlY2tfZm8KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogewogICAg
IE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKTsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0g
JXBcbiIsCisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMs
IHBjID0gJXBcbiIsCisgICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSksCkBAIC0yOTEsNyArMjk0LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2UpCiB7Ci0gICAgZGF0YUxvZ0YoIiVw
IC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlz
ICVwXG4iLAorICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNh
c2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICAgY3VycmVu
dFRocmVhZCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBl
eGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMTMwNSw2ICsxMzA5LDcgQEAgc3Rh
dGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0Nh
bGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24o
ZXhlY0NhbGxlZSkpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRy
OjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIGV4ZWNDYWxsZWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
KTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEzMjgsNiArMTMzMyw3IEBAIHN0YXRpYyBTbG93
UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUp
KTsKIAorICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQ
dHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTEzNjgsNiArMTM3
NCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKTsKICAgICAgICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0
MTgsNiArMTQyNSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMK
ICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0lu
Zm8pOwogICAgIH0KIAorICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RT
Y3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjLCBleGVjQ2FsbGVlLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5
NDYsOCArMTk0NiwxMCBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCiAgICAgc3RvcmVpIHQy
LCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAg
IHByZXBhcmVDYWxsKExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQy
LCB0MywgdDQpCi0gICAgY2FsbFRhcmdldEZ1bmN0aW9uKExMSW50Q2FsbExpbmtJbmZvOjptYWNo
aW5lQ29kZVRhcmdldFt0MV0pCisgICAgbG9hZHAgX2dfbWFzbVNjcmFtYmxlZFB0cktleSwgdDIK
KyAgICB4b3JwIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQyCisg
ICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHQy
KQogCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgsIHByZXBhcmVD
YWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29w
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNiArMzAyLDEyIEBAIGNsYXNzIEFic29sdXRlQWRk
cmVzcwogICAgIGVuZAogZW5kCiAKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGludE1l
bVJlZgorICAgICAgICAiKkNBU1Q8aW50cHRyX3QqPigmI3tjTGFiZWx9KSIKKyAgICBlbmQKK2Vu
ZAorCiAKICMKICMgTGVhIHN1cHBvcnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjI1MjY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBA
IC01OCw2ICs1OSw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAKICAgICBzdGQ6OmNh
bGxfb25jZShpbml0aWFsaXplVGhyZWFkaW5nT25jZUZsYWcsIFtdewogICAgICAgICBXVEY6Omlu
aXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0
aWFsaXplKCk7CiAgICAgICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJ
VEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0
aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNywxMiArMzI3LDEyIEBAIHZvaWQgQkJR
UGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2MKIAogICAgICAgICBmb3IgKGF1dG8mIHVu
bGlua2VkIDogbV91bmxpbmtlZFdhc21Ub1dhc21DYWxscykgewogICAgICAgICAgICAgZm9yIChh
dXRvJiBjYWxsIDogdW5saW5rZWQpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBleGVjdXRhYmxl
QWRkcmVzczsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZXhlY3V0YWJs
ZUFkZHJlc3M7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kdWxlSW5mb3JtYXRpb24tPmlzSW1w
b3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoY2FsbC5mdW5jdGlvbkluZGV4U3Bh
Y2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FIGltcG9ydHMgY291bGQgaGF2ZSBi
ZWVuIGxpbmtlZCBpbiBCMywgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludC4gVGhp
cyBjb25kaXRpb24gc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgUkVMRUFTRV9BU1NFUlQuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0NjIKLSAgICAgICAgICAgICAg
ICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuYXQoY2FsbC5m
dW5jdGlvbkluZGV4U3BhY2UpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAg
ICAgICAgICAgICBleGVjdXRhYmxlQWRkcmVzcyA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5hdChj
YWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSkuY29kZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVu
Y3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+ZW50cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNz
ID0gbV93YXNtSW50ZXJuYWxGdW5jdGlvbnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgLSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCkpLT5lbnRyeXBvaW50LmNv
bXBpbGF0aW9uLT5jb2RlKCk7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZXhlY3V0YWJs
ZUFkZHJlc3MpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpjYWxsZWUpOwogICAgIH0K
IAotICAgIHZvaWQqIGVudHJ5cG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29t
cGlsYXRpb24tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyB9CisgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGVudHJ5cG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGls
YXRpb24tPmNvZGUoKTsgfQogCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSB7IHJldHVybiAmbV9lbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnM7IH0K
ICAgICBJbmRleE9yTmFtZSBpbmRleE9yTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhPck5h
bWU7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2su
Y3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhDb250ZXh0KiBjb250ZXh0LCBNCiAgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fY2FsbGVlc1tjYWxsZWVJbmRleF0gPSBXVEZNb3ZlKHdhc21FbnRyeXBvaW50Q2FsbGVl
KTsKLSAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2NhbGxlZUluZGV4
XSA9IG1fY2FsbGVlc1tjYWxsZWVJbmRleF0tPmVudHJ5cG9pbnQoKTsKKyAgICAgICAgICAgIG1f
d2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2NhbGxlZUluZGV4XSA9IG1fY2FsbGVlc1tjYWxs
ZWVJbmRleF0tPmVudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9KTsK
IAogICAgICAgICBtX3dhc21Ub1dhc21FeGl0U3R1YnMgPSBtX3BsYW4tPnRha2VXYXNtVG9XYXNt
RXhpdFN0dWJzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxh
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE9N
R1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAKICAgICBvbWdFbnRyeXBvaW50LmNhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBXVEZNb3ZlKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC52YWx1ZSgpLT5l
bnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMpOwogCi0gICAgdm9pZCogZW50cnlwb2ludDsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludDsKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2NvZGVCbG9jay5wdHIoKSA9PSBtX21vZHVsZS0+Y29kZUJsb2NrRm9yKG1vZGUoKSkp
OwogICAgICAgICBSZWY8Q2FsbGVlPiBjYWxsZWUgPSBDYWxsZWU6OmNyZWF0ZShXVEZNb3ZlKG9t
Z0VudHJ5cG9pbnQpLCBmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5h
bWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSk7CkBAIC0xMTksOSArMTE5LDkgQEAg
dm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICBtX2NvZGVCbG9j
ay0+bV9vcHRpbWl6ZWRDYWxsZWVzW21fZnVuY3Rpb25JbmRleF0gPSBXVEZNb3ZlKGNhbGxlZSk7
CiAKICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogdW5saW5rZWRDYWxscykgewotICAgICAgICAg
ICAgdm9pZCogZW50cnlwb2ludDsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBl
bnRyeXBvaW50OwogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIDwgbV9t
b2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKQotICAgICAg
ICAgICAgICAgIGVudHJ5cG9pbnQgPSBtX2NvZGVCbG9jay0+bV93YXNtVG9XYXNtRXhpdFN0dWJz
W2NhbGwuZnVuY3Rpb25JbmRleFNwYWNlXS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRvV2FzbUV4aXRT
dHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSgpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQgPSBtX2NvZGVCbG9jay0+d2FzbUVudHJ5cG9pbnRD
YWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5lbnRy
eXBvaW50KCk7CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGls
YXRpb25FZmZvcnQpCiAgICAgcmVzZXRJbnN0cnVjdGlvbkNhY2hlT25BbGxUaHJlYWRzKCk7CiAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gVGhpcyBwcm9iYWJseSBpc24ndCBuZWNlc3Nh
cnkgYnV0IGl0J3MgZ29vZCB0byBiZSBwYXJhbm9pZC4KIAotICAgIG1fY29kZUJsb2NrLT5tX3dh
c21JbmRpcmVjdENhbGxFbnRyeVBvaW50c1ttX2Z1bmN0aW9uSW5kZXhdID0gZW50cnlwb2ludDsK
KyAgICBtX2NvZGVCbG9jay0+bV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlv
bkluZGV4XSA9IGVudHJ5cG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgaG9sZGVyKG1fY29kZUJsb2NrLT5tX2xvY2spOwogCkBAIC0xNDQsNyArMTQ0
LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICAgICAg
Zm9yIChhdXRvJiBjYWxsIDogY2FsbHNpdGVzKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcg
Y2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSks
ICIgdGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZl
cmJvc2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRp
b24uZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3Nl
LCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRh
dGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9pbnQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5l
YXJDYWxsKGNhbGwuY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChlbnRyeXBvaW50KSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MjcsNyArNjI3LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBCaW5kaW5nRgog
ICAgIGlmIChVTkxJS0VMWShwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEJpbmRpbmdGYWlsdXJlOjpPdXRPZk1lbW9yeSk7CiAK
LSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0Q1RJU3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtLT5nZXRDVElTdHVi
KGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVs
IGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0Nh
bGwpKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQYXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZih0YXJnZXRUb0NoZWNrKSk7CiAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0
aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICB2bS53
YXNtQ29udGV4dC5zdG9yZSh3YXNtSW5zdGFuY2UsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogICAg
IEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOwogICAgIEFTU0VSVCgmd2FzbUZ1bmN0
aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpID09IHZtLndhc21Db250ZXh0LmxvYWQoKSk7Ci0g
ICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24t
PmpzRW50cnlwb2ludCgpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgRW5jb2RlZEpTVmFs
dWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKICAgICAvLyBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluIGEgcmVnaXN0ZXIgb3Igb24gdGhlIHN0YWNrIHNp
bmNlIGl0J3Mgc3RvcmVkIGluIFZlY3RvcjxKU1ZhbHVlPi4KICAgICAvLyBUaGlzIHByb2JhYmx5
IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgc2luY2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24q
IHNob3VsZCBrZWVwIHRoZSBpbnN0YW5jZQogICAgIC8vIGFsaXZlLiBCdXQgaXQncyBnb29kIGh5
Z2llbmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJX
ZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpA
QCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgV2FzbTo6V2FzbUVudHJ5cG9pbnRMb2FkTG9j
YXRpb24gd2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3dhc21G
dW5jdGlvbi5jb2RlOyB9CiAgICAgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbiBjYWxsYWJsZUZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV93YXNtRnVuY3Rpb247IH0KIAotICAgIHZvaWQqIGpzRW50
cnlwb2ludCgpIHsgcmV0dXJuIG1fanNFbnRyeXBvaW50OyB9CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGpzRW50cnlwb2ludCgpIHsgcmV0dXJuIG1fanNFbnRyeXBvaW50OyB9CiAKICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mV2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2ViQXNzZW1ibHlGdW5jdGlvbiwgbV93YXNtRnVuY3Rpb24p
ICsgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZXYXNtRW50cnlwb2ludExvYWRMb2Nh
dGlvbigpOyB9CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJdCdzIHNhZmUg
dG8ganVzdCBob2xkIHRoZSByYXcgQ2FsbGFibGVGdW5jdGlvbi9qc0VudHJ5cG9pbnQgYmVjYXVz
ZSB3ZSBoYXZlIGEgcmVmZXJlbmNlCiAgICAgLy8gdG8gb3VyIEluc3RhbmNlLCB3aGljaCBwb2lu
dHMgdG8gdGhlIE1vZHVsZSB0aGF0IGV4cG9ydGVkIHVzLCB3aGljaAogICAgIC8vIGVuc3VyZXMg
dGhhdCB0aGUgYWN0dWFsIFNpZ25hdHVyZS9jb2RlIGRvZXNuJ3QgZ2V0IGRlYWxsb2NhdGVkLgot
ICAgIHZvaWQqIG1fanNFbnRyeXBvaW50OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pz
RW50cnlwb2ludDsKICAgICBXYXNtOjpDYWxsYWJsZUZ1bmN0aW9uIG1fd2FzbUZ1bmN0aW9uOwog
fTsKIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTEtMjkgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIExldCdzIHNjcmFtYmxlIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODAxNjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1NzU4MzQwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIFNj
cmFtYmxlZFB0ciBjbGFzcyB0byBmYWNpbGl0YXRlIHNjcmFtYmxpbmcuCisKKyAgICAgICAgKiBX
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvU2NyYW1ibGVkUHRy
LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXkpOgorICAgICAg
ICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0
cjo6U2NyYW1ibGVkUHRyKToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFz
c2VydElzU2NyYW1ibGVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJh
bm9pZEFzc2VydElzTm90U2NyYW1ibGVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVk
UHRyOjogY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OnNjcmFtYmxlZEJpdHMgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChX
VEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0
cjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGUpOgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGUpOgorCiAyMDE3LTExLTE0ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBNb3Zl
IEpTT05WYWx1ZXMgdG8gV1RGIGFuZCBjb252ZXJ0IHVzZXMgb2YgSW5zcGVjdG9yVmFsdWVzLmgg
dG8gSlNPTlZhbHVlcy5oCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQAogCQlFMzhENkUy
NzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0
IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2
REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsg
fTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1
M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CisJCUZFODU0MTZFMUZCRTI4
NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFNjcmFtYmxl
ZFB0ci5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFD
RDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC01OTYsNiArNTk3LDggQEAKIAkJRUY3RDZDRDU5RDg2
NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJCQkRC
MTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyYW1ibGVkUHRyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURBIC8qIFNjcmFt
YmxlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JhbWJsZWRQdHIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJG
IC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcmJpZEhlYXBBbGxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTk3OSw2ICs5ODIsOCBAQAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3
MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3Bl
ZExhbWJkYS5oICovLAorCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQ
dHIuY3BwICovLAorCQkJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
aCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgKi8sCiAJ
CQkJMEY2NkIyODUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJCQlBOEE0NzMw
NjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0xNDU3LDYgKzE0
NjIsNyBAQAogCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM5NjFEMzA4MDBBMDBGNUZBMTYgLyogVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzRTRE
RDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTMxMUZCMTcxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3NDRBMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEUxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGlu
Z1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvU2NyYW1i
bGVkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JhbWJsZWRQ
dHIuaCIKKworI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJLZXkoKQorewor
ICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKKyAgICBrZXkg
fD0gMHg3OyAvLyBFbnN1cmUgdGhhdCBhbnkgdmFsaWQgcG9pbnRlciBeIGtleSB3aWxsIG5vdCBi
ZSAwLgorICAgIGtleSB8PSAoc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCA2Myk7IC8vIEVu
c3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBkbyBub3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIu
CisjZWxzZQorICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAz
Mi1iaXQgeWV0LgorI2VuZGlmCisgICAgcmV0dXJuIGtleTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
VEYvd3RmL1NjcmFtYmxlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjZGVmaW5lIEVOQUJMRV9QQVJBTk9J
RF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMgMAorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgU2Ny
YW1ibGVkUHRyQml0cyA9IHVpbnRwdHJfdDsKKwordGVtcGxhdGU8dWludHB0cl90JiBrZXk+Citj
bGFzcyBTY3JhbWJsZWRQdHIgeworcHVibGljOgorICAgIFNjcmFtYmxlZFB0cigpIHsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KKyAgICBleHBsaWNpdCBTY3JhbWJs
ZWRQdHIoVCBwdHIpCisgICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCisg
ICAgeworICAgICAgICBBU1NFUlQocHRyICYmIG1fc2NyYW1ibGVkQml0cyk7CisgICAgfQorCisg
ICAgU2NyYW1ibGVkUHRyKFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsKKyAgICBTY3JhbWJsZWRQ
dHIoY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgU2NyYW1i
bGVkUHRyKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykKKyAgICAgICAgOiBtX3NjcmFt
YmxlZEJpdHMoc2NyYW1ibGVkQml0cykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3NjcmFtYmxl
ZEJpdHMpOworICAgIH0KKworI2lmIEVOQUJMRShQQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VS
VFMpICYmIFVTRShKU1ZBTFVFNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgor
ICAgIHN0YXRpYyBib29sIGlzU2NyYW1ibGVkKFQgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZSB8fCAo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4ZmZmZjAwMDAwMDAwMDAwMCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgcGFy
YW5vaWRBc3NlcnRJc1NjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1i
bGVkKHZhbHVlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3Rh
dGljIHZvaWQgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVBU0Vf
QVNTRVJUKCFpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQgPSB2b2lkKj4gc3RhdGljIHZvaWQgcGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZChUKSB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIHBhcmFub2lk
QXNzZXJ0SXNOb3RTY3JhbWJsZWQoVCkgeyB9CisjZW5kaWYKKyAgICB2b2lkIHBhcmFub2lkQXNz
ZXJ0SXNTY3JhbWJsZWQoKSBjb25zdCB7IHBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQobV9zY3Jh
bWJsZWRCaXRzKTsgfQorICAgIHZvaWQgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNv
bnN0IHsgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgVCBkZXNjcmFtYmxlKCkgY29u
c3QgeyByZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisK
KyAgICBTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmFtYmxlZEJpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
c2NyYW1ibGVkQml0czsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmFtYmxlZFB0ciYgYikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjcmFtYmxlZEJp
dHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UHRyVHlwZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBQdHJUeXBlIGIpCisgICAgeworICAgICAgICByZXR1cm4gZGVzY3JhbWJsZTxQdHJUeXBl
PigpID09IGI7CisgICAgfQorCitwcml2YXRlOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJsZWRQdHJC
aXRzIHNjcmFtYmxlKFQgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVkUHRyQml0
cz4ocHRyKSBeIGtleTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgVCBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykg
eyByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisjZWxzZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1i
bGVkUHRyQml0cyBzY3JhbWJsZShUIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxl
ZFB0ckJpdHM+KHB0cik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFQgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzY3JhbWJsZWRCaXRzKTsgfQorI2VuZGlmCisKKyAg
ICBTY3JhbWJsZWRQdHJCaXRzIG1fc2NyYW1ibGVkQml0cyB7IDAgfTsKK307CisKK3ZvaWQgaW5p
dGlhbGl6ZVNjcmFtYmxlZFB0cigpOwordWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U2NyYW1ibGVkUHRyOwordXNpbmcg
V1RGOjpTY3JhbWJsZWRQdHJCaXRzOwordXNpbmcgV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5Owor
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327916</attachid>
            <date>2017-11-29 15:56:16 -0800</date>
            <delta_ts>2017-11-29 15:57:09 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>86945</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMS4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5vdyBzdG9yZXMgYSBTY3Jh
bWJsZWRQdHIgaW5zdGVhZCBvZiBhIHZvaWQqLgorCisgICAgICAgIDIuIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cidzIGV4ZWN1dGFibGVBZGRyZXNzKCkgYW5kIGRhdGFMb2NhdGlvbigpIG5vdyB0YWtl
IGEKKyAgICAgICAgICAgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0
byBjYXN0IHRoZSByZXN1bHQuICBUaGlzIG1ha2VzIHRoZQorICAgICAgICAgICBjbGllbnQgY29k
ZSB0aGF0IHVzZXMgdGhlc2UgZnVuY3Rpb25zIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAg
ICAgICAzLiBDaGFuZ2UgdGhlIGNvZGUgYmFzZSBpbiBnZW5lcmFsIHRvIG1pbmltaXplIHBhc3Np
bmcgdm9pZCogY29kZSBwb2ludGVycyBhcm91bmQuCisgICAgICAgICAgIFdlIG5vdyBwYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZGVzY3JhbWJsZSBp
dCBvbmx5CisgICAgICAgICAgIGF0IHRoZSBsYXN0IG1vbWVudCB3aGVuIHdlIG5lZWQgdGhlIHVu
ZGVybHlpbmcgY29kZSBwb2ludGVyLgorCisgICAgICAgIDQuIEFkZGVkIHNvbWUgTWFzbVNjcmFt
YmxlZFB0ciBwYXJhbm9pZCBhc3NlcnRzIHRoYXQgYXJlIGRpc2FibGVkIChub3QgYnVpbHQpIGJ5
CisgICAgICAgICAgIGRlZmF1bHQuICBJJ20gbGVhdmluZyB0aGVtIGluIGJlY2F1c2UgdGhleSBh
cmUgaW5zdHJ1bWVudGFsIGluIGZpbmRpbmcgYnVncworICAgICAgICAgICB3aGVyZSBub3QgYWxs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMgd2VyZSBub3Qgc2NyYW1ibGVkIGFzIGV4cGVj
dGVkLgorICAgICAgICAgICBJIGV4cGVjdCB0aGVtIHRvIGJlIHVzZWZ1bCBpbiB0aGUgbmVhciBm
dXR1cmUgYXMgd2UgYWRkIG1vcmUgc2NyYW1ibGluZy4KKworICAgICAgICA1LiBBbHNvIGRpc2Fi
bGUgdGhlIGNhc3Rpbmcgb3BlcmF0b3Igb24gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIChleGNlcHQg
Zm9yCisgICAgICAgICAgIGV4cGxpY2l0IGNhc3RzIHRvIGEgYm9vbGVhbikuICBUaGlzIGVuc3Vy
ZXMgdGhhdCBjbGllbnRzIHdpbGwgYWx3YXlzIGV4cGxpY2l0bHkKKyAgICAgICAgICAgdXNlIHNj
cmFtYmxlZEJpdHMoKSBvciBleGVjdXRhYmxlQWRkcmVzcygpIHRvIGdldCBhIHZhbHVlIGJhc2Vk
IG9uIHdoaWNoIHZhbHVlCisgICAgICAgICAgIHRoZXkgYWN0dWFsbHkgbmVlZC4KKworICAgICAg
ICA1LiBBZGRlZCBjdXJyZW50VGhyZWFkKCkgaWQgdG8gdGhlIGxvZ2dpbmcgaW4gTExJbnRTbG93
UGF0aCB0cmFjZSBmdW5jdGlvbnMuCisgICAgICAgICAgIFRoaXMgd2FzIGhlbHBmdWwgd2hlbiBk
ZWJ1Z2dpbmcgdGVzdHMgdGhhdCByYW4gbXVsdGlwbGUgVk1zIGNvbmN1cnJlbnRseSBvbgorICAg
ICAgICAgICBkaWZmZXJlbnQgdGhyZWFkcy4KKworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbiA2NC1iaXQgYnVpbGRzIChpbmNsdWRpbmcgdGhl
CisgICAgICAgIENMb29wKS4gIEl0IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIDMyLWJpdCBiZWNh
dXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5CisgICAgICAgIHRvIHJlYWQgYSBnbG9i
YWwgdmFyaWFibGUgZnJvbSAzMi1iaXQgTExJbnQgY29kZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29k
ZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6aW5zdHJ1Y3Rp
b25BdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxBdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6anVtcEF0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpjYWxsQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbFB0ckF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWwzMkF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGluayk6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OnBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpl
eGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJldHVybkFkZHJlc3NQdHI6
OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OnNjcmFtYmxlZFB0ciBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZXhlY3V0YWJsZUFkZHJl
c3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmRhdGFMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlck1hY3Jv
cy5jcHA6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJ
bnRlcnByZXRlcik6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxp
bmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hh
clN0cmluZ0p1bXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxl
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYpOgorICAgICAgICAqIGZ0bC9GVExD
b21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0aElDKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0TWF0aElDRmFzdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ1Nsb3cpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZVdpdGhDb2Rl
UmVmOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpvZmZzZXRPZik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6
CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAg
ICAgKiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwOgorICAgICAgICAoSlNDOjpQQ1RvQ29kZU9y
aWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXApOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKToKKyAgICAgICAgKiBqaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAg
ICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxlZTo6ZW50cnlwb2ludCBjb25zdCk6CisgICAgICAgICogd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSk6CisKIDIwMTctMTEtMjkgIE1hdHQgTGV3aXMg
IDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjI1Mjg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzAsNyArODMwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBhLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGIpCiAgICAgewotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KGIuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBy
ZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oYS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgcmV0dXJuIGIuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpIC0gYS5leGVjdXRhYmxl
QWRkcmVzczxwdHJkaWZmX3Q+KCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQo
KSB7IHJldHVybiBtX2Fzc2VtYmxlci5kZWJ1Z09mZnNldCgpOyB9CkBAIC04NTIsNiArODUyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFi
ZWwsIHZhbHVlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBj
b2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWwsIHZh
bHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkKiBnZXRM
aW5rZXJBZGRyZXNzKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGxhYmVsKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmdldFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgbGFi
ZWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2Nh
dGlvbi5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NCw1NSArMTY0LDU1IEBAIHB1Ymxp
YzoKIGlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omlu
c3RydWN0aW9uQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9P
RkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4g
Q29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24oZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsK
IH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsIENvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxB
dE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZz
ZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJl
bChkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0
aW9uSnVtcCBDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KQogewog
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9j
YXRpb25KdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsg
b2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkNhbGwgQ29kZUxvY2F0aW9uQ29tbW9u
OjpjYWxsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChyZWludGVycHJldF9jYXN0
PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRp
b25DYWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2Rl
TG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQoaW50
IG9mZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RF
X09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25OZWFyQ2FsbChyZWludGVy
cHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQsIGNhbGxNb2RlKTsKKyAg
ICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zm
c2V0LCBjYWxsTW9kZSk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgQ29k
ZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAg
IEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsg
b2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKGRhdGFMb2NhdGlv
bjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwz
MiBDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsK
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkp
ICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIoZGF0YUxvY2F0
aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJl
bENvbXBhY3QgQ29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50
IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRh
TGFiZWxDb21wYWN0KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGlu
ZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9m
ZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZlcjo6Zmlu
YWxpemUKICAgICB2YV9lbmQoYXJnTGlzdCk7CiAgICAgb3V0LnByaW50ZigiOlxuIik7CiAKLSAg
ICBvdXQucHJpbnRmKCIgICAgQ29kZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnRmKCIgICAgQ29k
ZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVz
dWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHJlc3VsdC5zaXplKCkpOwog
ICAgIAogICAgIENTdHJpbmcgaGVhZGVyID0gb3V0LnRvQ1N0cmluZygpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9u
IDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGxpbmsoQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
ICAgICB7Ci0gICAgICAgIGxpbmsoY2FsbCwgRnVuY3Rpb25QdHIobGFiZWwuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOworICAgICAgICBsaW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGxhYmVsKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgbGluayhKdW1wIGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVs
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdGNoKERhdGFMYWJlbFB0
ciBsYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgdmFsdWUpCiAgICAgewogICAgICAgICBBc3NlbWJs
ZXJMYWJlbCB0YXJnZXQgPSBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFyZ2V0LCB2YWx1ZS5leGVjdXRhYmxl
QWRkcmVzcygpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwg
dGFyZ2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0
byBvYnRhaW4gaGFuZGxlcyB0byBhbGxvdyB0aGUgY29kZSB0byBiZSByZWxpbmtlZCAvIHJlcGF0
Y2hlZCBsYXRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw5ICsyOSwyMCBAQAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNs
dWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJs
ZWRQdHJLZXk7CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICBnX21hc21TY3JhbWJs
ZWRQdHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihP
cGNvZGVJRCBjb2RlSWQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNp
b24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UiBjaGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBhbmQgdGhhdCBpdCBpcyBh
IHZhbGlkCkBAIC01MCw2ICs1MSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3VzaW5n
IE1hc21TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8Z19tYXNtU2NyYW1ibGVkUHRyS2V5PjsK
KworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworCiBlbnVtIE9wY29kZUlEIDogdW5zaWdu
ZWQ7CiAKIC8vIEZ1bmN0aW9uUHRyOgpAQCAtNTgsMTUgKzY1LDEzIEBAIGVudW0gT3Bjb2RlSUQg
OiB1bnNpZ25lZDsKIC8vIChwYXJ0aWN1bGFybHksIHRoZSBzdHViIGZ1bmN0aW9ucykuCiBjbGFz
cyBGdW5jdGlvblB0ciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25QdHIoKQotICAgICAgICA6IG1f
dmFsdWUoMCkKLSAgICB7Ci0gICAgfQorICAgIEZ1bmN0aW9uUHRyKCkgeyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTc0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVl
KShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0K
IApAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgq
dmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90
U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1f
dmFsdWUpOwogICAgIH0KIApAQCAtODgsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNT
RVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTk1LDYgKzEwMyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMs
IGFyZ1R5cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIApAQCAtMTA5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQs
IGFyZ1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBzZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRp
ZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGFzCkBAIC0xMTksNiArMTMwLDcgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAg
cHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlw
ZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEz
Myw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wg
KnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTE0MCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0x
NDcsNiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNM
ICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE1Nyw2ICsx
NzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTE2NCw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFT
VENBTEwgKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUp
CiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIApAQCAtMTcxLDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0
cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAg
ICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVk
UHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTc4LDYgKzE5Nyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIs
IGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGljOgogICAgICAgICAv
LyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJlbnQgY29u
c3RuZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0g
ICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgZXhwbGljaXQgRnVuY3Rpb25QdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKIAorICAgIHZv
aWQqIHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFu
b2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVl
OworICAgIH0KKyAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCogbV92YWx1ZTsKKyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0
dXJuQWRkcmVzc1B0cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlz
IHRoZSBzb3VyY2Ugb2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0
ciB7CiBwdWJsaWM6Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgw
KQotICAgIHsKLSAgICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRy
IGZ1bmN0aW9uKQogICAgICAgICA6IG1fdmFsdWUoZnVuY3Rpb24udmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92
YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAg
fQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgdm9p
ZCogdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5v
aWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
IHsKQEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQqIG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07CiAKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgyLDcgQEAgcHJpdmF0ZToKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0byB3cmFwIHBvaW50ZXJzIHRvIEpJ
VCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB7CiBwdWJsaWM6
Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAg
ewotICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSB7IH0KIAogICAgIGV4cGxpY2l0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkKICNpZiBDUFUoQVJNX1RIVU1CMikK
QEAgLTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
I2VuZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQo
KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCiAgICAgeworICAg
ICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZh
bHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1i
bGVkUHRyKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1Nj
cmFtYmxlZCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjc3LDI0ICsz
MTIsNjIgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVChyYS52YWx1ZSgpKTsKKyAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2Vy
dElzU2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+Cisg
ICAgVCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLnBh
cmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3Zh
bHVlLmRlc2NyYW1ibGU8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgIH0KICNpZiBDUFUo
QVJNX1RIVU1CMikKICAgICAvLyBUbyB1c2UgdGhpcyBwb2ludGVyIGFzIGEgZGF0YSBhZGRyZXNz
IHJlbW92ZSB0aGUgZGVjb3JhdGlvbi4KLSAgICB2b2lkKiBkYXRhTG9jYXRpb24oKSBjb25zdCB7
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihtX3ZhbHVlKSAtIDE7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9p
ZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92YWx1ZS5w
YXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/
IG1fdmFsdWUuZGVzY3JhbWJsZTxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKKyAgICB9CiAjZWxz
ZQotICAgIHZvaWQqIGRhdGFMb2NhdGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ID0gdm9pZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92
YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5k
ZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoUEFSQU5PSURfU0NSQU1C
TEVEX1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmIGlzRGVsZXRl
ZFZhbHVlKCkpCisgICAgICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQo
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gIW1fdmFsdWU7CisgICAgfQorICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhKCEqdGhpcyk7IH0KICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QK
ICAgICB7CisjaWYgRU5BQkxFKFBBUkFOT0lEX1NDUkFNQkxFRF9QVFJfQVNTRVJUUykKKyAgICAg
ICAgaWYgKCFpc0VtcHR5VmFsdWUoKSAmJiBpc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAgICAgICAg
bV92YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisjZW5kaWYKICAgICAgICAgcmV0
dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKICAgICB9CiAKKyAgICAvLyBEaXNhbGxvdyBh
bnkgY2FzdGluZyBvcGVyYXRpb25zIChleGNlcHQgZm9yIGJvb2xlYW5zKS4gSW5zdGVhZCwgdGhl
IGNsaWVudAorICAgIC8vIHNob3VsZCBiZSBhc2tpbmcgZm9yIHNjcmFtYmxlZFB0cigpIG9yIGV4
ZWN1dGFibGVBZGRyZXNzKCkgZXhwbGljaXRseS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWU+
PgorICAgIG9wZXJhdG9yIFQoKSA9IGRlbGV0ZTsKKwogICAgIHZvaWQgZHVtcFdpdGhOYW1lKGNv
bnN0IGNoYXIqIG5hbWUsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKQEAgLTMwNCwyNCArMzc3LDI0IEBAIHB1Ymxp
YzoKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoRW1wdHlWYWx1ZVRhZykKICAgICAg
ICAgOiBtX3ZhbHVlKGVtcHR5VmFsdWUoKSkKLSAgICB7Ci0gICAgfQorICAgIHsgfQogICAgIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihEZWxldGVkVmFsdWVUYWcpCiAgICAgICAgIDogbV92
YWx1ZShkZWxldGVkVmFsdWUoKSkKLSAgICB7Ci0gICAgfQorICAgIHsgfQogICAgIAogICAgIGJv
b2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBlbXB0eVZhbHVlKCk7
IH0KICAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBk
ZWxldGVkVmFsdWUoKTsgfQotICAgIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVy
biBQdHJIYXNoPHZvaWQqPjo6aGFzaChtX3ZhbHVlKTsgfQorCisgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IHsgcmV0dXJuIFB0ckhhc2g8dWludHB0cl90Pjo6aGFzaChtX3ZhbHVlLnNjcmFtYmxl
ZEJpdHMoKSk7IH0KKworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgdm9pZCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpKTsgfQotICAgIHN0YXRpYyB2b2lkKiBkZWxldGVk
VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigyKSk7IH0KLSAgICAKLSAgICB2b2lkKiBtX3ZhbHVlOworICAgIHN0YXRpYyBNYXNtU2NyYW1i
bGVkUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBNYXNtU2NyYW1ibGVkUHRyKDEpOyB9CisgICAg
c3RhdGljIE1hc21TY3JhbWJsZWRQdHIgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFt
YmxlZFB0cigyKTsgfQorCisgICAgTWFzbVNjcmFtYmxlZFB0ciBtX3ZhbHVlOwogfTsKIAogc3Ry
dWN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckhhc2ggewpAQCAtNDA1LDYgKzQ3OCwxNiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBtX2V4ZWN1dGFibGVNZW1v
cnk7CiB9OwogCitpbmxpbmUgRnVuY3Rpb25QdHI6OkZ1bmN0aW9uUHRyKE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBwdHIpCisgICAgLy8gVXNpbmcgYSBDLWN0eWxlIGNhc3QgaGVyZSB0byBhdm9pZCBj
b21waWxlciBlcnJvciBvbiBSVlRDOgorICAgIC8vIEVycm9yOiAgIzY5NDogcmVpbnRlcnByZXRf
Y2FzdCBjYW5ub3QgY2FzdCBhd2F5IGNvbnN0IG9yIG90aGVyIHR5cGUgcXVhbGlmaWVycworICAg
IC8vIChJIGd1ZXNzIG9uIFJWVEMgZnVuY3Rpb24gcG9pbnRlcnMgaGF2ZSBhIGRpZmZlcmVudCBj
b25zdG5lc3MgdG8gR0NDL01TVkM/KQorICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSkKK3sKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOworICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGluZGV4KTsKLSAgICAgICAgICAg
ICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMrKzsKKyAgICAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAyOwogICAgICAgICAgICAgICAg
IC8vIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBoYXZlIHRvIGNsb2JiZXIgbWFjcm8gcmVnaXN0ZXJz
IG9uIFg4Nl82NC4gVGhpcyBpcyBwcm9iYWJseQogICAgICAgICAgICAgICAgIC8vIE9LIHRob3Vn
aC4KICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC01MDUsMTAgKzUwNSwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgaW5k
ZXggPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNj
cmF0Y2goMSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoJmdfbWFzbVNj
cmFtYmxlZFB0cktleSwgZGVzY3JhbWJsZXJLZXkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYWJsZSksIHNjcmF0Y2gp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoQ0NhbGxIZWxwZXJzOjpCYXNlSW5k
ZXgoc2NyYXRjaCwgaW5kZXgsIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxs
SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRy
KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC54b3I2NChkZXNjcmFt
YmxlcktleSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcChzY3Jh
dGNoKTsKKwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgbGFiZWxzIGFyZSBndWFy
YW50ZWVkIHRvIGJlIHBvcHVsYXRlZCBiZWZvcmUgZWl0aGVyIGxhdGUgcGF0aHMgb3IKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGxpbmsgdGFza3MgcnVuLgogICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPEJveDxDQ2FsbEhlbHBlcnM6OkxhYmVsPj4gbGFiZWxzID0gcGFyYW1zLnN1
Y2Nlc3NvckxhYmVscygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAwNyw3ICsxMzAwNyw3IEBAIHZvaWQgdGVzdEludGVycHJldGVy
KCkKICAgICBwb2x5SnVtcC0+ZWZmZWN0cy50ZXJtaW5hbCA9IHRydWU7CiAgICAgcG9seUp1bXAt
PmFwcGVuZFNvbWVSZWdpc3RlcihvcGNvZGUpOwogICAgIHBvbHlKdW1wLT5jbG9iYmVyKFJlZ2lz
dGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgcG9seUp1bXAtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycysrOworICAgIHBvbHlKdW1wLT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAy
OwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0
YVBvaW50ZXIpKTsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9j
ayhhZGRUb0NvZGVQb2ludGVyKSk7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVx
dWVudGVkQmxvY2soYWRkVG9EYXRhKSk7CkBAIC0xMzAyOSw5ICsxMzAyOSwxNSBAQCB2b2lkIHRl
c3RJbnRlcnByZXRlcigpCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIqIGp1bXBU
YWJsZSA9IGJpdHdpc2VfY2FzdDxNYWNyb0Fzc2VtYmxlckNvZGVQdHIqPigKICAgICAgICAgICAg
ICAgICBwYXJhbXMucHJvYygpLmFkZERhdGFTZWN0aW9uKHNpemVvZihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIpICogbGFiZWxzLnNpemUoKSkpOwogCi0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7Ci0g
ICAgICAgICAgICBqaXQuanVtcChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChwYXJhbXMuZ3BTY3Jh
dGNoKDApLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQdHIoKSkpOwotICAg
ICAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2go
MCk7CisgICAgICAgICAgICBHUFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNo
KDEpOworCisgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
anVtcFRhYmxlKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQubG9hZDY0KCZnX21hc21TY3Jh
bWJsZWRQdHJLZXksIGRlc2NyYW1ibGVyS2V5KTsKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgcGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBl
cnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGppdC54b3I2NChkZXNjcmFt
YmxlcktleSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQuanVtcChzY3JhdGNoKTsKKwogICAg
ICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAgICAgICAgICAgICAgIFsmLCBqdW1wVGFibGUs
IGxhYmVsc10gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGFiZWxzLnNpemUoKTsgaS0tOykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNh
c3NlbWJseShQcmludAogICAgIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0ID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mKHByZXZpb3VzTGFiZWwpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxp
bmtCdWZmZXIubG9jYXRpb25PZihjdXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBj
dXJyZW50TGFiZWw7Ci0gICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVuZC5leGVj
dXRhYmxlQWRkcmVzcygpKSA+PSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdGFydC5leGVjdXRh
YmxlQWRkcmVzcygpKSk7Ci0gICAgZGlzYXNzZW1ibGUoc3RhcnQsIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGVuZC5leGVjdXRhYmxlQWRkcmVzcygpKSAtIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBwcmVmaXhCdWZmZXIuZ2V0KCksIG91dCk7Cisg
ICAgQVNTRVJUKGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpKTsKKyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5k
LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
PHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBA
QCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgCiAgICAgZm9y
IChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZv
ID0gKnJlY29yZC5pbmZvOwotICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxs
LCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNv
cmQuc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtKCktPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgIGluZm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAg
ICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJl
Y29yZC5zbG93Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZl
ci5sb2NhdGlvbk9mKHJlY29yZC50YXJnZXRUb0NoZWNrKSksCkBAIC01MjUsOSArNTI1LDkgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAKICAgICBtX2ppdENvZGUt
PnNocmlua1RvRml0KCk7CiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6
TGF0ZVNocmluayk7Ci0gICAgCi0gICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxBcml0eUZpeHVw
LCBGdW5jdGlvblB0cigodm0oKS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICAKKworICAgIGxpbmtCdWZmZXItPmxpbmso
bV9jYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIodm0oKS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVw
R2VuZXJhdG9yKS5jb2RlKCkpKTsKKwogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxv
Y2F0aW9uT2YobV9hcml0eUNoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyOSw4ICsy
MDI5LDggQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSQogICAgIGRv
dWJsZSBhc0RvdWJsZSA9IHZhbHVlLmFzRG91YmxlKCk7CiAgICAgaW50MzJfdCBhc0ludDMyID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUpOwogICAgIGlmIChhc0RvdWJsZSA9PSBhc0lu
dDMyKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHRhYmxlLmN0aUZvclZhbHVl
KGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
aGFyKj4odGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0
dXJuIHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
OworICAgIHJldHVybiB0YWJsZS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
OwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCB0YWJsZUluZGV4LCBKU1N0cmluZyogc3RyaW5nKQpAQCAtMjAzOCw3
ICsyMDM4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihleGVjLT5jb2RlQmxv
Y2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpLmN0aUZvclZhbHVlKHN0cmlu
Zy0+dmFsdWUoZXhlYykuaW1wbCgpKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICByZXR1cm4g
ZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlG
b3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCk7CiB9CiAKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdB
bmRHZXRCcmFuY2hPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNT
dHJpbmcqIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc3MSw3
ICs5NzcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogfQog
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKLSAgICBTd2l0Y2hEYXRh
KiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKQorICAgIFN3aXRjaERhdGEqIGRh
dGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBkZXNjcmFtYmxlcktleVNj
cmF0Y2gpCiB7CiAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygp
LT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgdGFibGUuZW5z
dXJlQ1RJVGFibGUoKTsKQEAgLTk3NzksOCArOTc3OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0U3dpdGNoSW50SnVtcCgKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZz
ZXRzLnNpemUoKSkpLAogICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAgVU5V
U0VEX1BBUkFNKGRlc2NyYW1ibGVyS2V5U2NyYXRjaCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBi
dWlsZC4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0LmxvYWQ2NCgmZ19tYXNtU2NyYW1i
bGVkUHRyS2V5LCBkZXNjcmFtYmxlcktleVNjcmF0Y2gpOworI2VuZGlmCiAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHRhYmxlLmN0aU9mZnNldHMuYmVnaW4oKSksIHNjcmF0Y2gpOwogICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChzY3JhdGNoLCB2YWx1ZSwgSklU
Q29tcGlsZXI6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIG1faml0LnhvcjY0KGRlc2NyYW1ibGVyS2V5U2NyYXRjaCwgc2NyYXRjaCk7CisjZW5k
aWYKICAgICBtX2ppdC5qdW1wKHNjcmF0Y2gpOwogICAgIGRhdGEtPmRpZFVzZUp1bXBUYWJsZSA9
IHRydWU7CiB9CkBAIC05NzkxLDcgKzk3OTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoSW1tKE5vZGUqCiAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWUu
Z3ByKCksIHRlbXAuZ3ByKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7Cisg
ICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVlLmdwcigpLCB0ZW1wLmdwcigpLCB0
ZW1wMi5ncHIoKSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC05Nzk5LDE1ICs5ODA4LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0oTm9kZSoKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOwogICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcg
c2NyYXRjaCA9IHRlbXAuZ3ByKCk7Ci0gICAgICAgIAorICAgICAgICBHUFJSZWcgc2NyYXRjaDIg
PSB0ZW1wMi5ncHIoKTsKKwogICAgICAgICB2YWx1ZS51c2UoKTsKICAgICAgICAgCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50ID0gbV9qaXQuYnJh
bmNoNjQoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmVsb3csIHZhbHVlUmVncy5ncHIoKSwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1
bXAoZGF0YSwgdmFsdWVSZWdzLmdwcigpLCBzY3JhdGNoKTsKKyAgICAgICAgZW1pdFN3aXRjaElu
dEp1bXAoZGF0YSwgdmFsdWVSZWdzLmdwcigpLCBzY3JhdGNoLCBzY3JhdGNoMik7CiAgICAgICAg
IG5vdEludC5saW5rKCZtX2ppdCk7CiAgICAgICAgIGFkZEJyYW5jaCgKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q2NCgKQEAgLTk4MjAsNyArOTgzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSoKICNlbHNlCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdEludCA9IG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCB2YWx1ZVJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
OwotICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCBzY3JhdGNoKTsKKyAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogICAgICAgICBub3RJbnQubGluaygmbV9q
aXQpOwogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAg
LTk4NDQsNyArOTg1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9k
ZSoKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKAot
ICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpCisgICAg
U3dpdGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNj
cmF0Y2gyKQogewogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCkBAIC05
ODc1LDcgKzk4ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhclN0cmlu
CiAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWUpLCBzY3JhdGNo
KTsKICAgICAKICAgICByZWFkeS5saW5rKCZtX2ppdCk7Ci0gICAgZW1pdFN3aXRjaEludEp1bXAo
ZGF0YSwgc2NyYXRjaCwgdmFsdWUpOworICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHNjcmF0
Y2gsIHZhbHVlLCBzY3JhdGNoMik7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hDaGFyKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEpCkBAIC05ODg0LDE0ICs5ODk1LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICBjYXNlIFN0
cmluZ1VzZTogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgCisg
ICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKwogICAgICAgICBHUFJSZWcgb3AxR1BS
ID0gb3AxLmdwcigpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAg
ICAgIAorICAgICAgICBHUFJSZWcgdGVtcDJHUFIgPSB0ZW1wMi5ncHIoKTsKKwogICAgICAgICBv
cDEudXNlKCk7CiAKICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBvcDFH
UFIpOwotICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxR1BSLCB0ZW1w
R1BSKTsKKyAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQUiwgdGVt
cEdQUiwgdGVtcDJHUFIpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC05ODk5LDE3ICs5OTEyLDE5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIAorICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVn
cyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3By
KCk7Ci0gICAgICAgIAorICAgICAgICBHUFJSZWcgdGVtcDJHUFIgPSB0ZW1wMi5ncHIoKTsKKwog
ICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAg
IAogICAgICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXls
b2FkR1BSKCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAotICAgICAgICBl
bWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBH
UFIpOworICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxUmVncy5wYXls
b2FkR1BSKCksIHRlbXBHUFIsIHRlbXAyR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODU4LDkgKzI4NTgsOSBAQCBwdWJsaWM6CiAgICAgICAg
IEJhc2ljQmxvY2sqIHRhcmdldDsKICAgICB9OwogICAgIAotICAgIHZvaWQgZW1pdFN3aXRjaElu
dEp1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOworICAgIHZv
aWQgZW1pdFN3aXRjaEludEp1bXAoU3dpdGNoRGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNj
cmF0Y2gsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCBlbWl0U3dpdGNoSW1tKE5vZGUqLCBT
d2l0Y2hEYXRhKik7Ci0gICAgdm9pZCBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoU3dpdGNoRGF0
YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpOworICAgIHZvaWQgZW1pdFN3aXRjaENo
YXJTdHJpbmdKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBH
UFJSZWcgc2NyYXRjaDIpOwogICAgIHZvaWQgZW1pdFN3aXRjaENoYXIoTm9kZSosIFN3aXRjaERh
dGEqKTsKICAgICB2b2lkIGVtaXRCaW5hcnlTd2l0Y2hTdHJpbmdSZWN1cnNlKAogICAgICAgICBT
d2l0Y2hEYXRhKiwgY29uc3QgVmVjdG9yPFN0cmluZ1N3aXRjaENhc2U+JiwgdW5zaWduZWQgbnVt
Q2hlY2tlZCwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgZGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2QKICAgICBpZiAodHJ5VG9EaXNhc3NlbWJsZShjb2RlUHRyLCBzaXplLCBwcmVmaXgsIG91
dCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5
IG5vdCBhdmFpbGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKSArIHNpemUpOworICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWls
YWJsZSBmb3IgcmFuZ2UgJXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgKyBzaXplKTsKIH0KIAog
bmFtZXNwYWNlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURp
czg2RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMyArMzcsMTMgQEAgYm9vbCB0cnlUb0Rp
c2Fzc2VtYmxlV2l0aFVEaXM4Nihjb25zdCBNYQogewogICAgIHVkX3QgZGlzYXNzZW1ibGVyOwog
ICAgIHVkX2luaXQoJmRpc2Fzc2VtYmxlcik7Ci0gICAgdWRfc2V0X2lucHV0X2J1ZmZlcigmZGlz
YXNzZW1ibGVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpKSwgc2l6ZSk7CisgICAgdWRfc2V0X2lucHV0X2J1ZmZlcigmZGlzYXNzZW1ibGVy
LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzPHVuc2lnbmVkIGNoYXIqPigpLCBzaXplKTsKICNp
ZiBDUFUoWDg2XzY0KQogICAgIHVkX3NldF9tb2RlKCZkaXNhc3NlbWJsZXIsIDY0KTsKICNlbHNl
CiAgICAgdWRfc2V0X21vZGUoJmRpc2Fzc2VtYmxlciwgMzIpOwogI2VuZGlmCi0gICAgdWRfc2V0
X3BjKCZkaXNhc3NlbWJsZXIsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOworICAgIHVkX3NldF9wYygmZGlzYXNzZW1ibGVyLCBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7CiAgICAgdWRfc2V0X3N5bnRheCgmZGlzYXNz
ZW1ibGVyLCBVRF9TWU5fQVRUKTsKICAgICAKICAgICB1aW50NjRfdCBjdXJyZW50UEMgPSBkaXNh
c3NlbWJsZXIucGM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw4ICsxNTIsOCBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlCiAgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1Rv
Q29kZU9yaWdpbk1hcHBpbmcoKSkKICAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdp
bk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29k
ZUxpbmtCdWZmZXIpKTsKIAotICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gYml0d2lzZV9j
YXN0PEdlbmVyYXRlZEZ1bmN0aW9uPigKLSAgICAgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVM
aW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSkpOwor
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5r
QnVmZmVyLT5sb2NhdGlvbk9mKHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CisgICAg
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbC5leGVjdXRhYmxlQWRkcmVzczxHZW5lcmF0
ZWRGdW5jdGlvbj4oKTsKICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQjNCeXByb2R1Y3Rz
KHN0YXRlLnByb2MtPnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogCiAgICAgZm9yIChhdXRvIHBhaXIg
OiBzdGF0ZS5ncmFwaC5tX2VudHJ5cG9pbnRJbmRleFRvQ2F0Y2hCeXRlY29kZU9mZnNldCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCShyZXZpc2lvbiAy
MjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIEpJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRk
cmVzc0ZvckNhbGwKIAogdm9pZCogSklUQ29kZTo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2Fk
ZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0OworICAgIHJldHVybiBt
X2FkZHJlc3NGb3JDYWxsLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgb2Zmc2V0OwogfQog
CiB2b2lkKiBKSVRDb2RlOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcg
KzE3MCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25z
dHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJp
dHlDaGVjayk7CiAgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxMb29rdXBFeGNlcHRp
b25IYW5kbGVyRnJvbUNhbGxlckZyYW1lLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxl
ckZyYW1lKTsKLSAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1
bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJp
dHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtLmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikp
LmNvZGUoKSkpOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhtYWluUGF0aEp1bXBzLCBD
b2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0
aW9uKSkpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODIyLDcgKzE4MjIsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aEVuZCA9IGppdC5sYWJlbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlv
bk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRo
RW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihz
bG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC0xODM2LDcgKzE4MzYsNyBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgICAgICAgICAgICAgIGF1dG8gaW5s
aW5lRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5k
KS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVFbmQpLmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0
YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgICAgICAgICAgICAgbWF0
aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAgICAgICAgICAgfSk7CiAj
ZW5kaWYKQEAgLTE5MTUsNyArMTkxNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1BVEhfSUNf
U1RBVFMpCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoRW5kID0gaml0Lmxh
YmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRo
RW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVy
LmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
c2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXpl
OwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAjZW5kaWYKQEAgLTE5MjksNyArMTkyOSw3
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgICAgICAgICAgICAg
YXV0byBpbmxpbmVFbmQgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlu
a1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihp
bmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtC
dWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGlu
ZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
aW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICAgICAgICAg
ICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICAgICAgICAgICAg
ICB9KTsKICNlbmRpZgpAQCAtNjc1NSw3ICs2NzU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVu
Y3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkp
OwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlv
bnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1
ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAgLTcwNjYsNyArNzA2Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtD
YWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVm
ZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwg
RnVuY3Rpb25QdHIobGlua0NhbGwpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSks
CkBAIC03MzM3LDcgKzczMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5r
Q2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0
Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93Q2FsbCkpLApAQCAtNzYyMCw3
ICs3NjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElT
dHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2NhdGlv
bnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlua0J1
ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUg
T3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAgICAgLy8gdGhlIExMSW50IGNvZGUg
Zm9yIHRoZSBvcGNvZGUgKHNlZSB0aGUgRU1CRURfT1BDT0RFX0lEX0lGX05FRURFRCBtYWNybwog
ICAgIC8vIGluIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwKS4KICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGNvZGUpKTsKLSAgICBpbnQz
Ml90KiBvcGNvZGVJREFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihjb2RlUHRy
LmRhdGFMb2NhdGlvbigpKSAtIDE7CisgICAgaW50MzJfdCogb3Bjb2RlSURBZGRyZXNzID0gY29k
ZVB0ci5kYXRhTG9jYXRpb248aW50MzJfdCo+KCkgLSAxOwogICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KCpvcGNvZGVJREFkZHJlc3MpOwogICAgIEFTU0VSVChv
cGNvZGVJRCA8IE5VTUJFUl9PRl9CWVRFQ09ERV9JRFMpOwogICAgIHJldHVybiBvcGNvZGVJRDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2
aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIEpJVDo6
ZW1pdE1hdGhJQ0Zhc3QoSklUVW5hcnlNYXRoSUM8CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMp
CiAgICAgYXV0byBpbmxpbmVFbmQgPSBsYWJlbCgpOwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVz
cygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3Rh
cnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4o
KTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7
CiAjZW5kaWYKQEAgLTc4OSw3ICs3ODksNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ0Zhc3QoSklU
QmluYXJ5TWF0aElDCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgYXV0byBpbmxpbmVF
bmQgPSBsYWJlbCgpOwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVy
LmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxp
bmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElD
LT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTgyOSw3
ICs4MjksNyBAQCB2b2lkIEpJVDo6ZW1pdE1hdGhJQ1Nsb3coSklUVW5hcnlNYXRoSUM8CiAjaWYg
RU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgYXV0byBzbG93UGF0aEVuZCA9IGxhYmVsKCk7CiAg
ICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHNp
emVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93
UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhl
Y3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhT
dGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5l
cmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgIH0pOwogI2VuZGlmCkBAIC04OTUsNyArODk1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVEJpbmFyeU1hdGhJQwogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBsYWJlbCgpOwogICAgIGFkZExp
bmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICBzaXplX3Qgc2l6
ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9j
YXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6
ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVB
ZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29k
ZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNywyMCArMTI3
LDIwIEBAIEpJVENvZGVXaXRoQ29kZVJlZjo6fkpJVENvZGVXaXRoQ29kZVJlZigKIHZvaWQqIEpJ
VENvZGVXaXRoQ29kZVJlZjo6ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVmKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgb2Zmc2V0Owor
ICAgIHJldHVybiBtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgKyBvZmZz
ZXQ7CiB9CiAKIHZvaWQqIEpJVENvZGVXaXRoQ29kZVJlZjo6ZGF0YUFkZHJlc3NBdE9mZnNldChz
aXplX3Qgb2Zmc2V0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVmKTsKICAgICBBU1NFUlQo
b2Zmc2V0IDw9IHNpemUoKSk7IC8vIHVzZSA8PSBpbnN0ZWFkIG9mIDwgYmVjYXVzZSBpdCBpcyB2
YWxpZCB0byBhc2sgZm9yIGFuIGFkZHJlc3MgYXQgdGhlIGV4Y2x1c2l2ZSBlbmQgb2YgdGhlIGNv
ZGUuCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fcmVmLmNvZGUoKS5kYXRh
TG9jYXRpb24oKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIG1fcmVmLmNvZGUoKS5kYXRhTG9jYXRp
b248Y2hhcio+KCkgKyBvZmZzZXQ7CiB9CiAKIHVuc2lnbmVkIEpJVENvZGVXaXRoQ29kZVJlZjo6
b2Zmc2V0T2Yodm9pZCogcG9pbnRlckludG9Db2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
cmVmKTsKLSAgICBpbnRwdHJfdCByZXN1bHQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihw
b2ludGVySW50b0NvZGUpIC0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9yZWYuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIGludHB0cl90IHJlc3VsdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXJJbnRvQ29kZSkgLSBtX3JlZi5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3M8aW50cHRyX3Q+KCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludHB0cl90Pihz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVzdWx0KSkgPT0gcmVzdWx0KTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBKSVREaXNhc3NlbWJsZXI6OmR1bXBEaXNh
c3NlbWJseShQcgogewogICAgIENvZGVMb2NhdGlvbkxhYmVsIGZyb21Mb2NhdGlvbiA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihmcm9tKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCB0b0xvY2F0aW9u
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHRvKTsKLSAgICBkaXNhc3NlbWJsZShmcm9tTG9jYXRp
b24sIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRvTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KSkgLSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihmcm9tTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKSksICIgICAgICAgICIsIG91dCk7CisgICAgZGlzYXNzZW1ibGUoZnJvbUxvY2F0aW9uLCB0
b0xvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIGZyb21Mb2NhdGlvbi5l
eGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksICIgICAgICAgICIsIG91dCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29k
ZU9yaWdpbk1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
Q1RvQ29kZU9yaWdpbk1hcC5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwNCw4ICsy
MDQsOCBAQCBQQ1RvQ29kZU9yaWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXAoUENUCiAgICAgICAg
ICAgICBjb2RlT3JpZ2luQ29tcHJlc3Nvci53cml0ZTx1aW50cHRyX3Q+KGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgfTsKIAotICAgIG1f
cGNSYW5nZVN0YXJ0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZlci5sb2NhdGlv
bk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2VzLmZpcnN0KCkuc3RhcnQpLmRhdGFMb2NhdGlvbigpKTsK
LSAgICBtX3BjUmFuZ2VFbmQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YoYnVpbGRlci5tX2NvZGVSYW5nZXMubGFzdCgpLmVuZCkuZGF0YUxvY2F0aW9uKCkp
OworICAgIG1fcGNSYW5nZVN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9j
b2RlUmFuZ2VzLmZpcnN0KCkuc3RhcnQpLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCk7CisgICAg
bV9wY1JhbmdlRW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2Vz
Lmxhc3QoKS5lbmQpLmRhdGFMb2NhdGlvbjx1aW50cHRyX3Q+KCk7CiAgICAgbV9wY1JhbmdlRW5k
IC09IDE7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVpbGRlci5tX2NvZGVSYW5n
ZXMuc2l6ZSgpOyBpKyspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNyBAQCB2b2lkIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChDb2RlQmxvY2sqCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcygKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAg
ICBrZXkgPSBrZXkud2l0aENhbGxUYXJnZXQobmV3Q2FsbGVlRnVuY3Rpb24uZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7Ci0gICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uID0gRnVuY3Rpb25QdHIoCi0gICAg
ICAgICAgICB0aHVua3MuZ2V0U2xvd1BhdGhDYWxsVGh1bmsoa2V5KS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgICAgIG5ld0NhbGxlZUZ1bmN0aW9uID0gRnVuY3Rpb25QdHIodGh1
bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKGtleSkuY29kZSgpKTsKICAgICB9CiAjZWxzZSAvLyBF
TkFCTEUoRlRMX0pJVCkKICAgICBVTlVTRURfUEFSQU0oY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIy
NTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTItMjAxNCwgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE2LDYgKzIxNiwxMCBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNCiAgICAgCiAgICAgLy8gTWFrZSBh
IHRhaWwgY2FsbC4gVGhpcyB3aWxsIHJldHVybiBiYWNrIHRvIEpJVCBjb2RlLgogICAgIEpTSW50
ZXJmYWNlSklUOjpMYWJlbCBjYWxsQ29kZShqaXQubGFiZWwoKSk7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBqaXQubG9hZDY0KCZnX21hc21TY3JhbWJsZWRQdHJLZXksIEdQUkluZm86OnJlZ1Qx
KTsKKyAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKKyNlbmRp
ZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKICAgICBp
ZiAoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSkgewogICAgICAgICBqaXQucHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1QwKTsKQEAgLTExNTgsNiArMTE2MiwxMCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0gaml0LmJyYW5jaFRl
c3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBqaXQubG9hZDY0KCZnX21hc21TY3JhbWJsZWRQdHJLZXksIEdQUklu
Zm86OnJlZ1QxKTsKKyAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
KTsKKyNlbmRpZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpyZWdUMCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyNTI2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJh
bmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBv
cGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwKKyAgICBkYXRhTG9n
RigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWRcbiIsCisgICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CkBAIC0yMTQsNyArMjE1LDggQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhYwogICAgIH0gdTsKICAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwog
ICAgIGRhdGFMb2dGKAotICAgICAgICAiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6
IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAiPCVkPiAlcCAv
ICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4
eDogJXNcbiIsCisgICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAgLTIzMCw3ICsy
MzIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjCiAKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHRyYWNlX3Byb2xvZ3VlKQogewotICAgIGRhdGFMb2dGKCIlcCAvICVw
OiBpbiBwcm9sb2d1ZSBvZiAiLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgZGF0YUxv
Z0YoIjwlZD4gJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgY3VycmVudFRocmVhZCgpLCBleGVj
LT5jb2RlQmxvY2soKSwgZXhlYyk7CiAgICAgZGF0YUxvZygqZXhlYy0+Y29kZUJsb2NrKCksICJc
biIpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9CkBAIC0yNDAsNyArMjQyLDcgQEAgc3RhdGlj
IHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdAogICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5kKTsKLSAgICBk
YXRhTG9nRigiJXAgLyAlcDogaW4gJXMgb2YgIiwgY29kZUJsb2NrLCBleGVjLCBjb21tZW50KTsK
KyAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBpbiAlcyBvZiAiLCBjdXJyZW50VGhyZWFkKCks
IGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CiAgICAgZGF0YUxvZygqY29kZUJsb2NrKTsKICAg
ICBkYXRhTG9nRigiIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51
bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlTG9jYWxzID0gJXUsIGNhbGxlciA9ICVwLlxuIiwK
ICAgICAgICAgY2FsbGVlLCBleGVjdXRhYmxlLCBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHMsIGV4ZWMt
PmNhbGxlckZyYW1lKCkpOwpAQCAtMjczLDcgKzI3NSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHRyYWNlX2FyaXR5Q2hlY2tfZm8KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogewogICAg
IE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKTsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0g
JXBcbiIsCisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMs
IHBjID0gJXBcbiIsCisgICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSksCkBAIC0yOTEsNyArMjk0LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2UpCiB7Ci0gICAgZGF0YUxvZ0YoIiVw
IC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlz
ICVwXG4iLAorICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNh
c2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICAgY3VycmVu
dFRocmVhZCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBl
eGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMTMwNSw2ICsxMzA5LDcgQEAgc3Rh
dGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgZXhlY0Nh
bGxlZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0uaG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24o
ZXhlY0NhbGxlZSkpOwogICAgICAgICAgICAgCisgICAgICAgICAgICBNYXNtU2NyYW1ibGVkUHRy
OjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIGV4ZWNDYWxsZWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
KTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTEzMjgsNiArMTMzMyw3IEBAIHN0YXRpYyBTbG93
UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUp
KTsKIAorICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENvZGVQ
dHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgIH0KICAgICAKQEAgLTEzNjgsNiArMTM3
NCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKTsKICAgICAgICAgfQogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE0
MTgsNiArMTQyNSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMK
ICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVjLCBjYWxsTGlua0lu
Zm8pOwogICAgIH0KIAorICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RT
Y3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjLCBleGVjQ2FsbGVlLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5
NDYsOCArMTk0NiwxMCBAQCBtYWNybyBkb0NhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCiAgICAgc3RvcmVpIHQy
LCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAg
IHByZXBhcmVDYWxsKExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQy
LCB0MywgdDQpCi0gICAgY2FsbFRhcmdldEZ1bmN0aW9uKExMSW50Q2FsbExpbmtJbmZvOjptYWNo
aW5lQ29kZVRhcmdldFt0MV0pCisgICAgbG9hZHAgX2dfbWFzbVNjcmFtYmxlZFB0cktleSwgdDIK
KyAgICB4b3JwIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQyCisg
ICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHQy
KQogCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgsIHByZXBhcmVD
YWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29w
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNiArMzAyLDEyIEBAIGNsYXNzIEFic29sdXRlQWRk
cmVzcwogICAgIGVuZAogZW5kCiAKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGludE1l
bVJlZgorICAgICAgICAiKkNBU1Q8aW50cHRyX3QqPigmI3tjTGFiZWx9KSIKKyAgICBlbmQKK2Vu
ZAorCiAKICMKICMgTGVhIHN1cHBvcnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjI1MjY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBA
IC01OCw2ICs1OSw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAKICAgICBzdGQ6OmNh
bGxfb25jZShpbml0aWFsaXplVGhyZWFkaW5nT25jZUZsYWcsIFtdewogICAgICAgICBXVEY6Omlu
aXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0
aWFsaXplKCk7CiAgICAgICAgIE9wdGlvbnM6OmluaXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJ
VEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0
aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNywxMiArMzI3LDEyIEBAIHZvaWQgQkJR
UGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2MKIAogICAgICAgICBmb3IgKGF1dG8mIHVu
bGlua2VkIDogbV91bmxpbmtlZFdhc21Ub1dhc21DYWxscykgewogICAgICAgICAgICAgZm9yIChh
dXRvJiBjYWxsIDogdW5saW5rZWQpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBleGVjdXRhYmxl
QWRkcmVzczsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZXhlY3V0YWJs
ZUFkZHJlc3M7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kdWxlSW5mb3JtYXRpb24tPmlzSW1w
b3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoY2FsbC5mdW5jdGlvbkluZGV4U3Bh
Y2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FIGltcG9ydHMgY291bGQgaGF2ZSBi
ZWVuIGxpbmtlZCBpbiBCMywgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludC4gVGhp
cyBjb25kaXRpb24gc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgUkVMRUFTRV9BU1NFUlQuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0NjIKLSAgICAgICAgICAgICAg
ICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuYXQoY2FsbC5m
dW5jdGlvbkluZGV4U3BhY2UpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAg
ICAgICAgICAgICBleGVjdXRhYmxlQWRkcmVzcyA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5hdChj
YWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSkuY29kZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVu
Y3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+ZW50cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNz
ID0gbV93YXNtSW50ZXJuYWxGdW5jdGlvbnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgLSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCkpLT5lbnRyeXBvaW50LmNv
bXBpbGF0aW9uLT5jb2RlKCk7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0
Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZXhlY3V0YWJs
ZUFkZHJlc3MpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpjYWxsZWUpOwogICAgIH0K
IAotICAgIHZvaWQqIGVudHJ5cG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29t
cGlsYXRpb24tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyB9CisgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGVudHJ5cG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGls
YXRpb24tPmNvZGUoKTsgfQogCiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSB7IHJldHVybiAmbV9lbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnM7IH0K
ICAgICBJbmRleE9yTmFtZSBpbmRleE9yTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhPck5h
bWU7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2su
Y3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhDb250ZXh0KiBjb250ZXh0LCBNCiAgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fY2FsbGVlc1tjYWxsZWVJbmRleF0gPSBXVEZNb3ZlKHdhc21FbnRyeXBvaW50Q2FsbGVl
KTsKLSAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2NhbGxlZUluZGV4
XSA9IG1fY2FsbGVlc1tjYWxsZWVJbmRleF0tPmVudHJ5cG9pbnQoKTsKKyAgICAgICAgICAgIG1f
d2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2NhbGxlZUluZGV4XSA9IG1fY2FsbGVlc1tjYWxs
ZWVJbmRleF0tPmVudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9KTsK
IAogICAgICAgICBtX3dhc21Ub1dhc21FeGl0U3R1YnMgPSBtX3BsYW4tPnRha2VXYXNtVG9XYXNt
RXhpdFN0dWJzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxh
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE9N
R1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAKICAgICBvbWdFbnRyeXBvaW50LmNhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBXVEZNb3ZlKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC52YWx1ZSgpLT5l
bnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMpOwogCi0gICAgdm9pZCogZW50cnlwb2ludDsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2ludDsKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2NvZGVCbG9jay5wdHIoKSA9PSBtX21vZHVsZS0+Y29kZUJsb2NrRm9yKG1vZGUoKSkp
OwogICAgICAgICBSZWY8Q2FsbGVlPiBjYWxsZWUgPSBDYWxsZWU6OmNyZWF0ZShXVEZNb3ZlKG9t
Z0VudHJ5cG9pbnQpLCBmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5h
bWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSk7CkBAIC0xMTksOSArMTE5LDkgQEAg
dm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICBtX2NvZGVCbG9j
ay0+bV9vcHRpbWl6ZWRDYWxsZWVzW21fZnVuY3Rpb25JbmRleF0gPSBXVEZNb3ZlKGNhbGxlZSk7
CiAKICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogdW5saW5rZWRDYWxscykgewotICAgICAgICAg
ICAgdm9pZCogZW50cnlwb2ludDsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBl
bnRyeXBvaW50OwogICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIDwgbV9t
b2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKQotICAgICAg
ICAgICAgICAgIGVudHJ5cG9pbnQgPSBtX2NvZGVCbG9jay0+bV93YXNtVG9XYXNtRXhpdFN0dWJz
W2NhbGwuZnVuY3Rpb25JbmRleFNwYWNlXS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRvV2FzbUV4aXRT
dHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSgpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQgPSBtX2NvZGVCbG9jay0+d2FzbUVudHJ5cG9pbnRD
YWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5lbnRy
eXBvaW50KCk7CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGls
YXRpb25FZmZvcnQpCiAgICAgcmVzZXRJbnN0cnVjdGlvbkNhY2hlT25BbGxUaHJlYWRzKCk7CiAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gVGhpcyBwcm9iYWJseSBpc24ndCBuZWNlc3Nh
cnkgYnV0IGl0J3MgZ29vZCB0byBiZSBwYXJhbm9pZC4KIAotICAgIG1fY29kZUJsb2NrLT5tX3dh
c21JbmRpcmVjdENhbGxFbnRyeVBvaW50c1ttX2Z1bmN0aW9uSW5kZXhdID0gZW50cnlwb2ludDsK
KyAgICBtX2NvZGVCbG9jay0+bV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlv
bkluZGV4XSA9IGVudHJ5cG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgaG9sZGVyKG1fY29kZUJsb2NrLT5tX2xvY2spOwogCkBAIC0xNDQsNyArMTQ0
LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICAgICAg
Zm9yIChhdXRvJiBjYWxsIDogY2FsbHNpdGVzKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcg
Y2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSks
ICIgdGhhdCB0YXJnZXRzICIsIGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZl
cmJvc2UsICJSZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRp
b24uZGF0YUxvY2F0aW9uKCkpLCAiIHRvICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3Nl
LCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRh
dGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9pbnQuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOwogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5l
YXJDYWxsKGNhbGwuY2FsbExvY2F0aW9uLCBDb2RlTG9jYXRpb25MYWJlbChlbnRyeXBvaW50KSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MjcsNyArNjI3LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBCaW5kaW5nRgog
ICAgIGlmIChVTkxJS0VMWShwYXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEJpbmRpbmdGYWlsdXJlOjpPdXRPZk1lbW9yeSk7CiAK
LSAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0Q1RJU3R1
YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwor
ICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtLT5nZXRDVElTdHVi
KGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVs
IGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0Nh
bGwpKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBob3RQYXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZih0YXJnZXRUb0NoZWNrKSk7CiAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0
aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICB2bS53
YXNtQ29udGV4dC5zdG9yZSh3YXNtSW5zdGFuY2UsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogICAg
IEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOwogICAgIEFTU0VSVCgmd2FzbUZ1bmN0
aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpID09IHZtLndhc21Db250ZXh0LmxvYWQoKSk7Ci0g
ICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24t
PmpzRW50cnlwb2ludCgpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgRW5jb2RlZEpTVmFs
dWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKICAgICAvLyBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluIGEgcmVnaXN0ZXIgb3Igb24gdGhlIHN0YWNrIHNp
bmNlIGl0J3Mgc3RvcmVkIGluIFZlY3RvcjxKU1ZhbHVlPi4KICAgICAvLyBUaGlzIHByb2JhYmx5
IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgc2luY2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24q
IHNob3VsZCBrZWVwIHRoZSBpbnN0YW5jZQogICAgIC8vIGFsaXZlLiBCdXQgaXQncyBnb29kIGh5
Z2llbmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJX
ZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpA
QCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgV2FzbTo6V2FzbUVudHJ5cG9pbnRMb2FkTG9j
YXRpb24gd2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3dhc21G
dW5jdGlvbi5jb2RlOyB9CiAgICAgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbiBjYWxsYWJsZUZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV93YXNtRnVuY3Rpb247IH0KIAotICAgIHZvaWQqIGpzRW50
cnlwb2ludCgpIHsgcmV0dXJuIG1fanNFbnRyeXBvaW50OyB9CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIGpzRW50cnlwb2ludCgpIHsgcmV0dXJuIG1fanNFbnRyeXBvaW50OyB9CiAKICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mV2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2ViQXNzZW1ibHlGdW5jdGlvbiwgbV93YXNtRnVuY3Rpb24p
ICsgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZXYXNtRW50cnlwb2ludExvYWRMb2Nh
dGlvbigpOyB9CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJdCdzIHNhZmUg
dG8ganVzdCBob2xkIHRoZSByYXcgQ2FsbGFibGVGdW5jdGlvbi9qc0VudHJ5cG9pbnQgYmVjYXVz
ZSB3ZSBoYXZlIGEgcmVmZXJlbmNlCiAgICAgLy8gdG8gb3VyIEluc3RhbmNlLCB3aGljaCBwb2lu
dHMgdG8gdGhlIE1vZHVsZSB0aGF0IGV4cG9ydGVkIHVzLCB3aGljaAogICAgIC8vIGVuc3VyZXMg
dGhhdCB0aGUgYWN0dWFsIFNpZ25hdHVyZS9jb2RlIGRvZXNuJ3QgZ2V0IGRlYWxsb2NhdGVkLgot
ICAgIHZvaWQqIG1fanNFbnRyeXBvaW50OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pz
RW50cnlwb2ludDsKICAgICBXYXNtOjpDYWxsYWJsZUZ1bmN0aW9uIG1fd2FzbUZ1bmN0aW9uOwog
fTsKIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTEtMjkgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIExldCdzIHNjcmFtYmxlIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODAxNjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1NzU4MzQwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIFNj
cmFtYmxlZFB0ciBjbGFzcyB0byBmYWNpbGl0YXRlIHNjcmFtYmxpbmcuCisKKyAgICAgICAgKiBX
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvU2NyYW1ibGVkUHRy
LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXkpOgorICAgICAg
ICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0
cjo6U2NyYW1ibGVkUHRyKToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFz
c2VydElzU2NyYW1ibGVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJh
bm9pZEFzc2VydElzTm90U2NyYW1ibGVkIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVk
UHRyOjogY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OnNjcmFtYmxlZEJpdHMgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChX
VEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0
cjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGUpOgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGUpOgorCiAyMDE3LTExLTE0ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBNb3Zl
IEpTT05WYWx1ZXMgdG8gV1RGIGFuZCBjb252ZXJ0IHVzZXMgb2YgSW5zcGVjdG9yVmFsdWVzLmgg
dG8gSlNPTlZhbHVlcy5oCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQAogCQlFMzhENkUy
NzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJFMzAwQTc1Q0M0
IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2
REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsg
fTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1
M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CisJCUZFODU0MTZFMUZCRTI4
NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFNjcmFtYmxl
ZFB0ci5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFD
RDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC01OTYsNiArNTk3LDggQEAKIAkJRUY3RDZDRDU5RDg2
NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJCQkRC
MTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyYW1ibGVkUHRyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURBIC8qIFNjcmFt
YmxlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JhbWJsZWRQdHIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJG
IC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcmJpZEhlYXBBbGxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTk3OSw2ICs5ODIsOCBAQAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3
MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3Bl
ZExhbWJkYS5oICovLAorCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQ
dHIuY3BwICovLAorCQkJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
aCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgKi8sCiAJ
CQkJMEY2NkIyODUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJCQlBOEE0NzMw
NjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0xNDU3LDYgKzE0
NjIsNyBAQAogCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM5NjFEMzA4MDBBMDBGNUZBMTYgLyogVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzRTRE
RDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTMxMUZCMTcxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4QTQ3NDRBMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEUxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGlu
Z1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvU2NyYW1i
bGVkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JhbWJsZWRQ
dHIuaCIKKworI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJLZXkoKQorewor
ICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKKyAgICBrZXkg
fD0gMHg3OyAvLyBFbnN1cmUgdGhhdCBhbnkgdmFsaWQgcG9pbnRlciBeIGtleSB3aWxsIG5vdCBi
ZSAwLgorICAgIGtleSB8PSAoc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCA2Myk7IC8vIEVu
c3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBkbyBub3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIu
CisjZWxzZQorICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAz
Mi1iaXQgeWV0LgorI2VuZGlmCisgICAgcmV0dXJuIGtleTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
VEYvd3RmL1NjcmFtYmxlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjZGVmaW5lIEVOQUJMRV9QQVJBTk9J
RF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMgMAorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgU2Ny
YW1ibGVkUHRyQml0cyA9IHVpbnRwdHJfdDsKKwordGVtcGxhdGU8dWludHB0cl90JiBrZXk+Citj
bGFzcyBTY3JhbWJsZWRQdHIgeworcHVibGljOgorICAgIFNjcmFtYmxlZFB0cigpIHsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KKyAgICBleHBsaWNpdCBTY3JhbWJs
ZWRQdHIoVCBwdHIpCisgICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCisg
ICAgeworICAgICAgICBBU1NFUlQocHRyICYmIG1fc2NyYW1ibGVkQml0cyk7CisgICAgfQorCisg
ICAgU2NyYW1ibGVkUHRyKFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsKKyAgICBTY3JhbWJsZWRQ
dHIoY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgU2NyYW1i
bGVkUHRyKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykKKyAgICAgICAgOiBtX3NjcmFt
YmxlZEJpdHMoc2NyYW1ibGVkQml0cykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3NjcmFtYmxl
ZEJpdHMpOworICAgIH0KKworI2lmIEVOQUJMRShQQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VS
VFMpICYmIFVTRShKU1ZBTFVFNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgor
ICAgIHN0YXRpYyBib29sIGlzU2NyYW1ibGVkKFQgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZSB8fCAo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4ZmZmZjAwMDAwMDAwMDAwMCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgcGFy
YW5vaWRBc3NlcnRJc1NjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1i
bGVkKHZhbHVlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3Rh
dGljIHZvaWQgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVBU0Vf
QVNTRVJUKCFpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQgPSB2b2lkKj4gc3RhdGljIHZvaWQgcGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZChUKSB7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIHBhcmFub2lk
QXNzZXJ0SXNOb3RTY3JhbWJsZWQoVCkgeyB9CisjZW5kaWYKKyAgICB2b2lkIHBhcmFub2lkQXNz
ZXJ0SXNTY3JhbWJsZWQoKSBjb25zdCB7IHBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQobV9zY3Jh
bWJsZWRCaXRzKTsgfQorICAgIHZvaWQgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNv
bnN0IHsgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgVCBkZXNjcmFtYmxlKCkgY29u
c3QgeyByZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRv
ci0+KCkgY29uc3QgeyByZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisK
KyAgICBTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmFtYmxlZEJpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
c2NyYW1ibGVkQml0czsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmFtYmxlZFB0ciYgYikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjcmFtYmxlZEJp
dHMgPT0gYi5tX3NjcmFtYmxlZEJpdHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
UHRyVHlwZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBQdHJUeXBlIGIpCisgICAgeworICAgICAgICByZXR1cm4gZGVzY3JhbWJsZTxQdHJUeXBl
PigpID09IGI7CisgICAgfQorCitwcml2YXRlOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJsZWRQdHJC
aXRzIHNjcmFtYmxlKFQgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVkUHRyQml0
cz4ocHRyKSBeIGtleTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgVCBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykg
eyByZXR1cm4gYml0d2lzZV9jYXN0PFQ+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisjZWxzZQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1i
bGVkUHRyQml0cyBzY3JhbWJsZShUIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxl
ZFB0ckJpdHM+KHB0cik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFQgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzY3JhbWJsZWRCaXRzKTsgfQorI2VuZGlmCisKKyAg
ICBTY3JhbWJsZWRQdHJCaXRzIG1fc2NyYW1ibGVkQml0cyB7IDAgfTsKK307CisKK3ZvaWQgaW5p
dGlhbGl6ZVNjcmFtYmxlZFB0cigpOworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtl
U2NyYW1ibGVkUHRyS2V5KCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNj
cmFtYmxlZFB0cjsKK3VzaW5nIFdURjo6U2NyYW1ibGVkUHRyQml0czsKK3VzaW5nIFdURjo6bWFr
ZVNjcmFtYmxlZFB0cktleTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327939</attachid>
            <date>2017-11-29 17:45:15 -0800</date>
            <delta_ts>2017-11-29 20:43:59 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>87072</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMS4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5vdyBzdG9yZXMgYSBTY3Jh
bWJsZWRQdHIgaW5zdGVhZCBvZiBhIHZvaWQqLgorCisgICAgICAgIDIuIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cidzIGV4ZWN1dGFibGVBZGRyZXNzKCkgYW5kIGRhdGFMb2NhdGlvbigpIG5vdyB0YWtl
IGEKKyAgICAgICAgICAgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0
byBjYXN0IHRoZSByZXN1bHQuICBUaGlzIG1ha2VzIHRoZQorICAgICAgICAgICBjbGllbnQgY29k
ZSB0aGF0IHVzZXMgdGhlc2UgZnVuY3Rpb25zIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAg
ICAgICAzLiBDaGFuZ2UgdGhlIGNvZGUgYmFzZSBpbiBnZW5lcmFsIHRvIG1pbmltaXplIHBhc3Np
bmcgdm9pZCogY29kZSBwb2ludGVycyBhcm91bmQuCisgICAgICAgICAgIFdlIG5vdyBwYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZGVzY3JhbWJsZSBp
dCBvbmx5CisgICAgICAgICAgIGF0IHRoZSBsYXN0IG1vbWVudCB3aGVuIHdlIG5lZWQgdGhlIHVu
ZGVybHlpbmcgY29kZSBwb2ludGVyLgorCisgICAgICAgIDQuIEFkZGVkIHNvbWUgTWFzbVNjcmFt
YmxlZFB0ciBwYXJhbm9pZCBhc3NlcnRzIHRoYXQgYXJlIGRpc2FibGVkIChub3QgYnVpbHQpIGJ5
CisgICAgICAgICAgIGRlZmF1bHQuICBJJ20gbGVhdmluZyB0aGVtIGluIGJlY2F1c2UgdGhleSBh
cmUgaW5zdHJ1bWVudGFsIGluIGZpbmRpbmcgYnVncworICAgICAgICAgICB3aGVyZSBub3QgYWxs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMgd2VyZSBub3Qgc2NyYW1ibGVkIGFzIGV4cGVj
dGVkLgorICAgICAgICAgICBJIGV4cGVjdCB0aGVtIHRvIGJlIHVzZWZ1bCBpbiB0aGUgbmVhciBm
dXR1cmUgYXMgd2UgYWRkIG1vcmUgc2NyYW1ibGluZy4KKworICAgICAgICA1LiBBbHNvIGRpc2Fi
bGUgdGhlIGNhc3Rpbmcgb3BlcmF0b3Igb24gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIChleGNlcHQg
Zm9yCisgICAgICAgICAgIGV4cGxpY2l0IGNhc3RzIHRvIGEgYm9vbGVhbikuICBUaGlzIGVuc3Vy
ZXMgdGhhdCBjbGllbnRzIHdpbGwgYWx3YXlzIGV4cGxpY2l0bHkKKyAgICAgICAgICAgdXNlIHNj
cmFtYmxlZEJpdHMoKSBvciBleGVjdXRhYmxlQWRkcmVzcygpIHRvIGdldCBhIHZhbHVlIGJhc2Vk
IG9uIHdoaWNoIHZhbHVlCisgICAgICAgICAgIHRoZXkgYWN0dWFsbHkgbmVlZC4KKworICAgICAg
ICA1LiBBZGRlZCBjdXJyZW50VGhyZWFkKCkgaWQgdG8gdGhlIGxvZ2dpbmcgaW4gTExJbnRTbG93
UGF0aCB0cmFjZSBmdW5jdGlvbnMuCisgICAgICAgICAgIFRoaXMgd2FzIGhlbHBmdWwgd2hlbiBk
ZWJ1Z2dpbmcgdGVzdHMgdGhhdCByYW4gbXVsdGlwbGUgVk1zIGNvbmN1cnJlbnRseSBvbgorICAg
ICAgICAgICBkaWZmZXJlbnQgdGhyZWFkcy4KKworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbiA2NC1iaXQgYnVpbGRzIChpbmNsdWRpbmcgdGhl
CisgICAgICAgIENMb29wKS4gIEl0IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIDMyLWJpdCBiZWNh
dXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5CisgICAgICAgIHRvIHJlYWQgYSBnbG9i
YWwgdmFyaWFibGUgZnJvbSAzMi1iaXQgTExJbnQgY29kZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29k
ZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6aW5zdHJ1Y3Rp
b25BdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxBdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6anVtcEF0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpjYWxsQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbFB0ckF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWwzMkF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGluayk6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OnBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpl
eGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJldHVybkFkZHJlc3NQdHI6
OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OnNjcmFtYmxlZFB0ciBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZXhlY3V0YWJsZUFkZHJl
c3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmRhdGFMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlck1hY3Jv
cy5jcHA6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJ
bnRlcnByZXRlcik6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxp
bmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hh
clN0cmluZ0p1bXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxl
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYpOgorICAgICAgICAqIGZ0bC9GVExD
b21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0aElDKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0TWF0aElDRmFzdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ1Nsb3cpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZVdpdGhDb2Rl
UmVmOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpvZmZzZXRPZik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6
CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAg
ICAgKiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwOgorICAgICAgICAoSlNDOjpQQ1RvQ29kZU9y
aWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXApOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKToKKyAgICAgICAgKiBqaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAg
ICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxlZTo6ZW50cnlwb2ludCBjb25zdCk6CisgICAgICAgICogd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSk6CisKIDIwMTctMTEtMjkgIE1hdHQgTGV3aXMg
IDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjI1Mjg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzAsNyArODMwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBhLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGIpCiAgICAgewotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KGIuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBy
ZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oYS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgcmV0dXJuIGIuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpIC0gYS5leGVjdXRhYmxl
QWRkcmVzczxwdHJkaWZmX3Q+KCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQo
KSB7IHJldHVybiBtX2Fzc2VtYmxlci5kZWJ1Z09mZnNldCgpOyB9CkBAIC04NTIsNiArODUyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFi
ZWwsIHZhbHVlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBj
b2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWwsIHZh
bHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkKiBnZXRM
aW5rZXJBZGRyZXNzKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGxhYmVsKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmdldFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgbGFi
ZWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2Nh
dGlvbi5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NCw1NSArMTY0LDU1IEBAIHB1Ymxp
YzoKIGlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omlu
c3RydWN0aW9uQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9P
RkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4g
Q29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24oZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsK
IH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsIENvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxB
dE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZz
ZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJl
bChkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0
aW9uSnVtcCBDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KQogewog
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9j
YXRpb25KdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsg
b2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkNhbGwgQ29kZUxvY2F0aW9uQ29tbW9u
OjpjYWxsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChyZWludGVycHJldF9jYXN0
PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRp
b25DYWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2Rl
TG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQoaW50
IG9mZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RF
X09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25OZWFyQ2FsbChyZWludGVy
cHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQsIGNhbGxNb2RlKTsKKyAg
ICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zm
c2V0LCBjYWxsTW9kZSk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgQ29k
ZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAg
IEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsg
b2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKGRhdGFMb2NhdGlv
bjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwz
MiBDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsK
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkp
ICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIoZGF0YUxvY2F0
aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJl
bENvbXBhY3QgQ29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50
IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRh
TGFiZWxDb21wYWN0KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGlu
ZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9m
ZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZlcjo6Zmlu
YWxpemUKICAgICB2YV9lbmQoYXJnTGlzdCk7CiAgICAgb3V0LnByaW50ZigiOlxuIik7CiAKLSAg
ICBvdXQucHJpbnRmKCIgICAgQ29kZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnRmKCIgICAgQ29k
ZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVz
dWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHJlc3VsdC5zaXplKCkpOwog
ICAgIAogICAgIENTdHJpbmcgaGVhZGVyID0gb3V0LnRvQ1N0cmluZygpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9u
IDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGxpbmsoQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
ICAgICB7Ci0gICAgICAgIGxpbmsoY2FsbCwgRnVuY3Rpb25QdHIobGFiZWwuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOworICAgICAgICBsaW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGxhYmVsKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgbGluayhKdW1wIGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVs
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdGNoKERhdGFMYWJlbFB0
ciBsYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgdmFsdWUpCiAgICAgewogICAgICAgICBBc3NlbWJs
ZXJMYWJlbCB0YXJnZXQgPSBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFyZ2V0LCB2YWx1ZS5leGVjdXRhYmxl
QWRkcmVzcygpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwg
dGFyZ2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0
byBvYnRhaW4gaGFuZGxlcyB0byBhbGxvdyB0aGUgY29kZSB0byBiZSByZWxpbmtlZCAvIHJlcGF0
Y2hlZCBsYXRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw5ICsyOSwyMCBAQAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNs
dWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJs
ZWRQdHJLZXk7CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICBnX21hc21TY3JhbWJs
ZWRQdHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihP
cGNvZGVJRCBjb2RlSWQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNp
b24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UiBjaGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBhbmQgdGhhdCBpdCBpcyBh
IHZhbGlkCkBAIC01MCw2ICs1MSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3VzaW5n
IE1hc21TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8Z19tYXNtU2NyYW1ibGVkUHRyS2V5PjsK
KworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworCiBlbnVtIE9wY29kZUlEIDogdW5zaWdu
ZWQ7CiAKIC8vIEZ1bmN0aW9uUHRyOgpAQCAtNTgsMTUgKzY1LDEzIEBAIGVudW0gT3Bjb2RlSUQg
OiB1bnNpZ25lZDsKIC8vIChwYXJ0aWN1bGFybHksIHRoZSBzdHViIGZ1bmN0aW9ucykuCiBjbGFz
cyBGdW5jdGlvblB0ciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25QdHIoKQotICAgICAgICA6IG1f
dmFsdWUoMCkKLSAgICB7Ci0gICAgfQorICAgIEZ1bmN0aW9uUHRyKCkgeyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTc0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVl
KShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0K
IApAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgq
dmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90
U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1f
dmFsdWUpOwogICAgIH0KIApAQCAtODgsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNT
RVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTk1LDYgKzEwMyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMs
IGFyZ1R5cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIApAQCAtMTA5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQs
IGFyZ1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBzZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRp
ZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGFzCkBAIC0xMTksNiArMTMwLDcgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAg
cHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlw
ZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEz
Myw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wg
KnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTE0MCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0x
NDcsNiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNM
ICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE1Nyw2ICsx
NzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTE2NCw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFT
VENBTEwgKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUp
CiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIApAQCAtMTcxLDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0
cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAg
ICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVk
UHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTc4LDYgKzE5Nyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIs
IGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGljOgogICAgICAgICAv
LyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJlbnQgY29u
c3RuZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0g
ICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgZXhwbGljaXQgRnVuY3Rpb25QdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKIAorICAgIHZv
aWQqIHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFu
b2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVl
OworICAgIH0KKyAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCogbV92YWx1ZTsKKyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0
dXJuQWRkcmVzc1B0cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlz
IHRoZSBzb3VyY2Ugb2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0
ciB7CiBwdWJsaWM6Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgw
KQotICAgIHsKLSAgICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRy
IGZ1bmN0aW9uKQogICAgICAgICA6IG1fdmFsdWUoZnVuY3Rpb24udmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92
YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAg
fQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgdm9p
ZCogdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5v
aWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
IHsKQEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQqIG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07CiAKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgyLDcgQEAgcHJpdmF0ZToKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0byB3cmFwIHBvaW50ZXJzIHRvIEpJ
VCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB7CiBwdWJsaWM6
Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAg
ewotICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSB7IH0KIAogICAgIGV4cGxpY2l0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkKICNpZiBDUFUoQVJNX1RIVU1CMikK
QEAgLTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
I2VuZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQo
KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCiAgICAgeworICAg
ICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZh
bHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1i
bGVkUHRyKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1Nj
cmFtYmxlZCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjc3LDI0ICsz
MTIsNjQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVChyYS52YWx1ZSgpKTsKKyAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2Vy
dElzU2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+Cisg
ICAgVCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLnBh
cmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3Zh
bHVlLmRlc2NyYW1ibGU8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgIH0KICNpZiBDUFUo
QVJNX1RIVU1CMikKICAgICAvLyBUbyB1c2UgdGhpcyBwb2ludGVyIGFzIGEgZGF0YSBhZGRyZXNz
IHJlbW92ZSB0aGUgZGVjb3JhdGlvbi4KLSAgICB2b2lkKiBkYXRhTG9jYXRpb24oKSBjb25zdCB7
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihtX3ZhbHVlKSAtIDE7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9p
ZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92YWx1ZS5w
YXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/
IG1fdmFsdWUuZGVzY3JhbWJsZTxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKKyAgICB9CiAjZWxz
ZQotICAgIHZvaWQqIGRhdGFMb2NhdGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ID0gdm9pZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92
YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5k
ZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoUEFSQU5PSURfU0NSQU1C
TEVEX1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0
ZWRWYWx1ZSgpKQorICAgICAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVk
KCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlOworICAgIH0KKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISghKnRoaXMpOyB9CiAgICAgCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgb3RoZXIpIGNvbnN0
CiAgICAgeworI2lmIEVOQUJMRShQQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisgICAg
ICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZhbHVlKCkpCisgICAgICAgICAg
ICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgaWYgKCFvdGhl
ci5pc0VtcHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKKyAgICAgICAgICAg
IG90aGVyLm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCiAgICAg
ICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCisgICAgLy8gRGlz
YWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3Rl
YWQsIHRoZSBjbGllbnQKKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIo
KSBvciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46
OnZhbHVlPj4KKyAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CisKICAgICB2b2lkIGR1bXBXaXRo
TmFtZShjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CkBAIC0zMDQsMjQgKzM3OSwyNCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKEVtcHR5VmFsdWVUYWcp
CiAgICAgICAgIDogbV92YWx1ZShlbXB0eVZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0K
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoRGVsZXRlZFZhbHVlVGFnKQogICAgICAg
ICA6IG1fdmFsdWUoZGVsZXRlZFZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAK
ICAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlW
YWx1ZSgpOyB9CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUgPT0gZGVsZXRlZFZhbHVlKCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gUHRySGFzaDx2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKworICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdCB7IHJldHVybiBQdHJIYXNoPHVpbnRwdHJfdD46Omhhc2gobV92YWx1ZS5z
Y3JhbWJsZWRCaXRzKCkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxKSk7IH0KLSAgICBzdGF0aWMgdm9pZCog
ZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oMikpOyB9Ci0gICAgCi0gICAgdm9pZCogbV92YWx1ZTsKKyAgICBzdGF0aWMgTWFz
bVNjcmFtYmxlZFB0ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFtYmxlZFB0cigxKTsg
fQorICAgIHN0YXRpYyBNYXNtU2NyYW1ibGVkUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIE1h
c21TY3JhbWJsZWRQdHIoMik7IH0KKworICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKIH07
CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAgLTQwNSw2ICs0ODAsMTYg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVjdXRh
YmxlTWVtb3J5OwogfTsKIAoraW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcHRyKQorICAgIC8vIFVzaW5nIGEgQy1jdHlsZSBjYXN0IGhlcmUgdG8g
YXZvaWQgY29tcGlsZXIgZXJyb3Igb24gUlZUQzoKKyAgICAvLyBFcnJvcjogICM2OTQ6IHJlaW50
ZXJwcmV0X2Nhc3QgY2Fubm90IGNhc3QgYXdheSBjb25zdCBvciBvdGhlciB0eXBlIHF1YWxpZmll
cnMKKyAgICAvLyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZm
ZXJlbnQgY29uc3RuZXNzIHRvIEdDQy9NU1ZDPykKKyAgICA6IG1fdmFsdWUocHRyLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpCit7CisgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMjUy
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihpbmRleCk7Ci0gICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKys7CisgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAg
ICAgICAgICAvLyBUZWNobmljYWxseSwgd2UgZG9uJ3QgaGF2ZSB0byBjbG9iYmVyIG1hY3JvIHJl
Z2lzdGVycyBvbiBYODZfNjQuIFRoaXMgaXMgcHJvYmFibHkKICAgICAgICAgICAgICAgICAvLyBP
SyB0aG91Z2guCiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtNTA1LDEwICs1MDUsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BS
UmVnIGluZGV4ID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJh
bXMuZ3BTY3JhdGNoKDEpOworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KCZn
X21hc21TY3JhbWJsZWRQdHJLZXksIGRlc2NyYW1ibGVyS2V5KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBz
Y3JhdGNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKENDYWxsSGVscGVyczo6
QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2
NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoLCBpbmRleCwgQ0NhbGxIZWxwZXJzOjp0
aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQueG9yNjQo
ZGVzY3JhbWJsZXJLZXksIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoc2NyYXRjaCk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGxhYmVscyBh
cmUgZ3VhcmFudGVlZCB0byBiZSBwb3B1bGF0ZWQgYmVmb3JlIGVpdGhlciBsYXRlIHBhdGhzIG9y
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIHRhc2tzIHJ1bi4KICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxhYmVscyA9IHBh
cmFtcy5zdWNjZXNzb3JMYWJlbHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMDcsNyArMTMwMDcsNyBAQCB2b2lkIHRlc3RJbnRl
cnByZXRlcigpCiAgICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgIHBv
bHlKdW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKICAgICBwb2x5SnVtcC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBvbHlKdW1wLT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMrKzsKKyAgICBwb2x5SnVtcC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMjsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhh
ZGRUb0RhdGFQb2ludGVyKSk7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVu
dGVkQmxvY2soYWRkVG9Db2RlUG9pbnRlcikpOwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNz
b3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0YSkpOwpAQCAtMTMwMjksOSArMTMwMjksMTUgQEAg
dm9pZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KiBqdW1wVGFibGUgPSBiaXR3aXNlX2Nhc3Q8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKj4oCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLnByb2MoKS5hZGREYXRhU2VjdGlvbihzaXplb2YoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKSAqIGxhYmVscy5zaXplKCkpKTsKIAotICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYWJsZSksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOwotICAgICAgICAgICAgaml0Lmp1bXAoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgocGFyYW1z
LmdwU2NyYXRjaCgwKSwgcGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkp
KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOworICAgICAgICAgICAgR1BSUmVnIGRlc2NyYW1ibGVyS2V5ID0gcGFyYW1zLmdw
U2NyYXRjaCgxKTsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGp1bXBUYWJsZSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0LmxvYWQ2NCgmZ19t
YXNtU2NyYW1ibGVkUHRyS2V5LCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICBqaXQubG9h
ZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIHBhcmFtc1swXS5ncHIoKSwgQ0Nh
bGxIZWxwZXJzOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQueG9yNjQo
ZGVzY3JhbWJsZXJLZXksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCk7
CisKICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAgICBbJiwganVt
cFRhYmxlLCBsYWJlbHNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxhYmVscy5zaXplKCk7IGktLTspCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAy
MjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkoUHJpbnQKICAgICBDb2RlTG9jYXRpb25MYWJlbCBzdGFydCA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihwcmV2aW91c0xhYmVsKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBl
bmQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsKICAgICBwcmV2aW91c0xh
YmVsID0gY3VycmVudExhYmVsOwotICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihl
bmQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgPj0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihlbmQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihzdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKSwgcHJlZml4QnVmZmVyLmdldCgpLCBv
dXQpOworICAgIEFTU0VSVChlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpID49IHN0
YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7CisgICAgZGlzYXNzZW1ibGUoc3Rh
cnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxl
QWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5nZXQoKSwgb3V0KTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIAog
ICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7CiAgICAgICAgIENhbGxMaW5rSW5m
byYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5z
bG93Q2FsbCwgRnVuY3Rpb25QdHIodm0oKS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxp
bmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMo
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChyZWNvcmQuc2xvd0NhbGwpKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxp
bmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQudGFyZ2V0VG9DaGVjaykpLApAQCAtNTI1LDkgKzUy
NSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAgICAgbV9q
aXRDb2RlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2Rl
QmxvY2s6OkxhdGVTaHJpbmspOwotICAgIAotICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJp
dHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtKCktPmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRv
cikpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgCisKKyAgICBsaW5rQnVmZmVy
LT5saW5rKG1fY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKHZtKCktPmdldENUSVN0dWIoYXJp
dHlGaXh1cEdlbmVyYXRvcikuY29kZSgpKSk7CisKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZl
cik7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
MjksOCArMjAyOSw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmluZFN3aXRjaEkK
ICAgICBkb3VibGUgYXNEb3VibGUgPSB2YWx1ZS5hc0RvdWJsZSgpOwogICAgIGludDMyX3QgYXNJ
bnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKTsKICAgICBpZiAoYXNEb3VibGUg
PT0gYXNJbnQzMikKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPih0YWJsZS5jdGlG
b3JWYWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y2hhcio+KHRhYmxlLmN0aURlZmF1bHQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgIHJldHVybiB0YWJsZS5jdGlGb3JWYWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzczxj
aGFyKj4oKTsKKyAgICByZXR1cm4gdGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzczxj
aGFyKj4oKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykKQEAg
LTIwMzgsNyArMjAzOCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3Ry
aW4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+
Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1
ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
cmV0dXJuIGV4ZWMtPmNvZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRl
eCkuY3RpRm9yVmFsdWUoc3RyaW5nLT52YWx1ZShleGVjKS5pbXBsKCkpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNo
U3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IHRhYmxlSW5k
ZXgsIEpTU3RyaW5nKiBzdHJpbmcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk3NzEsNyArOTc3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwg
RWQKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCi0gICAgU3dp
dGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICBTd2l0Y2hE
YXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgZGVzY3JhbWJs
ZXJLZXlTY3JhdGNoKQogewogICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+c3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwogICAgIHRh
YmxlLmVuc3VyZUNUSVRhYmxlKCk7CkBAIC05Nzc5LDggKzk3NzksMTYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2pp
dC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgSW1tMzIodGFibGUu
Y3RpT2Zmc2V0cy5zaXplKCkpKSwKICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwor
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmFtYmxlcktleVNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRoZSAz
Mi1iaXQgYnVpbGQuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX2ppdC5sb2FkNjQoJmdfbWFz
bVNjcmFtYmxlZFB0cktleSwgZGVzY3JhbWJsZXJLZXlTY3JhdGNoKTsKKyNlbmRpZgogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJlZ2luKCkpLCBzY3JhdGNo
KTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgdmFs
dWUsIEpJVENvbXBpbGVyOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBtX2ppdC54b3I2NChkZXNjcmFtYmxlcktleVNjcmF0Y2gsIHNjcmF0Y2gp
OworI2VuZGlmCiAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICAgICBkYXRhLT5kaWRVc2VKdW1w
VGFibGUgPSB0cnVlOwogfQpAQCAtOTc5MSw3ICs5Nzk5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgU3Bl
Y3VsYXRlSW50MzJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEs
IHZhbHVlLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRo
aXMpOworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwgdGVtcC5n
cHIoKSwgdGVtcDIuZ3ByKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtOTc5OSwxNSArOTgwOCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyID0gdGVtcDIuZ3ByKCk7CisKICAgICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1f
aml0LmJyYW5jaDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJlbG93LCB2YWx1ZVJlZ3Mu
Z3ByKCksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIGVtaXRTd2l0
Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5ncHIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRT
d2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5ncHIoKSwgc2NyYXRjaCwgc2NyYXRjaDIpOwog
ICAgICAgICBub3RJbnQubGluaygmbV9qaXQpOwogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCkBAIC05ODIwLDcgKzk4MzEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAjZWxzZQogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RJbnQgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgdmFsdWVSZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAgICAgbm90SW50Lmxp
bmsoJm1faml0KTsKICAgICAgICAgYWRkQnJhbmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoCkBAIC05ODQ0LDcgKzk4NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNo
SW1tKE5vZGUqCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5n
SnVtcCgKLSAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
KQorICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQ
UlJlZyBzY3JhdGNoMikKIHsKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMy
KApAQCAtOTg3NSw3ICs5ODg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENo
YXJTdHJpbgogICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlKSwg
c2NyYXRjaCk7CiAgICAgCiAgICAgcmVhZHkubGluaygmbV9qaXQpOwotICAgIGVtaXRTd2l0Y2hJ
bnRKdW1wKGRhdGEsIHNjcmF0Y2gsIHZhbHVlKTsKKyAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRh
LCBzY3JhdGNoLCB2YWx1ZSwgc2NyYXRjaDIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoQ2hhcihOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQpAQCAtOTg4NCwxNCAr
OTg5NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAg
Y2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAg
ICAgIAorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisKICAgICAgICAgR1BSUmVn
IG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigp
OwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CisKICAg
ICAgICAgb3AxLnVzZSgpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEo
KSwgb3AxR1BSKTsKLSAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQ
UiwgdGVtcEdQUik7CisgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFH
UFIsIHRlbXBHUFIsIHRlbXAyR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTg5OSwxNyAr
OTkxMiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworCiAgICAgICAgIEpTVmFsdWVSZWdz
IG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0
ZW1wLmdwcigpOwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3By
KCk7CisKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1f
aml0LmJyYW5jaElmTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwog
ICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMVJl
Z3MucGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAKLSAg
ICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigp
LCB0ZW1wR1BSKTsKKyAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJl
Z3MucGF5bG9hZEdQUigpLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjg1OCw5ICsyODU4LDkgQEAgcHVibGljOgog
ICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQ7CiAgICAgfTsKICAgICAKLSAgICB2b2lkIGVtaXRT
d2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsK
KyAgICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQ
UlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpOwogICAgIHZvaWQgZW1pdFN3aXRjaEltbShO
b2RlKiwgU3dpdGNoRGF0YSopOwotICAgIHZvaWQgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKFN3
aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICB2b2lkIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgR1BSUmVnIHNjcmF0Y2gyKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hDaGFyKE5vZGUqLCBT
d2l0Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKICAg
ICAgICAgU3dpdGNoRGF0YSosIGNvbnN0IFZlY3RvcjxTdHJpbmdTd2l0Y2hDYXNlPiYsIHVuc2ln
bmVkIG51bUNoZWNrZWQsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kCiAgICAgaWYgKHRyeVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJl
Zml4LCBvdXQpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgb3V0LnByaW50ZigiJXNkaXNh
c3NlbWJseSBub3QgYXZhaWxhYmxlIGZvciByYW5nZSAlcC4uLiVwXG4iLCBwcmVmaXgsIGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBzaXplKTsKKyAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5IG5v
dCBhdmFpbGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgc2l6ZSk7
CiB9CiAKIG5hbWVzcGFjZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUy
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2Vt
Ymxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTMgKzM3LDEzIEBAIGJvb2wg
dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYoY29uc3QgTWEKIHsKICAgICB1ZF90IGRpc2Fzc2Vt
YmxlcjsKICAgICB1ZF9pbml0KCZkaXNhc3NlbWJsZXIpOwotICAgIHVkX3NldF9pbnB1dF9idWZm
ZXIoJmRpc2Fzc2VtYmxlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvZGVQdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSksIHNpemUpOworICAgIHVkX3NldF9pbnB1dF9idWZmZXIoJmRpc2Fz
c2VtYmxlciwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzczx1bnNpZ25lZCBjaGFyKj4oKSwgc2l6
ZSk7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB1ZF9zZXRfbW9kZSgmZGlzYXNzZW1ibGVyLCA2NCk7
CiAjZWxzZQogICAgIHVkX3NldF9tb2RlKCZkaXNhc3NlbWJsZXIsIDMyKTsKICNlbmRpZgotICAg
IHVkX3NldF9wYygmZGlzYXNzZW1ibGVyLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICB1ZF9zZXRfcGMoJmRpc2Fzc2VtYmxlciwgY29k
ZVB0ci5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkpOwogICAgIHVkX3NldF9zeW50YXgo
JmRpc2Fzc2VtYmxlciwgVURfU1lOX0FUVCk7CiAgICAgCiAgICAgdWludDY0X3QgY3VycmVudFBD
ID0gZGlzYXNzZW1ibGVyLnBjOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDggQEAgdm9pZCBj
b21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZQogICAgIGlmICh2bS5zaG91bGRCdWls
ZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCiAgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0Nv
ZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKLSAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGJp
dHdpc2VfY2FzdDxHZW5lcmF0ZWRGdW5jdGlvbj4oCi0gICAgICAgIHN0YXRlLmZpbmFsaXplci0+
YjNDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwo
MCkpKTsKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjND
b2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkp
OworICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWwuZXhlY3V0YWJsZUFkZHJlc3M8
R2VuZXJhdGVkRnVuY3Rpb24+KCk7CiAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUIzQnlw
cm9kdWN0cyhzdGF0ZS5wcm9jLT5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIAogICAgIGZvciAoYXV0
byBwYWlyIDogc3RhdGUuZ3JhcGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0ZWNvZGVPZmZz
ZXQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkocmV2
aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBKSVRDb2RlOjpDb2RlUHRyIEpJVENv
ZGU6OmFkZHJlc3NGb3JDYWxsCiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4obV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyAgICBy
ZXR1cm4gbV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIG9mZnNl
dDsKIH0KIAogdm9pZCogSklUQ29kZTo6ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MCw3ICsxNzAsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5t
X2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9u
Q2FsbEFyaXR5Q2hlY2spOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3Vw
RXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZp
eHVwLCBGdW5jdGlvblB0cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5l
cmF0b3IpKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhK
dW1wcywgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0
ZWRGdW5jdGlvbikpKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTgyMiw3ICsxODIyLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19T
VEFUUykKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBqaXQubGFi
ZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhF
bmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihz
bG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTgzNiw3ICsxODM2LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAgICAgICBh
dXRvIGlubGluZUVuZCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5r
VGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlu
bGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5l
RW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihp
bmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAg
ICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAg
IH0pOwogI2VuZGlmCkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aEVuZCA9
IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihz
bG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlu
a0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUg
Kz0gc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC0xOTI5LDcg
KzE5MjksNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgICAgICAg
ICAgICAgIGF1dG8gaW5saW5lRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgaml0
LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIq
PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OworICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAg
ICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAg
ICAgICAgICAgfSk7CiAjZW5kaWYKQEAgLTY3NTUsNyArNjc1NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0Nh
bGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlu
a0NhbGwpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxs
TG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkBAIC03MDY2LDcgKzcw
NjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBsaW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIo
bGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxl
QWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93
Q2FsbCkpLApAQCAtNzMzNyw3ICs3MzM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25Q
dHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAg
LTc2MjAsNyArNzYyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+
Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxs
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxs
TG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAg
aW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRAogICAgIC8vIHRoZSBMTElu
dCBjb2RlIGZvciB0aGUgb3Bjb2RlIChzZWUgdGhlIEVNQkVEX09QQ09ERV9JRF9JRl9ORUVERUQg
bWFjcm8KICAgICAvLyBpbiBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGNvZGVQdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Bjb2RlKSk7Ci0g
ICAgaW50MzJfdCogb3Bjb2RlSURBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4o
Y29kZVB0ci5kYXRhTG9jYXRpb24oKSkgLSAxOworICAgIGludDMyX3QqIG9wY29kZUlEQWRkcmVz
cyA9IGNvZGVQdHIuZGF0YUxvY2F0aW9uPGludDMyX3QqPigpIC0gMTsKICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IHN0YXRpY19jYXN0PE9wY29kZUlEPigqb3Bjb2RlSURBZGRyZXNzKTsKICAgICBB
U1NFUlQob3Bjb2RlSUQgPCBOVU1CRVJfT0ZfQllURUNPREVfSURTKTsKICAgICByZXR1cm4gb3Bj
b2RlSUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MTYsNyArNzE2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPAogI2lmIEVOQUJMRShNQVRIX0lD
X1NUQVRTKQogICAgIGF1dG8gaW5saW5lRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlu
bGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4o
KSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8
Y2hhcio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwog
ICAgIH0pOwogI2VuZGlmCkBAIC03ODksNyArNzg5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNG
YXN0KEpJVEJpbmFyeU1hdGhJQwogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIGF1dG8g
aW5saW5lRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9j
YXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAg
IG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgIH0pOwogI2VuZGlmCkBA
IC04MjksNyArODI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElD
PAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBsYWJl
bCgpOwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9u
T2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+
KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygp
KTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhF
bmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNs
b3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMt
Pm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtODk1LDcg
Kzg5NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUMKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIHNsb3dQYXRoRW5kID0gbGFiZWwoKTsKICAg
ICBhZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6
ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQ
YXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVm
ZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVj
dXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0
YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVy
YXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjcs
MjAgKzEyNywyMCBAQCBKSVRDb2RlV2l0aENvZGVSZWY6On5KSVRDb2RlV2l0aENvZGVSZWYoCiB2
b2lkKiBKSVRDb2RlV2l0aENvZGVSZWY6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90
IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9m
ZnNldDsKKyAgICByZXR1cm4gbV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
ICsgb2Zmc2V0OwogfQogCiB2b2lkKiBKSVRDb2RlV2l0aENvZGVSZWY6OmRhdGFBZGRyZXNzQXRP
ZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7CiAgICAg
QVNTRVJUKG9mZnNldCA8PSBzaXplKCkpOyAvLyB1c2UgPD0gaW5zdGVhZCBvZiA8IGJlY2F1c2Ug
aXQgaXMgdmFsaWQgdG8gYXNrIGZvciBhbiBhZGRyZXNzIGF0IHRoZSBleGNsdXNpdmUgZW5kIG9m
IHRoZSBjb2RlLgotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5jb2Rl
KCkuZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0OworICAgIHJldHVybiBtX3JlZi5jb2RlKCkuZGF0
YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0OwogfQogCiB1bnNpZ25lZCBKSVRDb2RlV2l0aENv
ZGVSZWY6Om9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChtX3JlZik7Ci0gICAgaW50cHRyX3QgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocG9pbnRlckludG9Db2RlKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fcmVm
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBpbnRwdHJfdCByZXN1bHQgPSByZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVySW50b0NvZGUpIC0gbV9yZWYuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzPGludHB0cl90PigpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkpID09IHJlc3VsdCk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjI1MjY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkoUHIKIHsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBmcm9tTG9jYXRpb24g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZnJvbSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgdG9M
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZih0byk7Ci0gICAgZGlzYXNzZW1ibGUoZnJv
bUxvY2F0aW9uLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0b0xvY2F0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpIC0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZnJvbUxvY2F0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCAiICAgICAgICAiLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2Nh
dGlvbiwgdG9Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBmcm9tTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCAiICAgICAgICAiLCBvdXQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UENUb0NvZGVPcmlnaW5NYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MDQsOCArMjA0LDggQEAgUENUb0NvZGVPcmlnaW5NYXA6OlBDVG9Db2RlT3JpZ2luTWFwKFBDVAog
ICAgICAgICAgICAgY29kZU9yaWdpbkNvbXByZXNzb3Iud3JpdGU8dWludHB0cl90PihiaXR3aXNl
X2Nhc3Q8dWludHB0cl90Pihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpOwogICAgIH07CiAK
LSAgICBtX3BjUmFuZ2VTdGFydCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihidWlsZGVyLm1fY29kZVJhbmdlcy5maXJzdCgpLnN0YXJ0KS5kYXRhTG9jYXRp
b24oKSk7Ci0gICAgbV9wY1JhbmdlRW5kID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2VzLmxhc3QoKS5lbmQpLmRhdGFMb2Nh
dGlvbigpKTsKKyAgICBtX3BjUmFuZ2VTdGFydCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihidWls
ZGVyLm1fY29kZVJhbmdlcy5maXJzdCgpLnN0YXJ0KS5kYXRhTG9jYXRpb248dWludHB0cl90Pigp
OworICAgIG1fcGNSYW5nZUVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihidWlsZGVyLm1fY29k
ZVJhbmdlcy5sYXN0KCkuZW5kKS5kYXRhTG9jYXRpb248dWludHB0cl90PigpOwogICAgIG1fcGNS
YW5nZUVuZCAtPSAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1aWxkZXIubV9j
b2RlUmFuZ2VzLnNpemUoKTsgaSsrKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDcgQEAgdm9pZCBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsK
ICAgICAgICAga2V5ID0ga2V5LndpdGhDYWxsVGFyZ2V0KG5ld0NhbGxlZUZ1bmN0aW9uLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOwotICAgICAgICBuZXdDYWxsZWVGdW5jdGlvbiA9IEZ1bmN0aW9uUHRy
KAotICAgICAgICAgICAgdGh1bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKGtleSkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBuZXdDYWxsZWVGdW5jdGlvbiA9IEZ1bmN0aW9u
UHRyKHRodW5rcy5nZXRTbG93UGF0aENhbGxUaHVuayhrZXkpLmNvZGUoKSk7CiAgICAgfQogI2Vs
c2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZp
c2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMyw3ICsyMTMsMTEg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTQogICAgIAogICAgIC8v
IE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRl
ZCB0byBtYWtpbmcgYSBmYXN0CiAgICAgLy8gY2FsbC4KLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGppdC5sb2FkNjQoJmdfbWFzbVNjcmFtYmxlZFB0cktleSwgR1BSSW5mbzo6cmVnVDEp
OworICAgIGppdC54b3I2NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOworI2VuZGlm
CisKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdpbGwgcmV0dXJuIGJhY2sgdG8gSklU
IGNvZGUuCiAgICAgSlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGNhbGxDb2RlKGppdC5sYWJlbCgpKTsK
ICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xMTU4
LDYgKzExNjIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgog
ICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9
IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwog
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaml0LmxvYWQ2NCgmZ19tYXNtU2NyYW1ibGVk
UHRyS2V5LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpyZWdUMCk7CisjZW5kaWYKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDggQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJv
bVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGRhdGFMb2dG
KCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIs
CisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRy
YWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAogICAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLApAQCAtMjE0LDcgKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3RyYWMKICAgICB9IHU7CiAgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsKICAgICBkYXRhTG9nRigKLSAgICAgICAgIiVwIC8gJXA6IGV4ZWN1dGluZyBi
YyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKKyAgICAg
ICAgIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVjLAogICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CkBAIC0yMzAsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhYwogCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRh
TG9nRigiJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMp
OworICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGluIHByb2xvZ3VlIG9mICIsIGN1cnJlbnRU
aHJlYWQoKSwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOwogICAgIGRhdGFMb2coKmV4ZWMtPmNv
ZGVCbG9jaygpLCAiXG4iKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpAQCAtMjQwLDcgKzI0
Miw3IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3QKICAgICBKU0Z1
bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxl
KCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Io
a2luZCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mICIsIGNvZGVCbG9jaywgZXhl
YywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogaW4gJXMgb2YgIiwgY3Vy
cmVudFRocmVhZCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQpOwogICAgIGRhdGFMb2coKmNv
ZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVt
VmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxs
ZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhlY3V0YWJsZSwgY29kZUJsb2NrLT5tX251
bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAgLTI3Myw3ICsyNzUsOCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2ZvCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0
cmFjZSkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChwY1swXS51Lm9wY29kZSk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMl
enUsICVzLCBwYyA9ICVwXG4iLAorICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGlu
ZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAog
ICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjkxLDcgKzI5NCw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNlKQogewotICAg
IGRhdGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUs
IHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRp
bmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAg
ICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAog
ICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAgLTEzMDUsNiAr
MTMwOSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAg
ICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChMTEludDo6Z2V0Q29k
ZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMzI4LDYgKzEzMzMsNyBA
QCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgIGV4ZWND
YWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CiAKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3Nl
cnRJc05vdFNjcmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSk7CiAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExM
SW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgCkBA
IC0xMzY4LDYgKzEzNzQsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChF
eGVjCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNv
ZGVQdHI7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBh
cmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CkBAIC0xNDE4LDYgKzE0MjUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNl
dFVwQ2FsbChFeGVjCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhl
YywgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9p
ZEFzc2VydElzTm90U2NyYW1ibGVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTQ2LDggKzE5NDYsMTAgQEAgbWFjcm8gZG9DYWxsKHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQog
ICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgbW92
ZSB0Mywgc3AKLSAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVU
YXJnZXRbdDFdLCB0MiwgdDMsIHQ0KQotICAgIGNhbGxUYXJnZXRGdW5jdGlvbihMTEludENhbGxM
aW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdKQorICAgIGxvYWRwIF9nX21hc21TY3JhbWJs
ZWRQdHJLZXksIHQyCisgICAgeG9ycCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJn
ZXRbdDFdLCB0MgorICAgIHByZXBhcmVDYWxsKHQyLCB0MSwgdDMsIHQ0KQorICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbih0MikKIAogLm9wQ2FsbFNsb3c6CiAgICAgc2xvd1BhdGhGb3JDYWxsKHNsb3dQ
YXRoLCBwcmVwYXJlQ2FsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2Nsb29wLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2Nsb29wLnJiCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9jbG9vcC5yYgkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiwxMiBAQCBjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MKICAgICBlbmQKIGVuZAogCitjbGFzcyBMYWJlbFJlZmVyZW5jZQor
ICAgIGRlZiBpbnRNZW1SZWYKKyAgICAgICAgIipDQVNUPGludHB0cl90Kj4oJiN7Y0xhYmVsfSki
CisgICAgZW5kCitlbmQKKwogCiAjCiAjIExlYSBzdXBwb3J0LgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJMTElu
dERhdGEuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIlN1cGVy
U2FtcGxlci5oIgpAQCAtNTgsNiArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQog
CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAg
ICAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6aW5pdGlhbGl6ZSgpOwogICAgICAgICBPcHRpb25zOjppbml0aWFsaXplKCk7CiAj
aWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJhcnJpZXJD
b3VudGVyczo6aW5pdGlhbGl6ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsMTIgKzMyNywx
MiBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9jCiAKICAgICAgICAg
Zm9yIChhdXRvJiB1bmxpbmtlZCA6IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgY2FsbCA6IHVubGlua2VkKSB7Ci0gICAgICAgICAgICAgICAgdm9p
ZCogZXhlY3V0YWJsZUFkZHJlc3M7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGV4ZWN1dGFibGVBZGRyZXNzOwogICAgICAgICAgICAgICAgIGlmIChtX21vZHVsZUluZm9y
bWF0aW9uLT5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGNhbGwuZnVu
Y3Rpb25JbmRleFNwYWNlKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBvcnRz
IGNvdWxkIGhhdmUgYmVlbiBsaW5rZWQgaW4gQjMsIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIHBh
dGNocG9pbnQuIFRoaXMgY29uZGl0aW9uIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIFJFTEVBU0Vf
QVNTRVJULiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDYyCi0g
ICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNzID0gbV93YXNtVG9XYXNtRXhpdFN0
dWJzLmF0KGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dhc21Ub1dhc21F
eGl0U3R1YnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpLmNvZGUoKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dh
c21JbnRlcm5hbEZ1bmN0aW9ucy5hdChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSAtIG1fbW9kdWxl
SW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKSktPmVudHJ5cG9pbnQuY29tcGlsYXRp
b24tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBleGVj
dXRhYmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25J
bmRleFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+
ZW50cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpOwogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbC5jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKGV4ZWN1dGFibGVBZGRyZXNzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgJKHJldmlzaW9uIDIyNTI2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqY2Fs
bGVlKTsKICAgICB9CiAKLSAgICB2b2lkKiBlbnRyeXBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9l
bnRyeXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgfQorICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9lbnRy
eXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCk7IH0KIAogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4gJm1fZW50cnlwb2ludC5jYWxsZWVTYXZl
UmVnaXN0ZXJzOyB9CiAgICAgSW5kZXhPck5hbWUgaW5kZXhPck5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4T3JOYW1lOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29udGV4dCogY29udGV4dCwgTQogICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX2NhbGxlZXNbY2FsbGVlSW5kZXhdID0gV1RGTW92ZSh3YXNtRW50
cnlwb2ludENhbGxlZSk7Ci0gICAgICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50
c1tjYWxsZWVJbmRleF0gPSBtX2NhbGxlZXNbY2FsbGVlSW5kZXhdLT5lbnRyeXBvaW50KCk7Cisg
ICAgICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50c1tjYWxsZWVJbmRleF0gPSBt
X2NhbGxlZXNbY2FsbGVlSW5kZXhdLT5lbnRyeXBvaW50KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgbV93YXNtVG9XYXNtRXhpdFN0dWJzID0gbV9wbGFuLT50
YWtlV2FzbVRvV2FzbUV4aXRTdHVicygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PTUdQbGFuLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAz
LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgb21nRW50
cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShwYXJzZUFuZENvbXBpbGVSZXN1
bHQudmFsdWUoKS0+ZW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzKTsKIAotICAgIHZvaWQq
IGVudHJ5cG9pbnQ7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnQ7CiAgICAg
ewogICAgICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkgPT0gbV9tb2R1bGUtPmNvZGVCbG9j
a0Zvcihtb2RlKCkpKTsKICAgICAgICAgUmVmPENhbGxlZT4gY2FsbGVlID0gQ2FsbGVlOjpjcmVh
dGUoV1RGTW92ZShvbWdFbnRyeXBvaW50KSwgZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpOwpAQCAtMTE5
LDkgKzExOSw5IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPm1fb3B0aW1pemVkQ2FsbGVlc1ttX2Z1bmN0aW9uSW5kZXhdID0gV1RG
TW92ZShjYWxsZWUpOwogCiAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IHVubGlua2VkQ2FsbHMp
IHsKLSAgICAgICAgICAgIHZvaWQqIGVudHJ5cG9pbnQ7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgZW50cnlwb2ludDsKICAgICAgICAgICAgIGlmIChjYWxsLmZ1bmN0aW9uSW5k
ZXhTcGFjZSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291
bnQoKSkKLSAgICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRv
V2FzbUV4aXRTdHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludCA9IG1fY29kZUJsb2NrLT5tX3dh
c21Ub1dhc21FeGl0U3R1YnNbY2FsbC5mdW5jdGlvbkluZGV4U3BhY2VdLmNvZGUoKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPndh
c21FbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShjYWxsLmZ1bmN0aW9uSW5k
ZXhTcGFjZSkuZW50cnlwb2ludCgpOwogCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBPTUdQbGFu
Ojp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIHJlc2V0SW5zdHJ1Y3Rpb25DYWNoZU9uQWxs
VGhyZWFkcygpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIFRoaXMgcHJvYmFibHkg
aXNuJ3QgbmVjZXNzYXJ5IGJ1dCBpdCdzIGdvb2QgdG8gYmUgcGFyYW5vaWQuCiAKLSAgICBtX2Nv
ZGVCbG9jay0+bV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlvbkluZGV4XSA9
IGVudHJ5cG9pbnQ7CisgICAgbV9jb2RlQmxvY2stPm1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9p
bnRzW21fZnVuY3Rpb25JbmRleF0gPSBlbnRyeXBvaW50LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAg
ICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkK
ICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJDb25zaWRlcmlu
ZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0
YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlID09IGZ1bmN0aW9u
SW5kZXhTcGFjZSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxh
bkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNh
bGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5
cG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRl
cm5hbDo6dmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNh
bGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8gIiwgUmF3UG9pbnRlcihlbnRyeXBvaW50
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwo
ZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDIyNTI2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjI3LDcgKzYyNyw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiwgQmluZGluZ0YKICAgICBpZiAoVU5MSUtFTFkocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2Nh
dGUoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0
T2ZNZW1vcnkpOwogCi0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2
bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICBDb2Rl
TG9jYXRpb25MYWJlbCBjYWxsUmV0dXJuTG9jYXRpb24ocGF0Y2hCdWZmZXIubG9jYXRpb25PZk5l
YXJDYWxsKHNsb3dDYWxsKSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luKHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2YodGFyZ2V0VG9DaGVjaykpOwogICAgIENvZGVMb2NhdGlvbk5l
YXJDYWxsIGhvdFBhdGhPdGhlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChmYXN0
Q2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgdm0ud2FzbUNvbnRleHQuc3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tM
aW1pdCgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NF
UlQoJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSA9PSB2bS53YXNtQ29udGV4
dC5sb2FkKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20o
d2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAg
IEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5q
c0VudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7
CiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBpbiBhIHJlZ2lzdGVyIG9yIG9u
IHRoZSBzdGFjayBzaW5jZSBpdCdzIHN0b3JlZCBpbiBWZWN0b3I8SlNWYWx1ZT4uCiAgICAgLy8g
VGhpcyBwcm9iYWJseSBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnksIHNpbmNlIHRoZSBXZWJBc3Nl
bWJseUZ1bmN0aW9uKiBzaG91bGQga2VlcCB0aGUgaW5zdGFuY2UKICAgICAvLyBhbGl2ZS4gQnV0
IGl0J3MgZ29vZCBoeWdpZW5lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaAkocmV2aXNpb24gMjI1MjY5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgi
CiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogICAgIFdhc206Oldhc21FbnRy
eXBvaW50TG9hZExvY2F0aW9uIHdhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV93YXNtRnVuY3Rpb24uY29kZTsgfQogICAgIFdhc206OkNhbGxhYmxlRnVuY3Rpb24g
Y2FsbGFibGVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbUZ1bmN0aW9uOyB9CiAKLSAg
ICB2b2lkKiBqc0VudHJ5cG9pbnQoKSB7IHJldHVybiBtX2pzRW50cnlwb2ludDsgfQorICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBqc0VudHJ5cG9pbnQoKSB7IHJldHVybiBtX2pzRW50cnlwb2lu
dDsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldhc21FbnRyeXBvaW50TG9hZExv
Y2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdlYkFzc2VtYmx5RnVuY3Rpb24sIG1f
d2FzbUZ1bmN0aW9uKSArIFdhc206OkNhbGxhYmxlRnVuY3Rpb246Om9mZnNldE9mV2FzbUVudHJ5
cG9pbnRMb2FkTG9jYXRpb24oKTsgfQogCkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gSXQncyBzYWZlIHRvIGp1c3QgaG9sZCB0aGUgcmF3IENhbGxhYmxlRnVuY3Rpb24vanNFbnRy
eXBvaW50IGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQogICAgIC8vIHRvIG91ciBJbnN0YW5j
ZSwgd2hpY2ggcG9pbnRzIHRvIHRoZSBNb2R1bGUgdGhhdCBleHBvcnRlZCB1cywgd2hpY2gKICAg
ICAvLyBlbnN1cmVzIHRoYXQgdGhlIGFjdHVhbCBTaWduYXR1cmUvY29kZSBkb2Vzbid0IGdldCBk
ZWFsbG9jYXRlZC4KLSAgICB2b2lkKiBtX2pzRW50cnlwb2ludDsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbV9qc0VudHJ5cG9pbnQ7CiAgICAgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbiBtX3dh
c21GdW5jdGlvbjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTExLTI5ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBMZXQncyBzY3JhbWJsZSBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgdmFsdWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTc1
ODM0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnRyb2R1Y2UgYSBTY3JhbWJsZWRQdHIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBzY3JhbWJsaW5nLgor
CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3Rm
L1NjcmFtYmxlZFB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjptYWtlU2NyYW1ibGVkUHRy
S2V5KToKKyAgICAgICAgKiB3dGYvU2NyYW1ibGVkUHRyLmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpTY3JhbWJsZWRQdHI6OlNjcmFtYmxlZFB0cik6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0
cjo6cGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZCBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFt
YmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZCBjb25zdCk6CisgICAgICAgIChX
VEY6OlNjcmFtYmxlZFB0cjo6IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpv
cGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpzY3JhbWJsZWRC
aXRzIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvciEgY29uc3Qp
OgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAg
ICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RG
OjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6
OnNjcmFtYmxlKToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpkZXNjcmFtYmxlKToKKwog
MjAxNy0xMS0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgTW92ZSBKU09OVmFsdWVzIHRvIFdURiBhbmQgY29udmVydCB1c2VzIG9mIEluc3Bl
Y3RvclZhbHVlcy5oIHRvIEpTT05WYWx1ZXMuaApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDcg
QEAKIAkJRTM4RDZFMjcxRjU1MjJFMzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1
NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi87IH07CiAJCUU0QTBBRDM5
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtR
dWV1ZS5jcHAgKi87IH07CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVD
b2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OworCQlG
RTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODU0MTZDMUZCRTI4NUIwMDhEQTVE
QSAvKiBTY3JhbWJsZWRQdHIuY3BwICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07
CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIApAQCAtNTk2LDYgKzU5Nyw4IEBACiAJ
CUVGN0Q2Q0Q1OUQ4NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrVHJhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjcyQkJEQjEwN0ZBNDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVk
UHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmFtYmxlZFB0
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODU0MTZEMUZCRTI4NUMwMDhE
QTVEQSAvKiBTY3JhbWJsZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyYW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODZBODc0MUU1
OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGb3JiaWRIZWFwQWxsb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzksNiArOTgyLDggQEAKIAkJCQkxNDY5NDE5
NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAogCQkJCTFBMzUyNEFB
MUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkwMDgw
RkY3NCAvKiBTY29wZWRMYW1iZGEuaCAqLywKKwkJCQlGRTg1NDE2QzFGQkUyODVCMDA4REE1REEg
LyogU2NyYW1ibGVkUHRyLmNwcCAqLywKKwkJCQlGRTg1NDE2RDFGQkUyODVDMDA4REE1REEgLyog
U2NyYW1ibGVkUHRyLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29u
ZHMuY3BwICovLAogCQkJCTBGNjZCMjg1MURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmggKi8s
CiAJCQkJQThBNDczMDYxNTFBODI1QjAwNDEyM0ZGIC8qIFNlZ21lbnRlZFZlY3Rvci5oICovLApA
QCAtMTQ1Nyw2ICsxNDYyLDcgQEAKIAkJCQkxQzE4MUM3RjFEMzA3OERBMDBGNUZBMTYgLyogVGV4
dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOTYxRDMwODAwQTAw
RjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzMTFGQjE3MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRH
cm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0QTE1MUE4MjVCMDA0MTIzRkYgLyog
VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDRFMTUxQTgyNUIwMDQxMjNG
RiAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2Ny
YW1ibGVkUHRyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQ
dHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2NyYW1ibGVkUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VpbnRwdHJfdCBtYWtlU2NyYW1ibGVk
UHRyS2V5KCkKK3sKKyAgICB1aW50cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGtleSA9IChrZXkgPDwgMzIpIF4gKHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKSkgPDwg
Myk7CisgICAga2V5IHw9IDB4NzsgLy8gRW5zdXJlIHRoYXQgYW55IHZhbGlkIHBvaW50ZXIgXiBr
ZXkgd2lsbCBub3QgYmUgMC4KKyAgICBrZXkgfD0gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkg
PDwgNjMpOyAvLyBFbnN1cmUgdGhhdCB0aGUgc2NyYW1ibGVkIGJpdHMgZG8gbm90IG1ha2UgYSB2
YWxpZCBwb2ludGVyLgorI2Vsc2UKKyAgICBrZXkgPSAwOyAvLyBTY3JhbWJsaW5nIGlzIG5vdCBz
dXBwb3J0ZWQgb24gMzItYml0IHlldC4KKyNlbmRpZgorICAgIHJldHVybiBrZXk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2RlZmluZSBF
TkFCTEVfUEFSQU5PSURfU0NSQU1CTEVEX1BUUl9BU1NFUlRTIDAKKworbmFtZXNwYWNlIFdURiB7
CisKK3VzaW5nIFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7CisKK3RlbXBsYXRlPHVpbnRw
dHJfdCYga2V5PgorY2xhc3MgU2NyYW1ibGVkUHRyIHsKK3B1YmxpYzoKKyAgICBTY3JhbWJsZWRQ
dHIoKSB7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+CisgICAgZXhw
bGljaXQgU2NyYW1ibGVkUHRyKFQgcHRyKQorICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3Jh
bWJsZShwdHIpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMp
OworICAgIH0KKworICAgIFNjcmFtYmxlZFB0cihTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7Cisg
ICAgU2NyYW1ibGVkUHRyKGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVsdDsKKworICAgIGV4
cGxpY2l0IFNjcmFtYmxlZFB0cihTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpCisgICAg
ICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlZEJpdHMpCisgICAgeworICAgICAgICBBU1NF
UlQobV9zY3JhbWJsZWRCaXRzKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoUEFSQU5PSURfU0NSQU1C
TEVEX1BUUl9BU1NFUlRTKSAmJiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQgPSB2b2lkKj4KKyAgICBzdGF0aWMgYm9vbCBpc1NjcmFtYmxlZChUIHZhbHVlKSB7IHJldHVy
biAhdmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAweGZmZmYw
MDAwMDAwMDAwMDApOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIHN0
YXRpYyB2b2lkIHBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoVCB2YWx1ZSkgeyBSRUxFQVNFX0FT
U0VSVChpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZv
aWQqPgorICAgIHN0YXRpYyB2b2lkIHBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQoVCB2YWx1
ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsgfQorI2Vsc2UKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIHBhcmFub2lkQXNzZXJ0SXNT
Y3JhbWJsZWQoVCkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBzdGF0aWMg
dm9pZCBwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKFQpIHsgfQorI2VuZGlmCisgICAgdm9p
ZCBwYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCkgY29uc3QgeyBwYXJhbm9pZEFzc2VydElzU2Ny
YW1ibGVkKG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIHBhcmFub2lkQXNzZXJ0SXNOb3RT
Y3JhbWJsZWQoKSBjb25zdCB7IHBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV9zY3JhbWJs
ZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIFQgZGVz
Y3JhbWJsZSgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4obV9zY3JhbWJsZWRCaXRzKTsg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KKyAgICBBTFdBWVNfSU5M
SU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4obV9zY3JhbWJs
ZWRCaXRzKTsgfQorCisgICAgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JhbWJsZWRCaXRzOyB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlc2Ny
YW1ibGU8UHRyVHlwZT4oKSA9PSBiOworICAgIH0KKworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
U2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShUIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNj
cmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFQgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNj
cmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzY3JhbWJsZWRCaXRzIF4ga2V5
KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVCBwdHIpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBz
Y3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oc2NyYW1ibGVkQml0cyk7IH0K
KyNlbmRpZgorCisgICAgU2NyYW1ibGVkUHRyQml0cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cit9
OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1
aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Cit1c2luZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Cit1
c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327949</attachid>
            <date>2017-11-29 20:43:59 -0800</date>
            <delta_ts>2017-11-30 10:39:55 -0800</delta_ts>
            <desc>proposed patch w/ build fixes.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>87566</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1Mjk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMS4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5vdyBzdG9yZXMgYSBTY3Jh
bWJsZWRQdHIgaW5zdGVhZCBvZiBhIHZvaWQqLgorCisgICAgICAgIDIuIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cidzIGV4ZWN1dGFibGVBZGRyZXNzKCkgYW5kIGRhdGFMb2NhdGlvbigpIG5vdyB0YWtl
IGEKKyAgICAgICAgICAgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0
byBjYXN0IHRoZSByZXN1bHQuICBUaGlzIG1ha2VzIHRoZQorICAgICAgICAgICBjbGllbnQgY29k
ZSB0aGF0IHVzZXMgdGhlc2UgZnVuY3Rpb25zIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAg
ICAgICAzLiBDaGFuZ2UgdGhlIGNvZGUgYmFzZSBpbiBnZW5lcmFsIHRvIG1pbmltaXplIHBhc3Np
bmcgdm9pZCogY29kZSBwb2ludGVycyBhcm91bmQuCisgICAgICAgICAgIFdlIG5vdyBwYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZGVzY3JhbWJsZSBp
dCBvbmx5CisgICAgICAgICAgIGF0IHRoZSBsYXN0IG1vbWVudCB3aGVuIHdlIG5lZWQgdGhlIHVu
ZGVybHlpbmcgY29kZSBwb2ludGVyLgorCisgICAgICAgIDQuIEFkZGVkIHNvbWUgTWFzbVNjcmFt
YmxlZFB0ciBwYXJhbm9pZCBhc3NlcnRzIHRoYXQgYXJlIGRpc2FibGVkIChub3QgYnVpbHQpIGJ5
CisgICAgICAgICAgIGRlZmF1bHQuICBJJ20gbGVhdmluZyB0aGVtIGluIGJlY2F1c2UgdGhleSBh
cmUgaW5zdHJ1bWVudGFsIGluIGZpbmRpbmcgYnVncworICAgICAgICAgICB3aGVyZSBub3QgYWxs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMgd2VyZSBub3Qgc2NyYW1ibGVkIGFzIGV4cGVj
dGVkLgorICAgICAgICAgICBJIGV4cGVjdCB0aGVtIHRvIGJlIHVzZWZ1bCBpbiB0aGUgbmVhciBm
dXR1cmUgYXMgd2UgYWRkIG1vcmUgc2NyYW1ibGluZy4KKworICAgICAgICA1LiBBbHNvIGRpc2Fi
bGUgdGhlIGNhc3Rpbmcgb3BlcmF0b3Igb24gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIChleGNlcHQg
Zm9yCisgICAgICAgICAgIGV4cGxpY2l0IGNhc3RzIHRvIGEgYm9vbGVhbikuICBUaGlzIGVuc3Vy
ZXMgdGhhdCBjbGllbnRzIHdpbGwgYWx3YXlzIGV4cGxpY2l0bHkKKyAgICAgICAgICAgdXNlIHNj
cmFtYmxlZEJpdHMoKSBvciBleGVjdXRhYmxlQWRkcmVzcygpIHRvIGdldCBhIHZhbHVlIGJhc2Vk
IG9uIHdoaWNoIHZhbHVlCisgICAgICAgICAgIHRoZXkgYWN0dWFsbHkgbmVlZC4KKworICAgICAg
ICA1LiBBZGRlZCBjdXJyZW50VGhyZWFkKCkgaWQgdG8gdGhlIGxvZ2dpbmcgaW4gTExJbnRTbG93
UGF0aCB0cmFjZSBmdW5jdGlvbnMuCisgICAgICAgICAgIFRoaXMgd2FzIGhlbHBmdWwgd2hlbiBk
ZWJ1Z2dpbmcgdGVzdHMgdGhhdCByYW4gbXVsdGlwbGUgVk1zIGNvbmN1cnJlbnRseSBvbgorICAg
ICAgICAgICBkaWZmZXJlbnQgdGhyZWFkcy4KKworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbiA2NC1iaXQgYnVpbGRzIChpbmNsdWRpbmcgdGhl
CisgICAgICAgIENMb29wKS4gIEl0IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIDMyLWJpdCBiZWNh
dXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5CisgICAgICAgIHRvIHJlYWQgYSBnbG9i
YWwgdmFyaWFibGUgZnJvbSAzMi1iaXQgTExJbnQgY29kZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29k
ZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6aW5zdHJ1Y3Rp
b25BdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxBdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6anVtcEF0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpjYWxsQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbFB0ckF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWwzMkF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGluayk6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OnBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpl
eGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJldHVybkFkZHJlc3NQdHI6
OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OnNjcmFtYmxlZFB0ciBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZXhlY3V0YWJsZUFkZHJl
c3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmRhdGFMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlck1hY3Jv
cy5jcHA6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJ
bnRlcnByZXRlcik6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxp
bmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hh
clN0cmluZ0p1bXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxl
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYpOgorICAgICAgICAqIGZ0bC9GVExD
b21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0aElDKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0TWF0aElDRmFzdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ1Nsb3cpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZVdpdGhDb2Rl
UmVmOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpvZmZzZXRPZik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6
CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAg
ICAgKiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwOgorICAgICAgICAoSlNDOjpQQ1RvQ29kZU9y
aWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXApOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKToKKyAgICAgICAgKiBqaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAg
ICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxlZTo6ZW50cnlwb2ludCBjb25zdCk6CisgICAgICAgICogd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSk6CisKIDIwMTctMTEtMjkgIE1hdHQgTGV3aXMg
IDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjI1Mjg2LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzAsNyArODMwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBhLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGIpCiAgICAgewotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KGIuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBy
ZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oYS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgcmV0dXJuIGIuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpIC0gYS5leGVjdXRhYmxl
QWRkcmVzczxwdHJkaWZmX3Q+KCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQo
KSB7IHJldHVybiBtX2Fzc2VtYmxlci5kZWJ1Z09mZnNldCgpOyB9CkBAIC04NTIsNiArODUyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFi
ZWwsIHZhbHVlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBj
b2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWwsIHZh
bHVlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkKiBnZXRM
aW5rZXJBZGRyZXNzKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGxhYmVsKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmdldFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgbGFi
ZWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2Nh
dGlvbi5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0NvZGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NCw1NSArMTY0LDU1IEBAIHB1Ymxp
YzoKIGlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omlu
c3RydWN0aW9uQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9P
RkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24ocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4g
Q29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24oZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsK
IH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsIENvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxB
dE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZz
ZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJl
bChkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0
aW9uSnVtcCBDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KQogewog
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9j
YXRpb25KdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsg
b2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkNhbGwgQ29kZUxvY2F0aW9uQ29tbW9u
OjpjYWxsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChyZWludGVycHJldF9jYXN0
PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRp
b25DYWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2Rl
TG9jYXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQoaW50
IG9mZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RF
X09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25OZWFyQ2FsbChyZWludGVy
cHJldF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQsIGNhbGxNb2RlKTsKKyAg
ICByZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zm
c2V0LCBjYWxsTW9kZSk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgQ29k
ZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAg
IEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsg
b2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKGRhdGFMb2NhdGlv
bjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwz
MiBDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsK
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkp
ICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIoZGF0YUxvY2F0
aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJl
bENvbXBhY3QgQ29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50
IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIq
PihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRh
TGFiZWxDb21wYWN0KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGlu
ZSBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0
aWJsZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9m
ZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZlcjo6Zmlu
YWxpemUKICAgICB2YV9lbmQoYXJnTGlzdCk7CiAgICAgb3V0LnByaW50ZigiOlxuIik7CiAKLSAg
ICBvdXQucHJpbnRmKCIgICAgQ29kZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnRmKCIgICAgQ29k
ZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVz
dWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHJlc3VsdC5zaXplKCkpOwog
ICAgIAogICAgIENTdHJpbmcgaGVhZGVyID0gb3V0LnRvQ1N0cmluZygpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9u
IDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGxpbmsoQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkK
ICAgICB7Ci0gICAgICAgIGxpbmsoY2FsbCwgRnVuY3Rpb25QdHIobGFiZWwuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOworICAgICAgICBsaW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGxhYmVsKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgbGluayhKdW1wIGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVs
KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdGNoKERhdGFMYWJlbFB0
ciBsYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgdmFsdWUpCiAgICAgewogICAgICAgICBBc3NlbWJs
ZXJMYWJlbCB0YXJnZXQgPSBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFyZ2V0LCB2YWx1ZS5leGVjdXRhYmxl
QWRkcmVzcygpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwg
dGFyZ2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0
byBvYnRhaW4gaGFuZGxlcyB0byBhbGxvdyB0aGUgY29kZSB0byBiZSByZWxpbmtlZCAvIHJlcGF0
Y2hlZCBsYXRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yOSw5ICsyOSwyMCBAQAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNs
dWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJs
ZWRQdHJLZXk7CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCkKK3sK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICBnX21hc21TY3JhbWJs
ZWRQdHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihP
cGNvZGVJRCBjb2RlSWQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNp
b24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UiBjaGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBhbmQgdGhhdCBpdCBpcyBh
IHZhbGlkCkBAIC01MCw2ICs1MSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3VzaW5n
IE1hc21TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8Z19tYXNtU2NyYW1ibGVkUHRyS2V5PjsK
KworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworCiBlbnVtIE9wY29kZUlEIDogdW5zaWdu
ZWQ7CiAKIC8vIEZ1bmN0aW9uUHRyOgpAQCAtNTgsMTUgKzY1LDEzIEBAIGVudW0gT3Bjb2RlSUQg
OiB1bnNpZ25lZDsKIC8vIChwYXJ0aWN1bGFybHksIHRoZSBzdHViIGZ1bmN0aW9ucykuCiBjbGFz
cyBGdW5jdGlvblB0ciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25QdHIoKQotICAgICAgICA6IG1f
dmFsdWUoMCkKLSAgICB7Ci0gICAgfQorICAgIEZ1bmN0aW9uUHRyKCkgeyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTc0LDYgKzc5LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVl
KShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0K
IApAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgq
dmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFs
dWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90
U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1f
dmFsdWUpOwogICAgIH0KIApAQCAtODgsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNT
RVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTk1LDYgKzEwMyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEs
IGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMs
IGFyZ1R5cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIApAQCAtMTA5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQs
IGFyZ1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIC8vIE1TVkMgZG9lc24ndCBzZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRp
ZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGFzCkBAIC0xMTksNiArMTMwLDcgQEAgcHVibGlj
OgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAg
cHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlw
ZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEz
Myw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wg
KnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTE0MCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0x
NDcsNiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNM
ICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE1Nyw2ICsx
NzMsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZh
bHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTE2NCw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFT
VENBTEwgKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUp
CiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIApAQCAtMTcxLDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0
cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAg
ICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVk
UHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTc4LDYgKzE5Nyw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIs
IGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGljOgogICAgICAgICAv
LyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJlbnQgY29u
c3RuZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAg
ICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJs
ZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0g
ICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgZXhwbGljaXQgRnVuY3Rpb25QdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKIAorICAgIHZv
aWQqIHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFu
b2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVl
OworICAgIH0KKyAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFs
dWUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCogbV92YWx1ZTsKKyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0
dXJuQWRkcmVzc1B0cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlz
IHRoZSBzb3VyY2Ugb2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0
ciB7CiBwdWJsaWM6Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgw
KQotICAgIHsKLSAgICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGlj
aXQgUmV0dXJuQWRkcmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRy
IGZ1bmN0aW9uKQogICAgICAgICA6IG1fdmFsdWUoZnVuY3Rpb24udmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92
YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAg
fQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgdm9p
ZCogdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5v
aWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7
CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
IHsKQEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQqIG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07CiAKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgyLDcgQEAgcHJpdmF0ZToKIC8vIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0byB3cmFwIHBvaW50ZXJzIHRvIEpJ
VCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB7CiBwdWJsaWM6
Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAg
ewotICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSB7IH0KIAogICAgIGV4cGxpY2l0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkKICNpZiBDUFUoQVJNX1RIVU1CMikK
QEAgLTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
I2VuZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQo
KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCiAgICAgeworICAg
ICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZh
bHVlKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1i
bGVkUHRyKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1Nj
cmFtYmxlZCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjc3LDI0ICsz
MTIsNjQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVChyYS52YWx1ZSgpKTsKKyAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2Vy
dElzU2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+Cisg
ICAgVCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLnBh
cmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3Zh
bHVlLmRlc2NyYW1ibGU8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgIH0KICNpZiBDUFUo
QVJNX1RIVU1CMikKICAgICAvLyBUbyB1c2UgdGhpcyBwb2ludGVyIGFzIGEgZGF0YSBhZGRyZXNz
IHJlbW92ZSB0aGUgZGVjb3JhdGlvbi4KLSAgICB2b2lkKiBkYXRhTG9jYXRpb24oKSBjb25zdCB7
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihtX3ZhbHVlKSAtIDE7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9p
ZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92YWx1ZS5w
YXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/
IG1fdmFsdWUuZGVzY3JhbWJsZTxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKKyAgICB9CiAjZWxz
ZQotICAgIHZvaWQqIGRhdGFMb2NhdGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ID0gdm9pZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92
YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9D
T0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5k
ZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoUEFSQU5PSURfU0NSQU1C
TEVEX1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0
ZWRWYWx1ZSgpKQorICAgICAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVk
KCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlOworICAgIH0KKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISghKnRoaXMpOyB9CiAgICAgCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgb3RoZXIpIGNvbnN0
CiAgICAgeworI2lmIEVOQUJMRShQQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisgICAg
ICAgIGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZhbHVlKCkpCisgICAgICAgICAg
ICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgaWYgKCFvdGhl
ci5pc0VtcHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKKyAgICAgICAgICAg
IG90aGVyLm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCiAgICAg
ICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCisgICAgLy8gRGlz
YWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3Rl
YWQsIHRoZSBjbGllbnQKKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIo
KSBvciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46
OnZhbHVlPj4KKyAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CisKICAgICB2b2lkIGR1bXBXaXRo
TmFtZShjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CkBAIC0zMDQsMjQgKzM3OSwyNCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKEVtcHR5VmFsdWVUYWcp
CiAgICAgICAgIDogbV92YWx1ZShlbXB0eVZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0K
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoRGVsZXRlZFZhbHVlVGFnKQogICAgICAg
ICA6IG1fdmFsdWUoZGVsZXRlZFZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAK
ICAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlW
YWx1ZSgpOyB9CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUgPT0gZGVsZXRlZFZhbHVlKCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gUHRySGFzaDx2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKworICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdCB7IHJldHVybiBQdHJIYXNoPHVpbnRwdHJfdD46Omhhc2gobV92YWx1ZS5z
Y3JhbWJsZWRCaXRzKCkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxKSk7IH0KLSAgICBzdGF0aWMgdm9pZCog
ZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oMikpOyB9Ci0gICAgCi0gICAgdm9pZCogbV92YWx1ZTsKKyAgICBzdGF0aWMgTWFz
bVNjcmFtYmxlZFB0ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFtYmxlZFB0cigxKTsg
fQorICAgIHN0YXRpYyBNYXNtU2NyYW1ibGVkUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIE1h
c21TY3JhbWJsZWRQdHIoMik7IH0KKworICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKIH07
CiAKIHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAgLTQwNSw2ICs0ODAsMTYg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVjdXRh
YmxlTWVtb3J5OwogfTsKIAoraW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcHRyKQorICAgIC8vIFVzaW5nIGEgQy1jdHlsZSBjYXN0IGhlcmUgdG8g
YXZvaWQgY29tcGlsZXIgZXJyb3Igb24gUlZUQzoKKyAgICAvLyBFcnJvcjogICM2OTQ6IHJlaW50
ZXJwcmV0X2Nhc3QgY2Fubm90IGNhc3QgYXdheSBjb25zdCBvciBvdGhlciB0eXBlIHF1YWxpZmll
cnMKKyAgICAvLyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZm
ZXJlbnQgY29uc3RuZXNzIHRvIEdDQy9NU1ZDPykKKyAgICA6IG1fdmFsdWUocHRyLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpCit7CisgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMjUy
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHBh
dGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihpbmRleCk7Ci0gICAg
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKys7CisgICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAg
ICAgICAgICAvLyBUZWNobmljYWxseSwgd2UgZG9uJ3QgaGF2ZSB0byBjbG9iYmVyIG1hY3JvIHJl
Z2lzdGVycyBvbiBYODZfNjQuIFRoaXMgaXMgcHJvYmFibHkKICAgICAgICAgICAgICAgICAvLyBP
SyB0aG91Z2guCiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtNTA1LDEwICs1MDUsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BS
UmVnIGluZGV4ID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJh
bXMuZ3BTY3JhdGNoKDEpOworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KCZn
X21hc21TY3JhbWJsZWRQdHJLZXksIGRlc2NyYW1ibGVyS2V5KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBz
Y3JhdGNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKENDYWxsSGVscGVyczo6
QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2
NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoLCBpbmRleCwgQ0NhbGxIZWxwZXJzOjp0
aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQueG9yNjQo
ZGVzY3JhbWJsZXJLZXksIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1
bXAoc2NyYXRjaCk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGxhYmVscyBh
cmUgZ3VhcmFudGVlZCB0byBiZSBwb3B1bGF0ZWQgYmVmb3JlIGVpdGhlciBsYXRlIHBhdGhzIG9y
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIHRhc2tzIHJ1bi4KICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxhYmVscyA9IHBh
cmFtcy5zdWNjZXNzb3JMYWJlbHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMu
Y3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwMDcsNyArMTMwMDcsNyBAQCB2b2lkIHRlc3RJbnRl
cnByZXRlcigpCiAgICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgIHBv
bHlKdW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKICAgICBwb2x5SnVtcC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBvbHlKdW1wLT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMrKzsKKyAgICBwb2x5SnVtcC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMjsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhh
ZGRUb0RhdGFQb2ludGVyKSk7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVu
dGVkQmxvY2soYWRkVG9Db2RlUG9pbnRlcikpOwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNz
b3IoRnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0YSkpOwpAQCAtMTMwMjksOSArMTMwMjksMTUgQEAg
dm9pZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KiBqdW1wVGFibGUgPSBiaXR3aXNlX2Nhc3Q8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKj4oCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLnByb2MoKS5hZGREYXRhU2VjdGlvbihzaXplb2YoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKSAqIGxhYmVscy5zaXplKCkpKTsKIAotICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYWJsZSksIHBhcmFtcy5ncFNjcmF0Y2go
MCkpOwotICAgICAgICAgICAgaml0Lmp1bXAoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgocGFyYW1z
LmdwU2NyYXRjaCgwKSwgcGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkp
KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOworICAgICAgICAgICAgR1BSUmVnIGRlc2NyYW1ibGVyS2V5ID0gcGFyYW1zLmdw
U2NyYXRjaCgxKTsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGp1bXBUYWJsZSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0LmxvYWQ2NCgmZ19t
YXNtU2NyYW1ibGVkUHRyS2V5LCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICBqaXQubG9h
ZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIHBhcmFtc1swXS5ncHIoKSwgQ0Nh
bGxIZWxwZXJzOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQueG9yNjQo
ZGVzY3JhbWJsZXJLZXksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCk7
CisKICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAgICBbJiwganVt
cFRhYmxlLCBsYWJlbHNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxhYmVscy5zaXplKCk7IGktLTspCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAy
MjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkoUHJpbnQKICAgICBDb2RlTG9jYXRpb25MYWJlbCBzdGFydCA9IGxpbmtC
dWZmZXIubG9jYXRpb25PZihwcmV2aW91c0xhYmVsKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBl
bmQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsKICAgICBwcmV2aW91c0xh
YmVsID0gY3VycmVudExhYmVsOwotICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihl
bmQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgPj0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihlbmQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihzdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKSwgcHJlZml4QnVmZmVyLmdldCgpLCBv
dXQpOworICAgIEFTU0VSVChlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpID49IHN0
YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7CisgICAgZGlzYXNzZW1ibGUoc3Rh
cnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxl
QWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5nZXQoKSwgb3V0KTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIAog
ICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7CiAgICAgICAgIENhbGxMaW5rSW5m
byYgaW5mbyA9ICpyZWNvcmQuaW5mbzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5z
bG93Q2FsbCwgRnVuY3Rpb25QdHIodm0oKS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJh
dG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxp
bmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxs
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMo
CiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChyZWNvcmQuc2xvd0NhbGwpKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxp
bmtCdWZmZXIubG9jYXRpb25PZihyZWNvcmQudGFyZ2V0VG9DaGVjaykpLApAQCAtNTI1LDkgKzUy
NSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAgICAgbV9q
aXRDb2RlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2Rl
QmxvY2s6OkxhdGVTaHJpbmspOwotICAgIAotICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJp
dHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtKCktPmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRv
cikpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgCisKKyAgICBsaW5rQnVmZmVy
LT5saW5rKG1fY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKHZtKCktPmdldENUSVN0dWIoYXJp
dHlGaXh1cEdlbmVyYXRvcikuY29kZSgpKSk7CisKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZl
cik7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVm
ZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
MjksOCArMjAyOSw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmluZFN3aXRjaEkK
ICAgICBkb3VibGUgYXNEb3VibGUgPSB2YWx1ZS5hc0RvdWJsZSgpOwogICAgIGludDMyX3QgYXNJ
bnQzMiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKTsKICAgICBpZiAoYXNEb3VibGUg
PT0gYXNJbnQzMikKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPih0YWJsZS5jdGlG
b3JWYWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y2hhcio+KHRhYmxlLmN0aURlZmF1bHQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgIHJldHVybiB0YWJsZS5jdGlGb3JWYWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzczxj
aGFyKj4oKTsKKyAgICByZXR1cm4gdGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzczxj
aGFyKj4oKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykKQEAg
LTIwMzgsNyArMjAzOCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3Ry
aW4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+
Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1
ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
cmV0dXJuIGV4ZWMtPmNvZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRl
eCkuY3RpRm9yVmFsdWUoc3RyaW5nLT52YWx1ZShleGVjKS5pbXBsKCkpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNo
U3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IHRhYmxlSW5k
ZXgsIEpTU3RyaW5nKiBzdHJpbmcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk3NzEsNyArOTc3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwg
RWQKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCi0gICAgU3dp
dGNoRGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICBTd2l0Y2hE
YXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgZGVzY3JhbWJs
ZXJLZXlTY3JhdGNoKQogewogICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2ppdC5jb2Rl
QmxvY2soKS0+c3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwogICAgIHRh
YmxlLmVuc3VyZUNUSVRhYmxlKCk7CkBAIC05Nzc5LDggKzk3NzksMTYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2pp
dC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgSW1tMzIodGFibGUu
Y3RpT2Zmc2V0cy5zaXplKCkpKSwKICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwor
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmFtYmxlcktleVNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRoZSAz
Mi1iaXQgYnVpbGQuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX2ppdC5sb2FkNjQoJmdfbWFz
bVNjcmFtYmxlZFB0cktleSwgZGVzY3JhbWJsZXJLZXlTY3JhdGNoKTsKKyNlbmRpZgogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJlZ2luKCkpLCBzY3JhdGNo
KTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgdmFs
dWUsIEpJVENvbXBpbGVyOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBtX2ppdC54b3I2NChkZXNjcmFtYmxlcktleVNjcmF0Y2gsIHNjcmF0Y2gp
OworI2VuZGlmCiAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICAgICBkYXRhLT5kaWRVc2VKdW1w
VGFibGUgPSB0cnVlOwogfQpAQCAtOTc5MSw3ICs5Nzk5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgU3Bl
Y3VsYXRlSW50MzJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEs
IHZhbHVlLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRo
aXMpOworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwgdGVtcC5n
cHIoKSwgdGVtcDIuZ3ByKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtOTc5OSwxNSArOTgwOCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyID0gdGVtcDIuZ3ByKCk7CisKICAgICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1f
aml0LmJyYW5jaDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJlbG93LCB2YWx1ZVJlZ3Mu
Z3ByKCksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIGVtaXRTd2l0
Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5ncHIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRT
d2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5ncHIoKSwgc2NyYXRjaCwgc2NyYXRjaDIpOwog
ICAgICAgICBub3RJbnQubGluaygmbV9qaXQpOwogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCkBAIC05ODIwLDcgKzk4MzEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAjZWxzZQogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RJbnQgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgdmFsdWVSZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAgICAgbm90SW50Lmxp
bmsoJm1faml0KTsKICAgICAgICAgYWRkQnJhbmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoCkBAIC05ODQ0LDcgKzk4NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNo
SW1tKE5vZGUqCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5n
SnVtcCgKLSAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNo
KQorICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQ
UlJlZyBzY3JhdGNoMikKIHsKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMy
KApAQCAtOTg3NSw3ICs5ODg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENo
YXJTdHJpbgogICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlKSwg
c2NyYXRjaCk7CiAgICAgCiAgICAgcmVhZHkubGluaygmbV9qaXQpOwotICAgIGVtaXRTd2l0Y2hJ
bnRKdW1wKGRhdGEsIHNjcmF0Y2gsIHZhbHVlKTsKKyAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRh
LCBzY3JhdGNoLCB2YWx1ZSwgc2NyYXRjaDIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoQ2hhcihOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQpAQCAtOTg4NCwxNCAr
OTg5NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAg
Y2FzZSBTdHJpbmdVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAg
ICAgIAorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisKICAgICAgICAgR1BSUmVn
IG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigp
OwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CisKICAg
ICAgICAgb3AxLnVzZSgpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEo
KSwgb3AxR1BSKTsKLSAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQ
UiwgdGVtcEdQUik7CisgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFH
UFIsIHRlbXBHUFIsIHRlbXAyR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTg5OSwxNyAr
OTkxMiwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworCiAgICAgICAgIEpTVmFsdWVSZWdz
IG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0
ZW1wLmdwcigpOwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3By
KCk7CisKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1f
aml0LmJyYW5jaElmTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwog
ICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMVJl
Z3MucGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAKLSAg
ICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigp
LCB0ZW1wR1BSKTsKKyAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJl
Z3MucGF5bG9hZEdQUigpLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjg1OCw5ICsyODU4LDkgQEAgcHVibGljOgog
ICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQ7CiAgICAgfTsKICAgICAKLSAgICB2b2lkIGVtaXRT
d2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsK
KyAgICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQ
UlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpOwogICAgIHZvaWQgZW1pdFN3aXRjaEltbShO
b2RlKiwgU3dpdGNoRGF0YSopOwotICAgIHZvaWQgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKFN3
aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICB2b2lkIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgR1BSUmVnIHNjcmF0Y2gyKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hDaGFyKE5vZGUqLCBT
d2l0Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKICAg
ICAgICAgU3dpdGNoRGF0YSosIGNvbnN0IFZlY3RvcjxTdHJpbmdTd2l0Y2hDYXNlPiYsIHVuc2ln
bmVkIG51bUNoZWNrZWQsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kCiAgICAgaWYgKHRyeVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJl
Zml4LCBvdXQpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgb3V0LnByaW50ZigiJXNkaXNh
c3NlbWJseSBub3QgYXZhaWxhYmxlIGZvciByYW5nZSAlcC4uLiVwXG4iLCBwcmVmaXgsIGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBzaXplKTsKKyAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5IG5v
dCBhdmFpbGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgc2l6ZSk7
CiB9CiAKIG5hbWVzcGFjZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUy
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2Vt
Ymxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTMgKzM3LDEzIEBAIGJvb2wg
dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYoY29uc3QgTWEKIHsKICAgICB1ZF90IGRpc2Fzc2Vt
YmxlcjsKICAgICB1ZF9pbml0KCZkaXNhc3NlbWJsZXIpOwotICAgIHVkX3NldF9pbnB1dF9idWZm
ZXIoJmRpc2Fzc2VtYmxlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvZGVQdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSksIHNpemUpOworICAgIHVkX3NldF9pbnB1dF9idWZmZXIoJmRpc2Fz
c2VtYmxlciwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzczx1bnNpZ25lZCBjaGFyKj4oKSwgc2l6
ZSk7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB1ZF9zZXRfbW9kZSgmZGlzYXNzZW1ibGVyLCA2NCk7
CiAjZWxzZQogICAgIHVkX3NldF9tb2RlKCZkaXNhc3NlbWJsZXIsIDMyKTsKICNlbmRpZgotICAg
IHVkX3NldF9wYygmZGlzYXNzZW1ibGVyLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICB1ZF9zZXRfcGMoJmRpc2Fzc2VtYmxlciwgY29k
ZVB0ci5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkpOwogICAgIHVkX3NldF9zeW50YXgo
JmRpc2Fzc2VtYmxlciwgVURfU1lOX0FUVCk7CiAgICAgCiAgICAgdWludDY0X3QgY3VycmVudFBD
ID0gZGlzYXNzZW1ibGVyLnBjOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDggQEAgdm9pZCBj
b21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZQogICAgIGlmICh2bS5zaG91bGRCdWls
ZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCiAgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0Nv
ZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKLSAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGJp
dHdpc2VfY2FzdDxHZW5lcmF0ZWRGdW5jdGlvbj4oCi0gICAgICAgIHN0YXRlLmZpbmFsaXplci0+
YjNDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwo
MCkpKTsKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjND
b2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkp
OworICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWwuZXhlY3V0YWJsZUFkZHJlc3M8
R2VuZXJhdGVkRnVuY3Rpb24+KCk7CiAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUIzQnlw
cm9kdWN0cyhzdGF0ZS5wcm9jLT5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIAogICAgIGZvciAoYXV0
byBwYWlyIDogc3RhdGUuZ3JhcGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0ZWNvZGVPZmZz
ZXQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkocmV2
aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBKSVRDb2RlOjpDb2RlUHRyIEpJVENv
ZGU6OmFkZHJlc3NGb3JDYWxsCiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4obV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyAgICBy
ZXR1cm4gbV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIG9mZnNl
dDsKIH0KIAogdm9pZCogSklUQ29kZTo6ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MCw3ICsxNzAsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5t
X2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9u
Q2FsbEFyaXR5Q2hlY2spOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3Vw
RXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0aW9uSGFuZGxlckZy
b21DYWxsZXJGcmFtZSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZp
eHVwLCBGdW5jdGlvblB0cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5l
cmF0b3IpKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhK
dW1wcywgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0
ZWRGdW5jdGlvbikpKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTgyMiw3ICsxODIyLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19T
VEFUUykKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBqaXQubGFi
ZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhF
bmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihz
bG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTgzNiw3ICsxODM2LDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAgICAgICBh
dXRvIGlubGluZUVuZCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5r
VGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlu
bGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5l
RW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihp
bmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAg
ICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAg
IH0pOwogI2VuZGlmCkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShN
QVRIX0lDX1NUQVRTKQogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aEVuZCA9
IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihz
bG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlu
a0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZm
ZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUg
Kz0gc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC0xOTI5LDcg
KzE5MjksNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgICAgICAg
ICAgICAgIGF1dG8gaW5saW5lRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgaml0
LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0
aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIq
PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OworICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAg
ICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAg
ICAgICAgICAgfSk7CiAjZW5kaWYKQEAgLTY3NTUsNyArNjc1NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0Nh
bGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlu
a0NhbGwpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxs
TG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkBAIC03MDY2LDcgKzcw
NjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBsaW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIo
bGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxl
QWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93
Q2FsbCkpLApAQCAtNzMzNyw3ICs3MzM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25Q
dHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8tPnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAg
LTc2MjAsNyArNzYyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+
Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxs
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxs
TG9jYXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
KGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAg
aW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRAogICAgIC8vIHRoZSBMTElu
dCBjb2RlIGZvciB0aGUgb3Bjb2RlIChzZWUgdGhlIEVNQkVEX09QQ09ERV9JRF9JRl9ORUVERUQg
bWFjcm8KICAgICAvLyBpbiBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGNvZGVQdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Bjb2RlKSk7Ci0g
ICAgaW50MzJfdCogb3Bjb2RlSURBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4o
Y29kZVB0ci5kYXRhTG9jYXRpb24oKSkgLSAxOworICAgIGludDMyX3QqIG9wY29kZUlEQWRkcmVz
cyA9IGNvZGVQdHIuZGF0YUxvY2F0aW9uPGludDMyX3QqPigpIC0gMTsKICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IHN0YXRpY19jYXN0PE9wY29kZUlEPigqb3Bjb2RlSURBZGRyZXNzKTsKICAgICBB
U1NFUlQob3Bjb2RlSUQgPCBOVU1CRVJfT0ZfQllURUNPREVfSURTKTsKICAgICByZXR1cm4gb3Bj
b2RlSUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5j
cHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MTYsNyArNzE2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPAogI2lmIEVOQUJMRShNQVRIX0lD
X1NUQVRTKQogICAgIGF1dG8gaW5saW5lRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhb
PV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlu
bGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4o
KSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8
Y2hhcio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwog
ICAgIH0pOwogI2VuZGlmCkBAIC03ODksNyArNzg5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNG
YXN0KEpJVEJpbmFyeU1hdGhJQwogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIGF1dG8g
aW5saW5lRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9j
YXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAg
IG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgIH0pOwogI2VuZGlmCkBA
IC04MjksNyArODI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElD
PAogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBsYWJl
bCgpOwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9u
T2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+
KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygp
KTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhF
bmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNs
b3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMt
Pm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtODk1LDcg
Kzg5NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUMKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIHNsb3dQYXRoRW5kID0gbGFiZWwoKTsKICAg
ICBhZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6
ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQ
YXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVm
ZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAg
ICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVj
dXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0
YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVy
YXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjcs
MjAgKzEyNywyMCBAQCBKSVRDb2RlV2l0aENvZGVSZWY6On5KSVRDb2RlV2l0aENvZGVSZWYoCiB2
b2lkKiBKSVRDb2RlV2l0aENvZGVSZWY6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90
IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9m
ZnNldDsKKyAgICByZXR1cm4gbV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigp
ICsgb2Zmc2V0OwogfQogCiB2b2lkKiBKSVRDb2RlV2l0aENvZGVSZWY6OmRhdGFBZGRyZXNzQXRP
ZmZzZXQoc2l6ZV90IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7CiAgICAg
QVNTRVJUKG9mZnNldCA8PSBzaXplKCkpOyAvLyB1c2UgPD0gaW5zdGVhZCBvZiA8IGJlY2F1c2Ug
aXQgaXMgdmFsaWQgdG8gYXNrIGZvciBhbiBhZGRyZXNzIGF0IHRoZSBleGNsdXNpdmUgZW5kIG9m
IHRoZSBjb2RlLgotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5jb2Rl
KCkuZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0OworICAgIHJldHVybiBtX3JlZi5jb2RlKCkuZGF0
YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0OwogfQogCiB1bnNpZ25lZCBKSVRDb2RlV2l0aENv
ZGVSZWY6Om9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChtX3JlZik7Ci0gICAgaW50cHRyX3QgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4ocG9pbnRlckludG9Db2RlKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fcmVm
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBpbnRwdHJfdCByZXN1bHQgPSByZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVySW50b0NvZGUpIC0gbV9yZWYuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzPGludHB0cl90PigpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkpID09IHJlc3VsdCk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjI1MjY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkoUHIKIHsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBmcm9tTG9jYXRpb24g
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoZnJvbSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgdG9M
b2NhdGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZih0byk7Ci0gICAgZGlzYXNzZW1ibGUoZnJv
bUxvY2F0aW9uLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0b0xvY2F0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpIC0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZnJvbUxvY2F0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCAiICAgICAgICAiLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2Nh
dGlvbiwgdG9Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBmcm9tTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCAiICAgICAgICAiLCBvdXQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UENUb0NvZGVPcmlnaW5NYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MDQsOCArMjA0LDggQEAgUENUb0NvZGVPcmlnaW5NYXA6OlBDVG9Db2RlT3JpZ2luTWFwKFBDVAog
ICAgICAgICAgICAgY29kZU9yaWdpbkNvbXByZXNzb3Iud3JpdGU8dWludHB0cl90PihiaXR3aXNl
X2Nhc3Q8dWludHB0cl90Pihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpOwogICAgIH07CiAK
LSAgICBtX3BjUmFuZ2VTdGFydCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihidWlsZGVyLm1fY29kZVJhbmdlcy5maXJzdCgpLnN0YXJ0KS5kYXRhTG9jYXRp
b24oKSk7Ci0gICAgbV9wY1JhbmdlRW5kID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2VzLmxhc3QoKS5lbmQpLmRhdGFMb2Nh
dGlvbigpKTsKKyAgICBtX3BjUmFuZ2VTdGFydCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihidWls
ZGVyLm1fY29kZVJhbmdlcy5maXJzdCgpLnN0YXJ0KS5kYXRhTG9jYXRpb248dWludHB0cl90Pigp
OworICAgIG1fcGNSYW5nZUVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihidWlsZGVyLm1fY29k
ZVJhbmdlcy5sYXN0KCkuZW5kKS5kYXRhTG9jYXRpb248dWludHB0cl90PigpOwogICAgIG1fcGNS
YW5nZUVuZCAtPSAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1aWxkZXIubV9j
b2RlUmFuZ2VzLnNpemUoKTsgaSsrKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAJKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDcgQEAgdm9pZCBmdGxUaHVu
a0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsK
ICAgICAgICAga2V5ID0ga2V5LndpdGhDYWxsVGFyZ2V0KG5ld0NhbGxlZUZ1bmN0aW9uLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOwotICAgICAgICBuZXdDYWxsZWVGdW5jdGlvbiA9IEZ1bmN0aW9uUHRy
KAotICAgICAgICAgICAgdGh1bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKGtleSkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBuZXdDYWxsZWVGdW5jdGlvbiA9IEZ1bmN0aW9u
UHRyKHRodW5rcy5nZXRTbG93UGF0aENhbGxUaHVuayhrZXkpLmNvZGUoKSk7CiAgICAgfQogI2Vs
c2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZp
c2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMyw3ICsyMTMsMTEg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTQogICAgIAogICAgIC8v
IE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRl
ZCB0byBtYWtpbmcgYSBmYXN0CiAgICAgLy8gY2FsbC4KLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGppdC5sb2FkNjQoJmdfbWFzbVNjcmFtYmxlZFB0cktleSwgR1BSSW5mbzo6cmVnVDEp
OworICAgIGppdC54b3I2NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOworI2VuZGlm
CisKICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdpbGwgcmV0dXJuIGJhY2sgdG8gSklU
IGNvZGUuCiAgICAgSlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGNhbGxDb2RlKGppdC5sYWJlbCgpKTsK
ICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xMTU4
LDYgKzExNjIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgog
ICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9
IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwog
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaml0LmxvYWQ2NCgmZ19tYXNtU2NyYW1ibGVk
UHRyS2V5LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpyZWdUMCk7CisjZW5kaWYKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDggQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJv
bVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGRhdGFMb2dG
KCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIs
CisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRy
YWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAogICAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLApAQCAtMjE0LDcgKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3RyYWMKICAgICB9IHU7CiAgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsKICAgICBkYXRhTG9nRigKLSAgICAgICAgIiVwIC8gJXA6IGV4ZWN1dGluZyBi
YyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKKyAgICAg
ICAgIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVjLAogICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CkBAIC0yMzAsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhYwogCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRh
TG9nRigiJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMp
OworICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGluIHByb2xvZ3VlIG9mICIsIGN1cnJlbnRU
aHJlYWQoKSwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOwogICAgIGRhdGFMb2coKmV4ZWMtPmNv
ZGVCbG9jaygpLCAiXG4iKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpAQCAtMjQwLDcgKzI0
Miw3IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3QKICAgICBKU0Z1
bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxl
KCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Io
a2luZCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mICIsIGNvZGVCbG9jaywgZXhl
YywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogaW4gJXMgb2YgIiwgY3Vy
cmVudFRocmVhZCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQpOwogICAgIGRhdGFMb2coKmNv
ZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVt
VmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxs
ZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhlY3V0YWJsZSwgY29kZUJsb2NrLT5tX251
bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAgLTI3Myw3ICsyNzUsOCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2ZvCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0
cmFjZSkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChwY1swXS51Lm9wY29kZSk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMl
enUsICVzLCBwYyA9ICVwXG4iLAorICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGlu
ZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAog
ICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjkxLDcgKzI5NCw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNlKQogewotICAg
IGRhdGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUs
IHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRp
bmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAg
ICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAog
ICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAgLTEzMDUsNiAr
MTMwOSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAg
ICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChMTEludDo6Z2V0Q29k
ZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMzI4LDYgKzEzMzMsNyBA
QCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgIGV4ZWND
YWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CiAKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3Nl
cnRJc05vdFNjcmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSk7CiAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExM
SW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgCkBA
IC0xMzY4LDYgKzEzNzQsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChF
eGVjCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNv
ZGVQdHI7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBh
cmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CkBAIC0xNDE4LDYgKzE0MjUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNl
dFVwQ2FsbChFeGVjCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhl
YywgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9p
ZEFzc2VydElzTm90U2NyYW1ibGVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTI2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTQ2LDggKzE5NDYsMTAgQEAgbWFjcm8gZG9DYWxsKHNsb3dQYXRoLCBwcmVw
YXJlQ2FsbCkKICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQog
ICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgbW92
ZSB0Mywgc3AKLSAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVU
YXJnZXRbdDFdLCB0MiwgdDMsIHQ0KQotICAgIGNhbGxUYXJnZXRGdW5jdGlvbihMTEludENhbGxM
aW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdKQorICAgIGxvYWRwIF9nX21hc21TY3JhbWJs
ZWRQdHJLZXksIHQyCisgICAgeG9ycCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJn
ZXRbdDFdLCB0MgorICAgIHByZXBhcmVDYWxsKHQyLCB0MSwgdDMsIHQ0KQorICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbih0MikKIAogLm9wQ2FsbFNsb3c6CiAgICAgc2xvd1BhdGhGb3JDYWxsKHNsb3dQ
YXRoLCBwcmVwYXJlQ2FsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2Nsb29wLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2Nsb29wLnJiCShyZXZpc2lvbiAyMjUyNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9jbG9vcC5yYgkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiwxMiBAQCBjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MKICAgICBlbmQKIGVuZAogCitjbGFzcyBMYWJlbFJlZmVyZW5jZQor
ICAgIGRlZiBpbnRNZW1SZWYKKyAgICAgICAgIipDQVNUPGludHB0cl90Kj4oJiN7Y0xhYmVsfSki
CisgICAgZW5kCitlbmQKKwogCiAjCiAjIExlYSBzdXBwb3J0LgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJl
dmlzaW9uIDIyNTI2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJMTElu
dERhdGEuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIlN1cGVy
U2FtcGxlci5oIgpAQCAtNTgsNiArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQog
CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAg
ICAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6aW5pdGlhbGl6ZSgpOwogICAgICAgICBPcHRpb25zOjppbml0aWFsaXplKCk7CiAj
aWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJhcnJpZXJD
b3VudGVyczo6aW5pdGlhbGl6ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsMTIgKzMyNywx
MiBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9jCiAKICAgICAgICAg
Zm9yIChhdXRvJiB1bmxpbmtlZCA6IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byYgY2FsbCA6IHVubGlua2VkKSB7Ci0gICAgICAgICAgICAgICAgdm9p
ZCogZXhlY3V0YWJsZUFkZHJlc3M7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGV4ZWN1dGFibGVBZGRyZXNzOwogICAgICAgICAgICAgICAgIGlmIChtX21vZHVsZUluZm9y
bWF0aW9uLT5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGNhbGwuZnVu
Y3Rpb25JbmRleFNwYWNlKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBvcnRz
IGNvdWxkIGhhdmUgYmVlbiBsaW5rZWQgaW4gQjMsIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIHBh
dGNocG9pbnQuIFRoaXMgY29uZGl0aW9uIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIFJFTEVBU0Vf
QVNTRVJULiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDYyCi0g
ICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNzID0gbV93YXNtVG9XYXNtRXhpdFN0
dWJzLmF0KGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dhc21Ub1dhc21F
eGl0U3R1YnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpLmNvZGUoKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dh
c21JbnRlcm5hbEZ1bmN0aW9ucy5hdChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSAtIG1fbW9kdWxl
SW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKSktPmVudHJ5cG9pbnQuY29tcGlsYXRp
b24tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBleGVj
dXRhYmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25J
bmRleFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+
ZW50cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpOwogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbC5jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKGV4ZWN1dGFibGVBZGRyZXNzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgJKHJldmlzaW9uIDIyNTI2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqY2Fs
bGVlKTsKICAgICB9CiAKLSAgICB2b2lkKiBlbnRyeXBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9l
bnRyeXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgfQorICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9lbnRy
eXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCk7IH0KIAogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0
KiBjYWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4gJm1fZW50cnlwb2ludC5jYWxsZWVTYXZl
UmVnaXN0ZXJzOyB9CiAgICAgSW5kZXhPck5hbWUgaW5kZXhPck5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4T3JOYW1lOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29udGV4dCogY29udGV4dCwgTQogICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX2NhbGxlZXNbY2FsbGVlSW5kZXhdID0gV1RGTW92ZSh3YXNtRW50
cnlwb2ludENhbGxlZSk7Ci0gICAgICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50
c1tjYWxsZWVJbmRleF0gPSBtX2NhbGxlZXNbY2FsbGVlSW5kZXhdLT5lbnRyeXBvaW50KCk7Cisg
ICAgICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50c1tjYWxsZWVJbmRleF0gPSBt
X2NhbGxlZXNbY2FsbGVlSW5kZXhdLT5lbnRyeXBvaW50KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgbV93YXNtVG9XYXNtRXhpdFN0dWJzID0gbV9wbGFuLT50
YWtlV2FzbVRvV2FzbUV4aXRTdHVicygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PTUdQbGFuLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAz
LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgb21nRW50
cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShwYXJzZUFuZENvbXBpbGVSZXN1
bHQudmFsdWUoKS0+ZW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzKTsKIAotICAgIHZvaWQq
IGVudHJ5cG9pbnQ7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnQ7CiAgICAg
ewogICAgICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkgPT0gbV9tb2R1bGUtPmNvZGVCbG9j
a0Zvcihtb2RlKCkpKTsKICAgICAgICAgUmVmPENhbGxlZT4gY2FsbGVlID0gQ2FsbGVlOjpjcmVh
dGUoV1RGTW92ZShvbWdFbnRyeXBvaW50KSwgZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpOwpAQCAtMTE5
LDkgKzExOSw5IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPm1fb3B0aW1pemVkQ2FsbGVlc1ttX2Z1bmN0aW9uSW5kZXhdID0gV1RG
TW92ZShjYWxsZWUpOwogCiAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IHVubGlua2VkQ2FsbHMp
IHsKLSAgICAgICAgICAgIHZvaWQqIGVudHJ5cG9pbnQ7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgZW50cnlwb2ludDsKICAgICAgICAgICAgIGlmIChjYWxsLmZ1bmN0aW9uSW5k
ZXhTcGFjZSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291
bnQoKSkKLSAgICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRv
V2FzbUV4aXRTdHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludCA9IG1fY29kZUJsb2NrLT5tX3dh
c21Ub1dhc21FeGl0U3R1YnNbY2FsbC5mdW5jdGlvbkluZGV4U3BhY2VdLmNvZGUoKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPndh
c21FbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShjYWxsLmZ1bmN0aW9uSW5k
ZXhTcGFjZSkuZW50cnlwb2ludCgpOwogCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBPTUdQbGFu
Ojp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIHJlc2V0SW5zdHJ1Y3Rpb25DYWNoZU9uQWxs
VGhyZWFkcygpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIFRoaXMgcHJvYmFibHkg
aXNuJ3QgbmVjZXNzYXJ5IGJ1dCBpdCdzIGdvb2QgdG8gYmUgcGFyYW5vaWQuCiAKLSAgICBtX2Nv
ZGVCbG9jay0+bV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlvbkluZGV4XSA9
IGVudHJ5cG9pbnQ7CisgICAgbV9jb2RlQmxvY2stPm1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9p
bnRzW21fZnVuY3Rpb25JbmRleF0gPSBlbnRyeXBvaW50LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAg
ICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkK
ICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJDb25zaWRlcmlu
ZyByZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0
YUxvY2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlID09IGZ1bmN0aW9u
SW5kZXhTcGFjZSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxh
bkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNh
bGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5
cG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRl
cm5hbDo6dmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNh
bGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8gIiwgUmF3UG9pbnRlcihlbnRyeXBvaW50
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwo
ZW50cnlwb2ludCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDIyNTI2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjI3LDcgKzYyNyw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiwgQmluZGluZ0YKICAgICBpZiAoVU5MSUtFTFkocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2Nh
dGUoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0
T2ZNZW1vcnkpOwogCi0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2
bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICBDb2Rl
TG9jYXRpb25MYWJlbCBjYWxsUmV0dXJuTG9jYXRpb24ocGF0Y2hCdWZmZXIubG9jYXRpb25PZk5l
YXJDYWxsKHNsb3dDYWxsKSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luKHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2YodGFyZ2V0VG9DaGVjaykpOwogICAgIENvZGVMb2NhdGlvbk5l
YXJDYWxsIGhvdFBhdGhPdGhlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChmYXN0
Q2FsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjI1MjY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgdm0ud2FzbUNvbnRleHQuc3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tM
aW1pdCgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NF
UlQoJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSA9PSB2bS53YXNtQ29udGV4
dC5sb2FkKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20o
d2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAg
IEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5q
c0VudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7
CiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBpbiBhIHJlZ2lzdGVyIG9yIG9u
IHRoZSBzdGFjayBzaW5jZSBpdCdzIHN0b3JlZCBpbiBWZWN0b3I8SlNWYWx1ZT4uCiAgICAgLy8g
VGhpcyBwcm9iYWJseSBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnksIHNpbmNlIHRoZSBXZWJBc3Nl
bWJseUZ1bmN0aW9uKiBzaG91bGQga2VlcCB0aGUgaW5zdGFuY2UKICAgICAvLyBhbGl2ZS4gQnV0
IGl0J3MgZ29vZCBoeWdpZW5lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaAkocmV2aXNpb24gMjI1MjY5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgi
CiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogICAgIFdhc206Oldhc21FbnRy
eXBvaW50TG9hZExvY2F0aW9uIHdhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV93YXNtRnVuY3Rpb24uY29kZTsgfQogICAgIFdhc206OkNhbGxhYmxlRnVuY3Rpb24g
Y2FsbGFibGVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbUZ1bmN0aW9uOyB9CiAKLSAg
ICB2b2lkKiBqc0VudHJ5cG9pbnQoKSB7IHJldHVybiBtX2pzRW50cnlwb2ludDsgfQorICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBqc0VudHJ5cG9pbnQoKSB7IHJldHVybiBtX2pzRW50cnlwb2lu
dDsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldhc21FbnRyeXBvaW50TG9hZExv
Y2F0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdlYkFzc2VtYmx5RnVuY3Rpb24sIG1f
d2FzbUZ1bmN0aW9uKSArIFdhc206OkNhbGxhYmxlRnVuY3Rpb246Om9mZnNldE9mV2FzbUVudHJ5
cG9pbnRMb2FkTG9jYXRpb24oKTsgfQogCkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gSXQncyBzYWZlIHRvIGp1c3QgaG9sZCB0aGUgcmF3IENhbGxhYmxlRnVuY3Rpb24vanNFbnRy
eXBvaW50IGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQogICAgIC8vIHRvIG91ciBJbnN0YW5j
ZSwgd2hpY2ggcG9pbnRzIHRvIHRoZSBNb2R1bGUgdGhhdCBleHBvcnRlZCB1cywgd2hpY2gKICAg
ICAvLyBlbnN1cmVzIHRoYXQgdGhlIGFjdHVhbCBTaWduYXR1cmUvY29kZSBkb2Vzbid0IGdldCBk
ZWFsbG9jYXRlZC4KLSAgICB2b2lkKiBtX2pzRW50cnlwb2ludDsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbV9qc0VudHJ5cG9pbnQ7CiAgICAgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbiBtX3dh
c21GdW5jdGlvbjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUzMTQpCisrKyBTb3VyY2UvV1RG
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTExLTI5ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBMZXQncyBzY3JhbWJsZSBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgdmFsdWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTc1
ODM0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnRyb2R1Y2UgYSBTY3JhbWJsZWRQdHIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBzY3JhbWJsaW5nLgor
CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3Rm
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6bWFrZVNjcmFtYmxlZFB0cktleSk6CisgICAgICAgICogd3RmL1NjcmFt
YmxlZFB0ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpTY3JhbWJsZWRQ
dHIpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJs
ZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNO
b3RTY3JhbWJsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OiBjb25zdCk6
CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAg
IChXVEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGVkQml0cyBjb25zdCk6CisgICAgICAgIChXVEY6
OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVk
UHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpzY3JhbWJsZSk6CisgICAgICAgIChXVEY6
OlNjcmFtYmxlZFB0cjo6ZGVzY3JhbWJsZSk6CisKIDIwMTctMTEtMjkgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBHQyBzaG91bGQgc3VwcG9ydCBpc29oZWFwcwpJ
bmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MjUyNjkpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDcgQEAKIAkJRTM4RDZFMjcxRjU1MjJFMzAwQTc1Q0M0
IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOEQ2RTI2MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVy
SlNPTi5jcHAgKi87IH07CiAJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMEFE
MzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCUU0QTBBRDNEMUE5
NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTNDMDA1MzZERjYgLyogV29y
a1F1ZXVlQ29jb2EuY3BwICovOyB9OworCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogU2Ny
YW1ibGVkUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwICovOyB9Owog
CQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIApAQCAtNTk2LDYgKzU5Nyw4IEBACiAJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERBODZBRCAvKiBT
dGFja1RyYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrVHJhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjcyQkJEQjEwN0ZBNDI0ODg2MTc4QjlF
IC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMwMUIy
QTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTg1NDE2QzFG
QkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmFtYmxlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYW1ibGVkUHRyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRIZWFwQWxs
b2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JiaWRIZWFwQWxs
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg5MjVBRjFEMDBEQUVD
MDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgz
RjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NzksNiArOTgyLDggQEAKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQ
YWlyTWFjLm1tICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICov
LAogCQkJCTBGRUM4NEIwMUJEQUNEMzkwMDgwRkY3NCAvKiBTY29wZWRMYW1iZGEuaCAqLywKKwkJ
CQlGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCAqLywKKwkJCQlG
RTg1NDE2RDFGQkUyODVDMDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmggKi8sCiAJCQkJMEY2NkIy
ODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICovLAogCQkJCTBGNjZCMjg1MURDOTdC
QUIwMDRBMUQzRiAvKiBTZWNvbmRzLmggKi8sCiAJCQkJQThBNDczMDYxNTFBODI1QjAwNDEyM0ZG
IC8qIFNlZ21lbnRlZFZlY3Rvci5oICovLApAQCAtMTQ1Nyw2ICsxNDYyLDcgQEAKIAkJCQkxQzE4
MUM3RjFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUMxODFDOTYxRDMwODAwQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQw
QjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTg1NDE2RTFGQkUyODVE
MDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMTFGQjE3
MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzQ0QTE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDRFMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjUyNjkpCisr
KyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYg
KzEyNyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFNoYXJlZFRhc2suaAogICAgIFNhdHVyYXRl
ZEFyaXRobWV0aWMuaAogICAgIFNjb3BlZExhbWJkYS5oCisgICAgU2NyYW1ibGVkUHRyLmgKICAg
ICBTZWNvbmRzLmgKICAgICBTZWdtZW50ZWRWZWN0b3IuaAogICAgIFNtYWxsUHRyU2V0LmgKQEAg
LTI1Niw2ICsyNTcsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBSZWZDb3VudGVkTGVha0NvdW50
ZXIuY3BwCiAgICAgUnVuTG9vcC5jcHAKICAgICBTSEExLmNwcAorICAgIFNjcmFtYmxlZFB0ci5j
cHAKICAgICBTZWNvbmRzLmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCiAgICAgU3RhY2tC
b3VuZHMuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmFtYmxlZFB0ci5oIgorCisjaW5jbHVkZSA8
d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisKK25hbWVzcGFjZSBXVEYgewor
Cit1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpCit7CisgICAgdWludHB0cl90IGtleSA9
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBrZXkgPSAoa2V5IDw8IDMyKSBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMpOworICAgIGtleSB8PSAweDc7IC8vIEVuc3VyZSB0
aGF0IGFueSB2YWxpZCBwb2ludGVyIF4ga2V5IHdpbGwgbm90IGJlIDAuCisgICAga2V5IHw9IChz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IDYzKTsgLy8gRW5zdXJlIHRoYXQgdGhlIHNjcmFt
YmxlZCBiaXRzIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlci4KKyNlbHNlCisgICAga2V5ID0g
MDsgLy8gU2NyYW1ibGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCB5ZXQuCisjZW5kaWYK
KyAgICByZXR1cm4ga2V5OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNl
L1dURi93dGYvU2NyYW1ibGVkUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2Ny
YW1ibGVkUHRyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2NyYW1ibGVkUHRy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisKKyNkZWZpbmUgRU5BQkxFX1BBUkFOT0lEX1NDUkFNQkxFRF9QVFJfQVNT
RVJUUyAwCisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBTY3JhbWJsZWRQdHJCaXRzID0gdWlu
dHB0cl90OworCit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleT4KK2NsYXNzIFNjcmFtYmxlZFB0ciB7
CitwdWJsaWM6CisgICAgU2NyYW1ibGVkUHRyKCkgeyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxU
Pjo6dmFsdWU+Ojp0eXBlPgorICAgIGV4cGxpY2l0IFNjcmFtYmxlZFB0cihUIHB0cikKKyAgICAg
ICAgOiBtX3NjcmFtYmxlZEJpdHMoc2NyYW1ibGUocHRyKSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChwdHIgJiYgbV9zY3JhbWJsZWRCaXRzKTsKKyAgICB9CisKKyAgICBTY3JhbWJsZWRQdHIoY29u
c3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgU2NyYW1ibGVkUHRy
KFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykKKyAgICAgICAgOiBtX3NjcmFtYmxlZEJp
dHMoc2NyYW1ibGVkQml0cykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3NjcmFtYmxlZEJpdHMp
OworICAgIH0KKworI2lmIEVOQUJMRShQQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMpICYm
IFVTRShKU1ZBTFVFNjQpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIHN0
YXRpYyBib29sIGlzU2NyYW1ibGVkKFQgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZSB8fCAocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4ZmZmZjAwMDAwMDAwMDAwMCk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgcGFyYW5vaWRB
c3NlcnRJc1NjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZh
bHVlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGljIHZv
aWQgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJU
KCFpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQg
PSB2b2lkKj4gc3RhdGljIHZvaWQgcGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZChUKSB7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIHBhcmFub2lkQXNzZXJ0
SXNOb3RTY3JhbWJsZWQoVCkgeyB9CisjZW5kaWYKKyAgICB2b2lkIHBhcmFub2lkQXNzZXJ0SXNT
Y3JhbWJsZWQoKSBjb25zdCB7IHBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQobV9zY3JhbWJsZWRC
aXRzKTsgfQorICAgIHZvaWQgcGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsg
cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgVCBkZXNjcmFtYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9p
bnRlcjxUPjo6dmFsdWU+Ojp0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisKKyAgICBT
Y3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMoKSBjb25zdCB7IHJldHVybiBtX3NjcmFtYmxl
ZEJpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2NyYW1i
bGVkQml0czsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fc2NyYW1ibGVkQml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmFtYmxl
ZFB0ciYgYikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjcmFtYmxlZEJpdHMgPT0g
Yi5tX3NjcmFtYmxlZEJpdHM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlw
ZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9p
bnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0eXBlPgorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
dHJUeXBlIGIpCisgICAgeworICAgICAgICByZXR1cm4gZGVzY3JhbWJsZTxQdHJUeXBlPigpID09
IGI7CisgICAgfQorCitwcml2YXRlOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJsZWRQdHJCaXRzIHNj
cmFtYmxlKFQgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVkUHRyQml0cz4ocHRy
KSBeIGtleTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgVCBkZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykgeyByZXR1
cm4gYml0d2lzZV9jYXN0PFQ+KHNjcmFtYmxlZEJpdHMgXiBrZXkpOyB9CisjZWxzZQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZShUIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJp
dHM+KHB0cik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFQgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxUPihzY3JhbWJsZWRCaXRzKTsgfQorI2VuZGlmCisKKyAgICBTY3Jh
bWJsZWRQdHJCaXRzIG1fc2NyYW1ibGVkQml0cyB7IDAgfTsKK307CisKK3ZvaWQgaW5pdGlhbGl6
ZVNjcmFtYmxlZFB0cigpOworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlU2NyYW1i
bGVkUHRyS2V5KCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNjcmFtYmxl
ZFB0cjsKK3VzaW5nIFdURjo6U2NyYW1ibGVkUHRyQml0czsKK3VzaW5nIFdURjo6bWFrZVNjcmFt
YmxlZFB0cktleTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327992</attachid>
            <date>2017-11-30 10:39:55 -0800</date>
            <delta_ts>2017-11-30 13:02:46 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>87657</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgMS4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5vdyBzdG9yZXMgYSBTY3Jh
bWJsZWRQdHIgaW5zdGVhZCBvZiBhIHZvaWQqLgorCisgICAgICAgIDIuIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cidzIGV4ZWN1dGFibGVBZGRyZXNzKCkgYW5kIGRhdGFMb2NhdGlvbigpIG5vdyB0YWtl
IGEKKyAgICAgICAgICAgdGVtcGxhdGUgYXJndW1lbnQgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0
byBjYXN0IHRoZSByZXN1bHQuICBUaGlzIG1ha2VzIHRoZQorICAgICAgICAgICBjbGllbnQgY29k
ZSB0aGF0IHVzZXMgdGhlc2UgZnVuY3Rpb25zIGEgbGl0dGxlIGxlc3MgdmVyYm9zZS4KKworICAg
ICAgICAzLiBDaGFuZ2UgdGhlIGNvZGUgYmFzZSBpbiBnZW5lcmFsIHRvIG1pbmltaXplIHBhc3Np
bmcgdm9pZCogY29kZSBwb2ludGVycyBhcm91bmQuCisgICAgICAgICAgIFdlIG5vdyBwYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZGVzY3JhbWJsZSBp
dCBvbmx5CisgICAgICAgICAgIGF0IHRoZSBsYXN0IG1vbWVudCB3aGVuIHdlIG5lZWQgdGhlIHVu
ZGVybHlpbmcgY29kZSBwb2ludGVyLgorCisgICAgICAgIDQuIEFkZGVkIHNvbWUgTWFzbVNjcmFt
YmxlZFB0ciBwYXJhbm9pZCBhc3NlcnRzIHRoYXQgYXJlIGRpc2FibGVkIChub3QgYnVpbHQpIGJ5
CisgICAgICAgICAgIGRlZmF1bHQuICBJJ20gbGVhdmluZyB0aGVtIGluIGJlY2F1c2UgdGhleSBh
cmUgaW5zdHJ1bWVudGFsIGluIGZpbmRpbmcgYnVncworICAgICAgICAgICB3aGVyZSBub3QgYWxs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMgd2VyZSBub3Qgc2NyYW1ibGVkIGFzIGV4cGVj
dGVkLgorICAgICAgICAgICBJIGV4cGVjdCB0aGVtIHRvIGJlIHVzZWZ1bCBpbiB0aGUgbmVhciBm
dXR1cmUgYXMgd2UgYWRkIG1vcmUgc2NyYW1ibGluZy4KKworICAgICAgICA1LiBBbHNvIGRpc2Fi
bGUgdGhlIGNhc3Rpbmcgb3BlcmF0b3Igb24gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIChleGNlcHQg
Zm9yCisgICAgICAgICAgIGV4cGxpY2l0IGNhc3RzIHRvIGEgYm9vbGVhbikuICBUaGlzIGVuc3Vy
ZXMgdGhhdCBjbGllbnRzIHdpbGwgYWx3YXlzIGV4cGxpY2l0bHkKKyAgICAgICAgICAgdXNlIHNj
cmFtYmxlZEJpdHMoKSBvciBleGVjdXRhYmxlQWRkcmVzcygpIHRvIGdldCBhIHZhbHVlIGJhc2Vk
IG9uIHdoaWNoIHZhbHVlCisgICAgICAgICAgIHRoZXkgYWN0dWFsbHkgbmVlZC4KKworICAgICAg
ICA1LiBBZGRlZCBjdXJyZW50VGhyZWFkKCkgaWQgdG8gdGhlIGxvZ2dpbmcgaW4gTExJbnRTbG93
UGF0aCB0cmFjZSBmdW5jdGlvbnMuCisgICAgICAgICAgIFRoaXMgd2FzIGhlbHBmdWwgd2hlbiBk
ZWJ1Z2dpbmcgdGVzdHMgdGhhdCByYW4gbXVsdGlwbGUgVk1zIGNvbmN1cnJlbnRseSBvbgorICAg
ICAgICAgICBkaWZmZXJlbnQgdGhyZWFkcy4KKworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbiA2NC1iaXQgYnVpbGRzIChpbmNsdWRpbmcgdGhl
CisgICAgICAgIENMb29wKS4gIEl0IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIDMyLWJpdCBiZWNh
dXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5CisgICAgICAgIHRvIHJlYWQgYSBnbG9i
YWwgdmFyaWFibGUgZnJvbSAzMi1iaXQgTExJbnQgY29kZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cik6CisgICAgICAgIChKU0M6OkFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQ29k
ZUxvY2F0aW9uLmg6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6aW5zdHJ1Y3Rp
b25BdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxBdE9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNvbW1vbjo6anVtcEF0T2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpjYWxsQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpDb2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbFB0ckF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWwzMkF0T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGluayk6CisgICAgICAg
IChKU0M6OkxpbmtCdWZmZXI6OnBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHRyOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpl
eGVjdXRhYmxlQWRkcmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlJldHVybkFkZHJlc3NQdHI6
OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjp2YWx1
ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OnNjcmFtYmxlZFB0ciBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpv
cGVyYXRvciEgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRWYWx1
ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZXhlY3V0YWJsZUFkZHJl
c3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6
OmRhdGFMb2NhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlck1hY3Jv
cy5jcHA6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJ
bnRlcnByZXRlcik6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGRm
Zy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Omxp
bmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hh
clN0cmluZ0p1bXApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxl
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYpOgorICAgICAgICAqIGZ0bC9GVExD
b21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCk6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0aElDKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0TWF0aElDRmFzdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ1Nsb3cpOgor
ICAgICAgICAqIGppdC9KSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQ29kZVdpdGhDb2Rl
UmVmOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SklUQ29kZVdp
dGhDb2RlUmVmOjpvZmZzZXRPZik6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6
CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAg
ICAgKiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwOgorICAgICAgICAoSlNDOjpQQ1RvQ29kZU9y
aWdpbk1hcDo6UENUb0NvZGVPcmlnaW5NYXApOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKToKKyAgICAgICAgKiBqaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAg
ICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGlu
dF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAqIHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRp
bmcpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAg
ICAgIChKU0M6Oldhc206OkNhbGxlZTo6ZW50cnlwb2ludCBjb25zdCk6CisgICAgICAgICogd2Fz
bS9XYXNtQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpDb2Rl
QmxvY2spOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZSk6CisKIDIwMTctMTEtMzAgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjI1MzE0
KTogW0xpbnV4XSBNb3JlIHRoYW4gMjAwMCBqc2MgdGVzdHMgYXJlIGZhaWxpbmcgYWZ0ZXIgcjIy
NTMxNApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MzAsNyArODMwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHB0cmRpZmZf
dCBkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBh
LCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGIpCiAgICAgewotICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KGIuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSByZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4oYS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAg
cmV0dXJuIGIuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpIC0gYS5leGVjdXRhYmxlQWRk
cmVzczxwdHJkaWZmX3Q+KCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7
IHJldHVybiBtX2Fzc2VtYmxlci5kZWJ1Z09mZnNldCgpOyB9CkBAIC04NTIsNiArODUyLDExIEBA
IHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWws
IHZhbHVlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBjb2Rl
LCBBc3NlbWJsZXJMYWJlbCBsYWJlbCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlKQorICAg
IHsKKyAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWwsIHZhbHVl
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkKiBnZXRMaW5r
ZXJBZGRyZXNzKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGxhYmVsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIEFzc2VtYmxlclR5cGU6OmdldFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgbGFiZWwp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NvZGVMb2NhdGlv
bi5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0NvZGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2NCw1NSArMTY0LDU1IEBAIHB1YmxpYzoK
IGlubGluZSBDb2RlTG9jYXRpb25JbnN0cnVjdGlvbiBDb2RlTG9jYXRpb25Db21tb246Omluc3Ry
dWN0aW9uQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSW5zdHJ1Y3Rpb24ocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29k
ZUxvY2F0aW9uSW5zdHJ1Y3Rpb24oZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0KTsKIH0K
IAogaW5saW5lIENvZGVMb2NhdGlvbkxhYmVsIENvZGVMb2NhdGlvbkNvbW1vbjo6bGFiZWxBdE9m
ZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQp
OwotICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbChyZWludGVycHJldF9jYXN0PGNoYXIqPihk
YXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbChk
YXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0aW9u
SnVtcCBDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAg
IEFTU0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRp
b25KdW1wKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7
CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkp1bXAoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zm
c2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkNhbGwgQ29kZUxvY2F0aW9uQ29tbW9uOjpj
YWxsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQo
b2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChyZWludGVycHJldF9jYXN0PGNo
YXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25D
YWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9j
YXRpb25OZWFyQ2FsbCBDb2RlTG9jYXRpb25Db21tb246Om5lYXJDYWxsQXRPZmZzZXQoaW50IG9m
ZnNldCwgTmVhckNhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09G
RlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25OZWFyQ2FsbChyZWludGVycHJl
dF9jYXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQsIGNhbGxNb2RlKTsKKyAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwoZGF0YUxvY2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0
LCBjYWxsTW9kZSk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgQ29kZUxv
Y2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFT
U0VSVF9WQUxJRF9DT0RFX09GRlNFVChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25E
YXRhTGFiZWxQdHIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zm
c2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKGRhdGFMb2NhdGlvbjxj
aGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBD
b2RlTG9jYXRpb25Db21tb246OmRhdGFMYWJlbDMyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAg
ICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0
aW9uRGF0YUxhYmVsMzIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsg
b2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIoZGF0YUxvY2F0aW9u
PGNoYXIqPigpICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkRhdGFMYWJlbENv
bXBhY3QgQ29kZUxvY2F0aW9uQ29tbW9uOjpkYXRhTGFiZWxDb21wYWN0QXRPZmZzZXQoaW50IG9m
ZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1
cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChyZWludGVycHJldF9jYXN0PGNoYXIqPihk
YXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9jYXRpb25EYXRhTGFi
ZWxDb21wYWN0KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBD
b2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQgQ29kZUxvY2F0aW9uQ29tbW9uOjpjb252ZXJ0aWJs
ZUxvYWRBdE9mZnNldChpbnQgb2Zmc2V0KQogewogICAgIEFTU0VSVF9WQUxJRF9DT0RFX09GRlNF
VChvZmZzZXQpOwotICAgIHJldHVybiBDb2RlTG9jYXRpb25Db252ZXJ0aWJsZUxvYWQocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4g
Q29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNl
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MCw3ICs3MCw3IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZlcjo6ZmluYWxp
emUKICAgICB2YV9lbmQoYXJnTGlzdCk7CiAgICAgb3V0LnByaW50ZigiOlxuIik7CiAKLSAgICBv
dXQucHJpbnRmKCIgICAgQ29kZSBhdCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgKyByZXN1bHQuc2l6ZSgpKTsKKyAgICBvdXQucHJpbnRmKCIgICAgQ29kZSBh
dCBbJXAsICVwKTpcbiIsIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVzdWx0
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHJlc3VsdC5zaXplKCkpOwogICAg
IAogICAgIENTdHJpbmcgaGVhZGVyID0gb3V0LnRvQ1N0cmluZygpOwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDIy
NTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCwgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGxpbmsoQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKICAg
ICB7Ci0gICAgICAgIGxpbmsoY2FsbCwgRnVuY3Rpb25QdHIobGFiZWwuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpOworICAgICAgICBsaW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGxhYmVsKSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgbGluayhKdW1wIGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQpA
QCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdGNoKERhdGFMYWJlbFB0ciBs
YWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgdmFsdWUpCiAgICAgewogICAgICAgICBBc3NlbWJsZXJM
YWJlbCB0YXJnZXQgPSBhcHBseU9mZnNldChsYWJlbC5tX2xhYmVsKTsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFyZ2V0LCB2YWx1ZS5leGVjdXRhYmxlQWRk
cmVzcygpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUoKSwgdGFy
Z2V0LCB2YWx1ZSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0byBv
YnRhaW4gaGFuZGxlcyB0byBhbGxvdyB0aGUgY29kZSB0byBiZSByZWxpbmtlZCAvIHJlcGF0Y2hl
ZCBsYXRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw5ICsyOSwyMCBAQAogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNsdWRl
IDxtdXRleD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKK3VpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQ
dHJLZXk7CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCkKK3sKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICBnX21hc21TY3JhbWJsZWRQ
dHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50Q29kZVB0cihPcGNv
ZGVJRCBjb2RlSWQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhM
TEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24g
MjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1NjcmFtYmxlZFB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLy8gQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiBj
aGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVyLCBhbmQgdGhhdCBpdCBpcyBhIHZh
bGlkCkBAIC01MCw2ICs1MSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZXh0ZXJuICJDIiBK
U19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJsZWRQdHJLZXk7CisKK3VzaW5nIE1h
c21TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8Z19tYXNtU2NyYW1ibGVkUHRyS2V5PjsKKwor
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworCiBlbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7
CiAKIC8vIEZ1bmN0aW9uUHRyOgpAQCAtNTgsMTUgKzY1LDEzIEBAIGVudW0gT3Bjb2RlSUQgOiB1
bnNpZ25lZDsKIC8vIChwYXJ0aWN1bGFybHksIHRoZSBzdHViIGZ1bmN0aW9ucykuCiBjbGFzcyBG
dW5jdGlvblB0ciB7CiBwdWJsaWM6Ci0gICAgRnVuY3Rpb25QdHIoKQotICAgICAgICA6IG1fdmFs
dWUoMCkKLSAgICB7Ci0gICAgfQorICAgIEZ1bmN0aW9uUHRyKCkgeyB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSByZXR1cm5UeXBlPgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVl
KSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTc0
LDYgKzc5LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShh
cmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAg
ICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUp
OwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApA
QCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgqdmFs
dWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUp
CiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIApAQCAtODgsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIo
cmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAg
ICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0
cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTk1LDYgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFy
Z1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFy
Z1R5cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
eworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVk
KG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KIApAQCAtMTA5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1
cm5UeXBlKCp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQsIGFy
Z1R5cGU1LCBhcmdUeXBlNikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
eworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVk
KG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KIC8vIE1TVkMgZG9lc24ndCBzZWVtIHRvIHRyZWF0IGZ1bmN0aW9ucyB3aXRoIGRpZmZl
cmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGFzCkBAIC0xMTksNiArMTMwLDcgQEAgcHVibGljOgog
ICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoKSkKICAgICAgICAgOiBt
X3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBh
cmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJ
RF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAgcHVi
bGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEp
KQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNj
cmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAg
ICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTEzMyw2
ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZh
bHVlKShhcmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTE0MCw2ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUz
KSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21T
Y3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAg
ICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBAIC0xNDcs
NiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2
YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6
cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZB
TElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAjZW5kaWYKQEAgLTE1Nyw2ICsxNzMs
NyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVl
KSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFz
bVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTE2
NCw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoRkFTVENB
TEwgKnZhbHVlKShhcmdUeXBlMSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAg
ICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1i
bGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KIApAQCAtMTcxLDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihy
ZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAg
IDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRy
OjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRf
VkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTc4LDYgKzE5Nyw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUpKGFy
Z1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZh
bHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05v
dFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUiht
X3ZhbHVlKTsKICAgICB9CiAKQEAgLTE4NSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFy
Z1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAg
eworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVk
KG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGljOgogICAgICAgICAvLyAo
SSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJlbnQgY29uc3Ru
ZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7
CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQo
bV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAg
ICAgfQogCi0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAg
dm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
ZXhwbGljaXQgRnVuY3Rpb25QdHIoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKIAorICAgIHZvaWQq
IHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lk
QXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOwor
ICAgIH0KKyAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAg
ICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUp
OworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCog
bV92YWx1ZTsKKyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0dXJu
QWRkcmVzc1B0cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlzIHRo
ZSBzb3VyY2Ugb2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0ciB7
CiBwdWJsaWM6Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgwKQot
ICAgIHsKLSAgICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGljaXQg
UmV0dXJuQWRkcmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQog
ICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFt
YmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAKICAgICBleHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRyIGZ1
bmN0aW9uKQogICAgICAgICA6IG1fdmFsdWUoZnVuY3Rpb24udmFsdWUoKSkKICAgICB7CisgICAg
ICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1
ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQog
Ci0gICAgdm9pZCogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgdm9pZCog
dmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRB
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsK
QEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQq
IG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07CiAKIC8vIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgyLDcgQEAgcHJpdmF0ZToKIC8vIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0byB3cmFwIHBvaW50ZXJzIHRvIEpJVCBn
ZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB7CiBwdWJsaWM6Ci0g
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAgewot
ICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSB7IH0KIAogICAgIGV4cGxpY2l0IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkKICNpZiBDUFUoQVJNX1RIVU1CMikKQEAg
LTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogI2Vu
ZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsK
KyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCiAgICAgeworICAgICAg
ICBBU1NFUlQodmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZhbHVl
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0
Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBNYXNtU2NyYW1ibGVk
UHRyKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1NjcmFt
YmxlZCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjc3LDI0ICszMTIs
NjQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5B
ZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKICAgICB7CisgICAg
ICAgIEFTU0VSVChyYS52YWx1ZSgpKTsKKyAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2VydElz
U2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAg
VCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLnBhcmFu
b2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3ZhbHVl
LmRlc2NyYW1ibGU8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOworICAgIH0KICNpZiBDUFUoQVJN
X1RIVU1CMikKICAgICAvLyBUbyB1c2UgdGhpcyBwb2ludGVyIGFzIGEgZGF0YSBhZGRyZXNzIHJl
bW92ZSB0aGUgZGVjb3JhdGlvbi4KLSAgICB2b2lkKiBkYXRhTG9jYXRpb24oKSBjb25zdCB7IEFT
U0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihtX3ZhbHVlKSAtIDE7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+
CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92YWx1ZS5wYXJh
bm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5U
RVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1f
dmFsdWUuZGVzY3JhbWJsZTxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKKyAgICB9CiAjZWxzZQot
ICAgIHZvaWQqIGRhdGFMb2NhdGlvbigpIGNvbnN0IHsgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRF
UihtX3ZhbHVlKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0g
dm9pZCo+CisgICAgVCBkYXRhTG9jYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV92YWx1
ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RF
X1BPSU5URVIobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNj
cmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoUEFSQU5PSURfU0NSQU1CTEVE
X1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRW
YWx1ZSgpKQorICAgICAgICAgICAgbV92YWx1ZS5wYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCk7
CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlOworICAgIH0KKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISghKnRoaXMpOyB9CiAgICAgCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgb3RoZXIpIGNvbnN0CiAg
ICAgeworI2lmIEVOQUJMRShQQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMpCisgICAgICAg
IGlmICghaXNFbXB0eVZhbHVlKCkgJiYgIWlzRGVsZXRlZFZhbHVlKCkpCisgICAgICAgICAgICBt
X3ZhbHVlLnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoKTsKKyAgICAgICAgaWYgKCFvdGhlci5p
c0VtcHR5VmFsdWUoKSAmJiAhb3RoZXIuaXNEZWxldGVkVmFsdWUoKSkKKyAgICAgICAgICAgIG90
aGVyLm1fdmFsdWUucGFyYW5vaWRBc3NlcnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCiAgICAgICAg
IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCisgICAgLy8gRGlzYWxs
b3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQs
IHRoZSBjbGllbnQKKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBv
ciBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZh
bHVlPj4KKyAgICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CisKICAgICB2b2lkIGR1bXBXaXRoTmFt
ZShjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CkBAIC0zMDQsMjQgKzM3OSwyNCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKEVtcHR5VmFsdWVUYWcpCiAg
ICAgICAgIDogbV92YWx1ZShlbXB0eVZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoRGVsZXRlZFZhbHVlVGFnKQogICAgICAgICA6
IG1fdmFsdWUoZGVsZXRlZFZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAKICAg
ICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlWYWx1
ZSgpOyB9CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUg
PT0gZGVsZXRlZFZhbHVlKCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyBy
ZXR1cm4gUHRySGFzaDx2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKworICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdCB7IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2gobV92YWx1ZS5zY3Jh
bWJsZWRCaXRzKCkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxKSk7IH0KLSAgICBzdGF0aWMgdm9pZCogZGVs
ZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oMikpOyB9Ci0gICAgCi0gICAgdm9pZCogbV92YWx1ZTsKKyAgICBzdGF0aWMgTWFzbVNj
cmFtYmxlZFB0ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFtYmxlZFB0cigxKTsgfQor
ICAgIHN0YXRpYyBNYXNtU2NyYW1ibGVkUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIE1hc21T
Y3JhbWJsZWRQdHIoMik7IH0KKworICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKIH07CiAK
IHN0cnVjdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAgLTQwNSw2ICs0ODAsMTYgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVjdXRhYmxl
TWVtb3J5OwogfTsKIAoraW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgcHRyKQorICAgIC8vIFVzaW5nIGEgQy1jdHlsZSBjYXN0IGhlcmUgdG8gYXZv
aWQgY29tcGlsZXIgZXJyb3Igb24gUlZUQzoKKyAgICAvLyBFcnJvcjogICM2OTQ6IHJlaW50ZXJw
cmV0X2Nhc3QgY2Fubm90IGNhc3QgYXdheSBjb25zdCBvciBvdGhlciB0eXBlIHF1YWxpZmllcnMK
KyAgICAvLyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBkaWZmZXJl
bnQgY29uc3RuZXNzIHRvIEdDQy9NU1ZDPykKKyAgICA6IG1fdmFsdWUocHRyLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpCit7CisgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKKyAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMjUzMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihpbmRleCk7Ci0gICAgICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKys7CisgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAgICAg
ICAgICAvLyBUZWNobmljYWxseSwgd2UgZG9uJ3QgaGF2ZSB0byBjbG9iYmVyIG1hY3JvIHJlZ2lz
dGVycyBvbiBYODZfNjQuIFRoaXMgaXMgcHJvYmFibHkKICAgICAgICAgICAgICAgICAvLyBPSyB0
aG91Z2guCiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtNTA1LDEwICs1MDUsMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVn
IGluZGV4ID0gcGFyYW1zWzBdLmdwcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOwotICAgICAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJhbXMu
Z3BTY3JhdGNoKDEpOworCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KCZnX21h
c21TY3JhbWJsZWRQdHJLZXksIGRlc2NyYW1ibGVyS2V5KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBzY3Jh
dGNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKENDYWxsSGVscGVyczo6QmFz
ZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChD
Q2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoLCBpbmRleCwgQ0NhbGxIZWxwZXJzOjp0aW1l
c1B0cigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQueG9yNjQoZGVz
Y3JhbWJsZXJLZXksIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAo
c2NyYXRjaCk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGxhYmVscyBhcmUg
Z3VhcmFudGVlZCB0byBiZSBwb3B1bGF0ZWQgYmVmb3JlIGVpdGhlciBsYXRlIHBhdGhzIG9yCiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIHRhc2tzIHJ1bi4KICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlY3RvcjxCb3g8Q0NhbGxIZWxwZXJzOjpMYWJlbD4+IGxhYmVscyA9IHBhcmFt
cy5zdWNjZXNzb3JMYWJlbHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMwMDcsNyArMTMwMDcsNyBAQCB2b2lkIHRlc3RJbnRlcnBy
ZXRlcigpCiAgICAgcG9seUp1bXAtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgIHBvbHlK
dW1wLT5hcHBlbmRTb21lUmVnaXN0ZXIob3Bjb2RlKTsKICAgICBwb2x5SnVtcC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBvbHlKdW1wLT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMrKzsKKyAgICBwb2x5SnVtcC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gMjsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZyZXF1ZW50ZWRCbG9jayhhZGRU
b0RhdGFQb2ludGVyKSk7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVk
QmxvY2soYWRkVG9Db2RlUG9pbnRlcikpOwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3Io
RnJlcXVlbnRlZEJsb2NrKGFkZFRvRGF0YSkpOwpAQCAtMTMwMjksOSArMTMwMjksMTUgQEAgdm9p
ZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKiBq
dW1wVGFibGUgPSBiaXR3aXNlX2Nhc3Q8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKj4oCiAgICAgICAg
ICAgICAgICAgcGFyYW1zLnByb2MoKS5hZGREYXRhU2VjdGlvbihzaXplb2YoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKSAqIGxhYmVscy5zaXplKCkpKTsKIAotICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYWJsZSksIHBhcmFtcy5ncFNjcmF0Y2goMCkp
OwotICAgICAgICAgICAgaml0Lmp1bXAoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgocGFyYW1zLmdw
U2NyYXRjaCgwKSwgcGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpKTsK
LSAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3Jh
dGNoKDApOworICAgICAgICAgICAgR1BSUmVnIGRlc2NyYW1ibGVyS2V5ID0gcGFyYW1zLmdwU2Ny
YXRjaCgxKTsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGp1bXBUYWJsZSksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0LmxvYWQ2NCgmZ19tYXNt
U2NyYW1ibGVkUHRyS2V5LCBkZXNjcmFtYmxlcktleSk7CisgICAgICAgICAgICBqaXQubG9hZDY0
KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIHBhcmFtc1swXS5ncHIoKSwgQ0NhbGxI
ZWxwZXJzOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBqaXQueG9yNjQoZGVz
Y3JhbWJsZXJLZXksIHNjcmF0Y2gpOworICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCk7CisK
ICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzaygKICAgICAgICAgICAgICAgICBbJiwganVtcFRh
YmxlLCBsYWJlbHNdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGxhYmVscy5zaXplKCk7IGktLTspCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUz
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1w
RGlzYXNzZW1ibHkoUHJpbnQKICAgICBDb2RlTG9jYXRpb25MYWJlbCBzdGFydCA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihwcmV2aW91c0xhYmVsKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbmQg
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsKICAgICBwcmV2aW91c0xhYmVs
ID0gY3VycmVudExhYmVsOwotICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbmQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSkgPj0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpOwotICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihlbmQuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQp
OworICAgIEFTU0VSVChlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpID49IHN0YXJ0
LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7CisgICAgZGlzYXNzZW1ibGUoc3RhcnQs
IGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxlQWRk
cmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5nZXQoKSwgb3V0KTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsNyArMjg4
LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIAogICAg
IGZvciAoYXV0byYgcmVjb3JkIDogbV9qc0NhbGxzKSB7CiAgICAgICAgIENhbGxMaW5rSW5mbyYg
aW5mbyA9ICpyZWNvcmQuaW5mbzsKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlY29yZC5zbG93
Q2FsbCwgRnVuY3Rpb25QdHIodm0oKS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmso
cmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICBpbmZvLnNldENhbGxMb2NhdGlvbnMoCiAg
ICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2Fs
bChyZWNvcmQuc2xvd0NhbGwpKSwKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtC
dWZmZXIubG9jYXRpb25PZihyZWNvcmQudGFyZ2V0VG9DaGVjaykpLApAQCAtNTI1LDkgKzUyNSw5
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgCiAgICAgbV9qaXRD
b2RlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxv
Y2s6OkxhdGVTaHJpbmspOwotICAgIAotICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlG
aXh1cCwgRnVuY3Rpb25QdHIoKHZtKCktPmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikp
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgCisKKyAgICBsaW5rQnVmZmVyLT5s
aW5rKG1fY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKHZtKCktPmdldENUSVN0dWIoYXJpdHlG
aXh1cEdlbmVyYXRvcikuY29kZSgpKSk7CisKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7
CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVy
LT5sb2NhdGlvbk9mKG1fYXJpdHlDaGVjayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjks
OCArMjAyOSw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmluZFN3aXRjaEkKICAg
ICBkb3VibGUgYXNEb3VibGUgPSB2YWx1ZS5hc0RvdWJsZSgpOwogICAgIGludDMyX3QgYXNJbnQz
MiA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGFzRG91YmxlKTsKICAgICBpZiAoYXNEb3VibGUgPT0g
YXNJbnQzMikKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPih0YWJsZS5jdGlGb3JW
YWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcio+KHRhYmxlLmN0aURlZmF1bHQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAg
IHJldHVybiB0YWJsZS5jdGlGb3JWYWx1ZShhc0ludDMyKS5leGVjdXRhYmxlQWRkcmVzczxjaGFy
Kj4oKTsKKyAgICByZXR1cm4gdGFibGUuY3RpRGVmYXVsdC5leGVjdXRhYmxlQWRkcmVzczxjaGFy
Kj4oKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykKQEAgLTIw
MzgsNyArMjAzOCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW4K
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZXhlYy0+Y29k
ZUJsb2NrKCktPnN0cmluZ1N3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShz
dHJpbmctPnZhbHVlKGV4ZWMpLmltcGwoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgcmV0
dXJuIGV4ZWMtPmNvZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCku
Y3RpRm9yVmFsdWUoc3RyaW5nLT52YWx1ZShleGVjKS5pbXBsKCkpLmV4ZWN1dGFibGVBZGRyZXNz
PGNoYXIqPigpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3Ry
aW5nQW5kR2V0QnJhbmNoT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IHRhYmxlSW5kZXgs
IEpTU3RyaW5nKiBzdHJpbmcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3
NzAsNyArOTc3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZShOb2RlKiwgRWQK
IH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCi0gICAgU3dpdGNo
RGF0YSogZGF0YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRh
KiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgZGVzY3JhbWJsZXJL
ZXlTY3JhdGNoKQogewogICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2ppdC5jb2RlQmxv
Y2soKS0+c3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwogICAgIHRhYmxl
LmVuc3VyZUNUSVRhYmxlKCk7CkBAIC05Nzc4LDggKzk3NzgsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXAoCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2ppdC5i
cmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZSwgSW1tMzIodGFibGUuY3Rp
T2Zmc2V0cy5zaXplKCkpKSwKICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAg
IFVOVVNFRF9QQVJBTShkZXNjcmFtYmxlcktleVNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRoZSAzMi1i
aXQgYnVpbGQuCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBtX2ppdC5sb2FkNjQoJmdfbWFzbVNj
cmFtYmxlZFB0cktleSwgZGVzY3JhbWJsZXJLZXlTY3JhdGNoKTsKKyNlbmRpZgogICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJlZ2luKCkpLCBzY3JhdGNoKTsK
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgdmFsdWUs
IEpJVENvbXBpbGVyOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CisgICAgCisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBtX2ppdC54b3I2NChkZXNjcmFtYmxlcktleVNjcmF0Y2gsIHNjcmF0Y2gpOwor
I2VuZGlmCiAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICAgICBkYXRhLT5kaWRVc2VKdW1wVGFi
bGUgPSB0cnVlOwogfQpAQCAtOTc5MCw3ICs5Nzk4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFN3aXRjaEltbShOb2RlKgogICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgU3BlY3Vs
YXRlSW50MzJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZh
bHVlLmdwcigpLCB0ZW1wLmdwcigpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMp
OworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwgdGVtcC5ncHIo
KSwgdGVtcDIuZ3ByKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtOTc5OCwxNSArOTgwNywxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoSW1tKE5vZGUqCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKICAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BS
UmVnIHNjcmF0Y2ggPSB0ZW1wLmdwcigpOwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyID0gdGVtcDIuZ3ByKCk7CisKICAgICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1faml0
LmJyYW5jaDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJlbG93LCB2YWx1ZVJlZ3MuZ3By
KCksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIGVtaXRTd2l0Y2hJ
bnRKdW1wKGRhdGEsIHZhbHVlUmVncy5ncHIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRTd2l0
Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5ncHIoKSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogICAg
ICAgICBub3RJbnQubGluaygmbV9qaXQpOwogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0NjQoCkBAIC05ODE5LDcgKzk4MzAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAjZWxzZQogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBub3RJbnQgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgdmFsdWVSZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKTsKLSAgICAgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAgICAgbm90SW50Lmxpbmso
Jm1faml0KTsKICAgICAgICAgYWRkQnJhbmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
CkBAIC05ODQzLDcgKzk4NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1t
KE5vZGUqCiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVt
cCgKLSAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKQor
ICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJl
ZyBzY3JhdGNoMikKIHsKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKApA
QCAtOTg3NCw3ICs5ODg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJT
dHJpbgogICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlKSwgc2Ny
YXRjaCk7CiAgICAgCiAgICAgcmVhZHkubGluaygmbV9qaXQpOwotICAgIGVtaXRTd2l0Y2hJbnRK
dW1wKGRhdGEsIHNjcmF0Y2gsIHZhbHVlKTsKKyAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCBz
Y3JhdGNoLCB2YWx1ZSwgc2NyYXRjaDIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3dpdGNoQ2hhcihOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhKQpAQCAtOTg4MywxNCArOTg5
NCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAgY2Fz
ZSBTdHJpbmdVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAg
IAorICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisKICAgICAgICAgR1BSUmVnIG9w
MUdQUiA9IG9wMS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwot
ICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CisKICAgICAg
ICAgb3AxLnVzZSgpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEoKSwg
b3AxR1BSKTsKLSAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMUdQUiwg
dGVtcEdQUik7CisgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFHUFIs
IHRlbXBHUFIsIHRlbXAyR1BSKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTg5OCwxNyArOTkx
MSwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAgICAgY2Fz
ZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworCiAgICAgICAgIEpTVmFsdWVSZWdzIG9w
MVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1w
LmdwcigpOwotICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7
CisKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1faml0
LmJyYW5jaElmTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAg
ICAgICAKICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMVJlZ3Mu
cGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAKLSAgICAg
ICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpLCB0
ZW1wR1BSKTsKKyAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3Mu
cGF5bG9hZEdQUigpLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJl
dmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjg1OCw5ICsyODU4LDkgQEAgcHVibGljOgogICAg
ICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQ7CiAgICAgfTsKICAgICAKLSAgICB2b2lkIGVtaXRTd2l0
Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKKyAg
ICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJl
ZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpOwogICAgIHZvaWQgZW1pdFN3aXRjaEltbShOb2Rl
KiwgU3dpdGNoRGF0YSopOwotICAgIHZvaWQgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKFN3aXRj
aERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICB2b2lkIGVtaXRTd2l0
Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRj
aCwgR1BSUmVnIHNjcmF0Y2gyKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hDaGFyKE5vZGUqLCBTd2l0
Y2hEYXRhKik7CiAgICAgdm9pZCBlbWl0QmluYXJ5U3dpdGNoU3RyaW5nUmVjdXJzZSgKICAgICAg
ICAgU3dpdGNoRGF0YSosIGNvbnN0IFZlY3RvcjxTdHJpbmdTd2l0Y2hDYXNlPiYsIHVuc2lnbmVk
IG51bUNoZWNrZWQsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rp
c2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDIsNyArNDIsNyBAQCB2b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kCiAgICAgaWYgKHRyeVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJlZml4
LCBvdXQpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgb3V0LnByaW50ZigiJXNkaXNhc3Nl
bWJseSBub3QgYXZhaWxhYmxlIGZvciByYW5nZSAlcC4uLiVwXG4iLCBwcmVmaXgsIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgKyBzaXplKTsKKyAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5IG5vdCBh
dmFpbGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsgc2l6ZSk7CiB9
CiAKIG5hbWVzcGFjZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjUzMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTMgKzM3LDEzIEBAIGJvb2wgdHJ5
VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYoY29uc3QgTWEKIHsKICAgICB1ZF90IGRpc2Fzc2VtYmxl
cjsKICAgICB1ZF9pbml0KCZkaXNhc3NlbWJsZXIpOwotICAgIHVkX3NldF9pbnB1dF9idWZmZXIo
JmRpc2Fzc2VtYmxlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSksIHNpemUpOworICAgIHVkX3NldF9pbnB1dF9idWZmZXIoJmRpc2Fzc2Vt
YmxlciwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzczx1bnNpZ25lZCBjaGFyKj4oKSwgc2l6ZSk7
CiAjaWYgQ1BVKFg4Nl82NCkKICAgICB1ZF9zZXRfbW9kZSgmZGlzYXNzZW1ibGVyLCA2NCk7CiAj
ZWxzZQogICAgIHVkX3NldF9tb2RlKCZkaXNhc3NlbWJsZXIsIDMyKTsKICNlbmRpZgotICAgIHVk
X3NldF9wYygmZGlzYXNzZW1ibGVyLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICB1ZF9zZXRfcGMoJmRpc2Fzc2VtYmxlciwgY29kZVB0
ci5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkpOwogICAgIHVkX3NldF9zeW50YXgoJmRp
c2Fzc2VtYmxlciwgVURfU1lOX0FUVCk7CiAgICAgCiAgICAgdWludDY0X3QgY3VycmVudFBDID0g
ZGlzYXNzZW1ibGVyLnBjOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCArMTUyLDggQEAgdm9pZCBjb21w
aWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZQogICAgIGlmICh2bS5zaG91bGRCdWlsZGVy
UENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCiAgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVP
cmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5i
M0NvZGVMaW5rQnVmZmVyKSk7CiAKLSAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGJpdHdp
c2VfY2FzdDxHZW5lcmF0ZWRGdW5jdGlvbj4oCi0gICAgICAgIHN0YXRlLmZpbmFsaXplci0+YjND
b2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkp
KTsKKyAgICBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkpOwor
ICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWwuZXhlY3V0YWJsZUFkZHJlc3M8R2Vu
ZXJhdGVkRnVuY3Rpb24+KCk7CiAgICAgc3RhdGUuaml0Q29kZS0+aW5pdGlhbGl6ZUIzQnlwcm9k
dWN0cyhzdGF0ZS5wcm9jLT5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIAogICAgIGZvciAoYXV0byBw
YWlyIDogc3RhdGUuZ3JhcGgubV9lbnRyeXBvaW50SW5kZXhUb0NhdGNoQnl0ZWNvZGVPZmZzZXQp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkocmV2aXNp
b24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBKSVRDb2RlOjpDb2RlUHRyIEpJVENvZGU6
OmFkZHJlc3NGb3JDYWxsCiAKIHZvaWQqIEpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZz
ZXQoc2l6ZV90IG9mZnNldCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNldDsKKyAgICByZXR1
cm4gbV9hZGRyZXNzRm9yQ2FsbC5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIG9mZnNldDsK
IH0KIAogdm9pZCogSklUQ29kZTo6ZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3QpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
MCw3ICsxNzAsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywgY29kZUJsb2NrLT5tX2lz
Q29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2spOwogICAgICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhj
ZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgbG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21D
YWxsZXJGcmFtZSk7Ci0gICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVw
LCBGdW5jdGlvblB0cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2Fs
bEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0
b3IpKS5jb2RlKCkpKTsKICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1w
cywgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRG
dW5jdGlvbikpKTsKICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgyMSw3ICsxODIxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBqaXQubGFiZWwo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9j
YXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93
UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9u
T2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTgzNSw3ICsxODM1LDcgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAgICAgICBhdXRv
IGlubGluZUVuZCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFz
ayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGlu
ZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5k
KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxp
bmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAgICAg
IG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAgIH0p
OwogI2VuZGlmCkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNQVRI
X0lDX1NUQVRTKQogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aEVuZCA9IGpp
dC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAo
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93
UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIu
bG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0g
c2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC0xOTI4LDcgKzE5
MjgsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgICAgICAgICAg
ICAgIGF1dG8gaW5saW5lRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9u
T2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihp
bmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgICAg
ICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAgICAg
ICAgICAgfSk7CiAjZW5kaWYKQEAgLTY3NjUsNyArNjc2NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxpbmtDYWxsID0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5j
b2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGws
IEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0Nh
bGwpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9j
YXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxp
bmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkBAIC03MDc2LDcgKzcwNzYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBs
aW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIobGlu
a0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRk
cmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0Nh
bGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChzbG93Q2Fs
bCkpLApAQCAtNzM0Nyw3ICs3MzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
Wz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIo
bGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
PnNldENhbGxMb2NhdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAgLTc2
MzAsNyArNzYzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGxpbmtDYWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIu
bGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIobGlua0NhbGwpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9j
YXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxp
bmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5s
aW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRAogICAgIC8vIHRoZSBMTEludCBj
b2RlIGZvciB0aGUgb3Bjb2RlIChzZWUgdGhlIEVNQkVEX09QQ09ERV9JRF9JRl9ORUVERUQgbWFj
cm8KICAgICAvLyBpbiBMb3dMZXZlbEludGVycHJldGVyLmNwcCkuCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvZGVQdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Bjb2RlKSk7Ci0gICAg
aW50MzJfdCogb3Bjb2RlSURBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oY29k
ZVB0ci5kYXRhTG9jYXRpb24oKSkgLSAxOworICAgIGludDMyX3QqIG9wY29kZUlEQWRkcmVzcyA9
IGNvZGVQdHIuZGF0YUxvY2F0aW9uPGludDMyX3QqPigpIC0gMTsKICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IHN0YXRpY19jYXN0PE9wY29kZUlEPigqb3Bjb2RlSURBZGRyZXNzKTsKICAgICBBU1NF
UlQob3Bjb2RlSUQgPCBOVU1CRVJfT0ZfQllURUNPREVfSURTKTsKICAgICByZXR1cm4gb3Bjb2Rl
SUQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJ
KHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRNYXRoSUNGYXN0KEpJVFVuYXJ5TWF0aElDPAogI2lmIEVOQUJMRShNQVRIX0lDX1NU
QVRTKQogICAgIGF1dG8gaW5saW5lRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGlu
ZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAt
IGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAg
IH0pOwogI2VuZGlmCkBAIC03ODksNyArNzg5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNGYXN0
KEpJVEJpbmFyeU1hdGhJQwogI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIGF1dG8gaW5s
aW5lRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1
ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgLSBzdGF0aWNf
Y2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZVN0YXJ0KS5leGVjdXRhYmxl
QWRkcmVzcygpKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
aW5saW5lRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRp
b25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgIG1h
dGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgIH0pOwogI2VuZGlmCkBAIC04
MjksNyArODI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPAog
I2lmIEVOQUJMRShNQVRIX0lDX1NUQVRTKQogICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBsYWJlbCgp
OwogICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAg
ICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
c2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxp
bmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsK
KyAgICAgICAgc2l6ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQp
LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQ
YXRoU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMtPm1f
Z2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtODk1LDcgKzg5
NSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDU2xvdyhKSVRCaW5hcnlNYXRoSUMKICNpZiBFTkFC
TEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIHNsb3dQYXRoRW5kID0gbGFiZWwoKTsKICAgICBh
ZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90
IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRo
RW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVy
LmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAg
IHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRh
YmxlQWRkcmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0
KS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRl
ZENvZGVTaXplICs9IHNpemU7CiAgICAgfSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjcsMjAg
KzEyNywyMCBAQCBKSVRDb2RlV2l0aENvZGVSZWY6On5KSVRDb2RlV2l0aENvZGVSZWYoCiB2b2lk
KiBKSVRDb2RlV2l0aENvZGVSZWY6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9m
ZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSArIG9mZnNl
dDsKKyAgICByZXR1cm4gbV9yZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpICsg
b2Zmc2V0OwogfQogCiB2b2lkKiBKSVRDb2RlV2l0aENvZGVSZWY6OmRhdGFBZGRyZXNzQXRPZmZz
ZXQoc2l6ZV90IG9mZnNldCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZik7CiAgICAgQVNT
RVJUKG9mZnNldCA8PSBzaXplKCkpOyAvLyB1c2UgPD0gaW5zdGVhZCBvZiA8IGJlY2F1c2UgaXQg
aXMgdmFsaWQgdG8gYXNrIGZvciBhbiBhZGRyZXNzIGF0IHRoZSBleGNsdXNpdmUgZW5kIG9mIHRo
ZSBjb2RlLgotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5jb2RlKCku
ZGF0YUxvY2F0aW9uKCkpICsgb2Zmc2V0OworICAgIHJldHVybiBtX3JlZi5jb2RlKCkuZGF0YUxv
Y2F0aW9uPGNoYXIqPigpICsgb2Zmc2V0OwogfQogCiB1bnNpZ25lZCBKSVRDb2RlV2l0aENvZGVS
ZWY6Om9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChtX3JlZik7Ci0gICAgaW50cHRyX3QgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4ocG9pbnRlckludG9Db2RlKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fcmVmLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBpbnRwdHJfdCByZXN1bHQgPSByZWludGVy
cHJldF9jYXN0PGludHB0cl90Pihwb2ludGVySW50b0NvZGUpIC0gbV9yZWYuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzPGludHB0cl90PigpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnRwdHJf
dD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCkpID09IHJlc3VsdCk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1w
RGlzYXNzZW1ibHkoUHIKIHsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBmcm9tTG9jYXRpb24gPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoZnJvbSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgdG9Mb2Nh
dGlvbiA9IGxpbmtCdWZmZXIubG9jYXRpb25PZih0byk7Ci0gICAgZGlzYXNzZW1ibGUoZnJvbUxv
Y2F0aW9uLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0b0xvY2F0aW9uLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpIC0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZnJvbUxvY2F0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpLCAiICAgICAgICAiLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlv
biwgdG9Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBmcm9tTG9jYXRp
b24uZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCAiICAgICAgICAiLCBvdXQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENU
b0NvZGVPcmlnaW5NYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDQs
OCArMjA0LDggQEAgUENUb0NvZGVPcmlnaW5NYXA6OlBDVG9Db2RlT3JpZ2luTWFwKFBDVAogICAg
ICAgICAgICAgY29kZU9yaWdpbkNvbXByZXNzb3Iud3JpdGU8dWludHB0cl90PihiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpOwogICAgIH07CiAKLSAg
ICBtX3BjUmFuZ2VTdGFydCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9j
YXRpb25PZihidWlsZGVyLm1fY29kZVJhbmdlcy5maXJzdCgpLnN0YXJ0KS5kYXRhTG9jYXRpb24o
KSk7Ci0gICAgbV9wY1JhbmdlRW5kID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obGlua0J1ZmZl
ci5sb2NhdGlvbk9mKGJ1aWxkZXIubV9jb2RlUmFuZ2VzLmxhc3QoKS5lbmQpLmRhdGFMb2NhdGlv
bigpKTsKKyAgICBtX3BjUmFuZ2VTdGFydCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihidWlsZGVy
Lm1fY29kZVJhbmdlcy5maXJzdCgpLnN0YXJ0KS5kYXRhTG9jYXRpb248dWludHB0cl90PigpOwor
ICAgIG1fcGNSYW5nZUVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihidWlsZGVyLm1fY29kZVJh
bmdlcy5sYXN0KCkuZW5kKS5kYXRhTG9jYXRpb248dWludHB0cl90PigpOwogICAgIG1fcGNSYW5n
ZUVuZCAtPSAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1aWxkZXIubV9jb2Rl
UmFuZ2VzLnNpemUoKTsgaSsrKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDcgQEAgdm9pZCBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKgogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAg
ICAgICAga2V5ID0ga2V5LndpdGhDYWxsVGFyZ2V0KG5ld0NhbGxlZUZ1bmN0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOwotICAgICAgICBuZXdDYWxsZWVGdW5jdGlvbiA9IEZ1bmN0aW9uUHRyKAot
ICAgICAgICAgICAgdGh1bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKGtleSkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOworICAgICAgICBuZXdDYWxsZWVGdW5jdGlvbiA9IEZ1bmN0aW9uUHRy
KHRodW5rcy5nZXRTbG93UGF0aENhbGxUaHVuayhrZXkpLmNvZGUoKSk7CiAgICAgfQogI2Vsc2Ug
Ly8gRU5BQkxFKEZUTF9KSVQpCiAgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lv
biAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDEyLTIwMTQsIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxMyw3ICsyMTMsMTEgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTQogICAgIAogICAgIC8vIE5v
dyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0
byBtYWtpbmcgYSBmYXN0CiAgICAgLy8gY2FsbC4KLSAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGppdC5sb2FkNjQoJmdfbWFzbVNjcmFtYmxlZFB0cktleSwgR1BSSW5mbzo6cmVnVDEpOwor
ICAgIGppdC54b3I2NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOworI2VuZGlmCisK
ICAgICAvLyBNYWtlIGEgdGFpbCBjYWxsLiBUaGlzIHdpbGwgcmV0dXJuIGJhY2sgdG8gSklUIGNv
ZGUuCiAgICAgSlNJbnRlcmZhY2VKSVQ6OkxhYmVsIGNhbGxDb2RlKGppdC5sYWJlbCgpKTsKICAg
ICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUNCk7CkBAIC0xMTU4LDYg
KzExNjIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGJvdW5kVGhpc05vQXJnc0Z1bgogICAg
ICAgICBHUFJJbmZvOjpyZWdUMCk7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGpp
dC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApOwogICAg
IAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaml0LmxvYWQ2NCgmZ19tYXNtU2NyYW1ibGVkUHRy
S2V5LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJ
bmZvOjpyZWdUMCk7CisjZW5kaWYKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJ
bmZvOjpyZWdUMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDApOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDggQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdo
ZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIGRhdGFMb2dGKCIl
cCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisg
ICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNl
KCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAogICAgICAgICAg
ICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygp
LmJlZ2luKCkpLApAQCAtMjE0LDcgKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3RyYWMKICAgICB9IHU7CiAgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsKICAgICBkYXRhTG9nRigKLSAgICAgICAgIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMl
enUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKKyAgICAgICAg
IjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
OiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICBjdXJyZW50VGhyZWFkKCksCiAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVjLAogICAgICAgICBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBA
IC0yMzAsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJh
YwogCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9n
RigiJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOwor
ICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGluIHByb2xvZ3VlIG9mICIsIGN1cnJlbnRUaHJl
YWQoKSwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOwogICAgIGRhdGFMb2coKmV4ZWMtPmNvZGVC
bG9jaygpLCAiXG4iKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpAQCAtMjQwLDcgKzI0Miw3
IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3QKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2lu
ZCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGluICVzIG9mICIsIGNvZGVCbG9jaywgZXhlYywg
Y29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogaW4gJXMgb2YgIiwgY3VycmVu
dFRocmVhZCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQpOwogICAgIGRhdGFMb2coKmNvZGVC
bG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFy
cyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIg
PSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhlY3V0YWJsZSwgY29kZUJsb2NrLT5tX251bVZh
cnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAgLTI3Myw3ICsyNzUsOCBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2ZvCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFj
ZSkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUs
ICVzLCBwYyA9ICVwXG4iLAorICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBi
YyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAogICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLApAQCAtMjkxLDcgKzI5NCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNlKQogewotICAgIGRh
dGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJl
dHVybiBQQyBpcyAlcFxuIiwKKyAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcg
c3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAg
ICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAg
ICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAgLTEzMDUsNiArMTMw
OSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAg
ICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgICAg
IHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgTWFzbVNj
cmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJc05vdFNjcmFtYmxlZChMTEludDo6Z2V0Q29kZVB0
cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMzI4LDYgKzEzMzMsNyBAQCBz
dGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgIGV4ZWNDYWxs
ZWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uaG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihl
eGVjQ2FsbGVlKSk7CiAKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6cGFyYW5vaWRBc3NlcnRJ
c05vdFNjcmFtYmxlZChMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7
CiAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIGV4ZWNDYWxsZWUsIExMSW50
OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKICAgICB9CiAgICAgCkBAIC0x
MzY4LDYgKzEzNzQsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQ
dHI7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OnBhcmFu
b2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAg
ICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7CkBAIC0xNDE4LDYgKzE0MjUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVw
Q2FsbChFeGVjCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYywg
Y2FsbExpbmtJbmZvKTsKICAgICB9CiAKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFz
c2VydElzTm90U2NyYW1ibGVkKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTQ2LDggKzE5NDYsMTAgQEAgbWFjcm8gZG9DYWxsKHNsb3dQYXRoLCBwcmVwYXJl
Q2FsbCkKICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQogICAg
IHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgbW92ZSB0
Mywgc3AKLSAgICBwcmVwYXJlQ2FsbChMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJn
ZXRbdDFdLCB0MiwgdDMsIHQ0KQotICAgIGNhbGxUYXJnZXRGdW5jdGlvbihMTEludENhbGxMaW5r
SW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdKQorICAgIGxvYWRwIF9nX21hc21TY3JhbWJsZWRQ
dHJLZXksIHQyCisgICAgeG9ycCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRb
dDFdLCB0MgorICAgIHByZXBhcmVDYWxsKHQyLCB0MSwgdDMsIHQ0KQorICAgIGNhbGxUYXJnZXRG
dW5jdGlvbih0MikKIAogLm9wQ2FsbFNsb3c6CiAgICAgc2xvd1BhdGhGb3JDYWxsKHNsb3dQYXRo
LCBwcmVwYXJlQ2FsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Ns
b29wLnJiCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9jbG9vcC5yYgkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiwxMiBAQCBjbGFzcyBB
YnNvbHV0ZUFkZHJlc3MKICAgICBlbmQKIGVuZAogCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICAg
IGRlZiBpbnRNZW1SZWYKKyAgICAgICAgIipDQVNUPGludHB0cl90Kj4oJiN7Y0xhYmVsfSkiCisg
ICAgZW5kCitlbmQKKwogCiAjCiAjIExlYSBzdXBwb3J0LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlz
aW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2Ft
cGxlci5oIgpAQCAtNTgsNiArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAg
ICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAgICAg
ICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6aW5pdGlhbGl6ZSgpOwogICAgICAgICBPcHRpb25zOjppbml0aWFsaXplKCk7CiAjaWYg
RU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJhcnJpZXJDb3Vu
dGVyczo6aW5pdGlhbGl6ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsMTIgKzMyNywxMiBA
QCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9jCiAKICAgICAgICAgZm9y
IChhdXRvJiB1bmxpbmtlZCA6IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgY2FsbCA6IHVubGlua2VkKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCog
ZXhlY3V0YWJsZUFkZHJlc3M7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGV4ZWN1dGFibGVBZGRyZXNzOwogICAgICAgICAgICAgICAgIGlmIChtX21vZHVsZUluZm9ybWF0
aW9uLT5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGNhbGwuZnVuY3Rp
b25JbmRleFNwYWNlKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBvcnRzIGNv
dWxkIGhhdmUgYmVlbiBsaW5rZWQgaW4gQjMsIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIHBhdGNo
cG9pbnQuIFRoaXMgY29uZGl0aW9uIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIFJFTEVBU0VfQVNT
RVJULiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDYyCi0gICAg
ICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNzID0gbV93YXNtVG9XYXNtRXhpdFN0dWJz
LmF0KGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
KyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dhc21Ub1dhc21FeGl0
U3R1YnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpLmNvZGUoKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3MgPSBtX3dhc21J
bnRlcm5hbEZ1bmN0aW9ucy5hdChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSAtIG1fbW9kdWxlSW5m
b3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKSktPmVudHJ5cG9pbnQuY29tcGlsYXRpb24t
PmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBleGVjdXRh
YmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25JbmRl
eFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+ZW50
cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpOwogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpyZXBhdGNoTmVhckNhbGwoY2FsbC5jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVs
KGV4ZWN1dGFibGVBZGRyZXNzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgJKHJldmlzaW9uIDIyNTMzMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqY2FsbGVl
KTsKICAgICB9CiAKLSAgICB2b2lkKiBlbnRyeXBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9lbnRy
eXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgfQorICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeXBv
aW50LmNvbXBpbGF0aW9uLT5jb2RlKCk7IH0KIAogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBj
YWxsZWVTYXZlUmVnaXN0ZXJzKCkgeyByZXR1cm4gJm1fZW50cnlwb2ludC5jYWxsZWVTYXZlUmVn
aXN0ZXJzOyB9CiAgICAgSW5kZXhPck5hbWUgaW5kZXhPck5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4T3JOYW1lOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soQ29udGV4dCogY29udGV4dCwgTQogICAgICAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX2NhbGxlZXNbY2FsbGVlSW5kZXhdID0gV1RGTW92ZSh3YXNtRW50cnlw
b2ludENhbGxlZSk7Ci0gICAgICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50c1tj
YWxsZWVJbmRleF0gPSBtX2NhbGxlZXNbY2FsbGVlSW5kZXhdLT5lbnRyeXBvaW50KCk7CisgICAg
ICAgICAgICBtX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50c1tjYWxsZWVJbmRleF0gPSBtX2Nh
bGxlZXNbY2FsbGVlSW5kZXhdLT5lbnRyeXBvaW50KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgbV93YXNtVG9XYXNtRXhpdFN0dWJzID0gbV9wbGFuLT50YWtl
V2FzbVRvV2FzbUV4aXRTdHVicygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcg
QEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgb21nRW50cnlw
b2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShwYXJzZUFuZENvbXBpbGVSZXN1bHQu
dmFsdWUoKS0+ZW50cnlwb2ludC5jYWxsZWVTYXZlUmVnaXN0ZXJzKTsKIAotICAgIHZvaWQqIGVu
dHJ5cG9pbnQ7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnQ7CiAgICAgewog
ICAgICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkgPT0gbV9tb2R1bGUtPmNvZGVCbG9ja0Zv
cihtb2RlKCkpKTsKICAgICAgICAgUmVmPENhbGxlZT4gY2FsbGVlID0gQ2FsbGVlOjpjcmVhdGUo
V1RGTW92ZShvbWdFbnRyeXBvaW50KSwgZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9y
bWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpOwpAQCAtMTE5LDkg
KzExOSw5IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAg
bV9jb2RlQmxvY2stPm1fb3B0aW1pemVkQ2FsbGVlc1ttX2Z1bmN0aW9uSW5kZXhdID0gV1RGTW92
ZShjYWxsZWUpOwogCiAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IHVubGlua2VkQ2FsbHMpIHsK
LSAgICAgICAgICAgIHZvaWQqIGVudHJ5cG9pbnQ7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgZW50cnlwb2ludDsKICAgICAgICAgICAgIGlmIChjYWxsLmZ1bmN0aW9uSW5kZXhT
cGFjZSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQo
KSkKLSAgICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRvV2Fz
bUV4aXRTdHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCk7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludCA9IG1fY29kZUJsb2NrLT5tX3dhc21U
b1dhc21FeGl0U3R1YnNbY2FsbC5mdW5jdGlvbkluZGV4U3BhY2VdLmNvZGUoKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbnRyeXBvaW50ID0gbV9jb2RlQmxvY2stPndhc21F
bnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShjYWxsLmZ1bmN0aW9uSW5kZXhT
cGFjZSkuZW50cnlwb2ludCgpOwogCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBPTUdQbGFuOjp3
b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIHJlc2V0SW5zdHJ1Y3Rpb25DYWNoZU9uQWxsVGhy
ZWFkcygpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIFRoaXMgcHJvYmFibHkgaXNu
J3QgbmVjZXNzYXJ5IGJ1dCBpdCdzIGdvb2QgdG8gYmUgcGFyYW5vaWQuCiAKLSAgICBtX2NvZGVC
bG9jay0+bV93YXNtSW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlvbkluZGV4XSA9IGVu
dHJ5cG9pbnQ7CisgICAgbV9jb2RlQmxvY2stPm1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9pbnRz
W21fZnVuY3Rpb25JbmRleF0gPSBlbnRyeXBvaW50LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAg
ewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKIApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAg
ICAgICAgICAgIGZvciAoYXV0byYgY2FsbCA6IGNhbGxzaXRlcykgewogICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJDb25zaWRlcmluZyBy
ZXBhdGNoaW5nIGNhbGwgYXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxv
Y2F0aW9uKCkpLCAiIHRoYXQgdGFyZ2V0cyAiLCBjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlID09IGZ1bmN0aW9uSW5k
ZXhTcGFjZSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihXYXNtT01HUGxhbklu
dGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAiLCBSYXdQb2ludGVyKGNhbGwu
Y2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBSYXdQb2ludGVyKGVudHJ5cG9p
bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5h
bDo6dmVyYm9zZSwgIlJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihjYWxsLmNhbGxM
b2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdG8gIiwgUmF3UG9pbnRlcihlbnRyeXBvaW50LmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZW50
cnlwb2ludCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDIyNTMzMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjI3LDcgKzYyNyw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwg
QmluZGluZ0YKICAgICBpZiAoVU5MSUtFTFkocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUo
KSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0T2ZN
ZW1vcnkpOwogCi0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FsbCwgRnVuY3Rpb25QdHIodm0t
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cih2bS0+
Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICBDb2RlTG9j
YXRpb25MYWJlbCBjYWxsUmV0dXJuTG9jYXRpb24ocGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJD
YWxsKHNsb3dDYWxsKSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgaG90UGF0aEJlZ2luKHBhdGNo
QnVmZmVyLmxvY2F0aW9uT2YodGFyZ2V0VG9DaGVjaykpOwogICAgIENvZGVMb2NhdGlvbk5lYXJD
YWxsIGhvdFBhdGhPdGhlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbChmYXN0Q2Fs
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
CiAgICAgdm0ud2FzbUNvbnRleHQuc3RvcmUod2FzbUluc3RhbmNlLCB2bS5zb2Z0U3RhY2tMaW1p
dCgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NFUlQo
Jndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKSA9PSB2bS53YXNtQ29udGV4dC5s
b2FkKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2Fz
bUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIEVu
Y29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5qc0Vu
dHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7CiAg
ICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBpbiBhIHJlZ2lzdGVyIG9yIG9uIHRo
ZSBzdGFjayBzaW5jZSBpdCdzIHN0b3JlZCBpbiBWZWN0b3I8SlNWYWx1ZT4uCiAgICAgLy8gVGhp
cyBwcm9iYWJseSBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnksIHNpbmNlIHRoZSBXZWJBc3NlbWJs
eUZ1bmN0aW9uKiBzaG91bGQga2VlcCB0aGUgaW5zdGFuY2UKICAgICAvLyBhbGl2ZS4gQnV0IGl0
J3MgZ29vZCBoeWdpZW5lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCiAj
aW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogICAgIFdhc206Oldhc21FbnRyeXBv
aW50TG9hZExvY2F0aW9uIHdhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV93YXNtRnVuY3Rpb24uY29kZTsgfQogICAgIFdhc206OkNhbGxhYmxlRnVuY3Rpb24gY2Fs
bGFibGVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbUZ1bmN0aW9uOyB9CiAKLSAgICB2
b2lkKiBqc0VudHJ5cG9pbnQoKSB7IHJldHVybiBtX2pzRW50cnlwb2ludDsgfQorICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBqc0VudHJ5cG9pbnQoKSB7IHJldHVybiBtX2pzRW50cnlwb2ludDsg
fQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldhc21FbnRyeXBvaW50TG9hZExvY2F0
aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdlYkFzc2VtYmx5RnVuY3Rpb24sIG1fd2Fz
bUZ1bmN0aW9uKSArIFdhc206OkNhbGxhYmxlRnVuY3Rpb246Om9mZnNldE9mV2FzbUVudHJ5cG9p
bnRMb2FkTG9jYXRpb24oKTsgfQogCkBAIC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8g
SXQncyBzYWZlIHRvIGp1c3QgaG9sZCB0aGUgcmF3IENhbGxhYmxlRnVuY3Rpb24vanNFbnRyeXBv
aW50IGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQogICAgIC8vIHRvIG91ciBJbnN0YW5jZSwg
d2hpY2ggcG9pbnRzIHRvIHRoZSBNb2R1bGUgdGhhdCBleHBvcnRlZCB1cywgd2hpY2gKICAgICAv
LyBlbnN1cmVzIHRoYXQgdGhlIGFjdHVhbCBTaWduYXR1cmUvY29kZSBkb2Vzbid0IGdldCBkZWFs
bG9jYXRlZC4KLSAgICB2b2lkKiBtX2pzRW50cnlwb2ludDsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgbV9qc0VudHJ5cG9pbnQ7CiAgICAgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbiBtX3dhc21G
dW5jdGlvbjsKIH07CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvV1RGL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTExLTMwICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBMZXQncyBzY3JhbWJsZSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgdmFsdWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTc1ODM0
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRy
b2R1Y2UgYSBTY3JhbWJsZWRQdHIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBzY3JhbWJsaW5nLgorCisg
ICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6bWFrZVNjcmFtYmxlZFB0cktleSk6CisgICAgICAgICogd3RmL1NjcmFtYmxl
ZFB0ci5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpTY3JhbWJsZWRQdHIp
OgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQg
Y29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OnBhcmFub2lkQXNzZXJ0SXNOb3RT
Y3JhbWJsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OiBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChX
VEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGVkQml0cyBjb25zdCk6CisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRy
OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpzY3JhbWJsZSk6CisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6ZGVzY3JhbWJsZSk6CisKIDIwMTctMTEtMjkgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdURiAvIGJtYWxsb2M6IGRvbid0IHdyaXRlIHRv
IDB4YmJhZGJlZWYgd2hlbiBBU0FOIGlzIGxvb2tpbmcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0
Niw3IEBACiAJCUUzOEQ2RTI3MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENkUy
NjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovOyB9OwogCQlFNEEw
QUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBX
b3JrUXVldWUuY3BwICovOyB9OwogCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1
ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBMEFEM0MxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCAqLzsgfTsK
KwkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4
REE1REEgLyogU2NyYW1ibGVkUHRyLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICov
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKQEAgLTU5Nyw2ICs1OTgsOCBA
QAogCQlFRjdENkNENTlEODY0MkE4QTBEQTg2QUQgLyogU3RhY2tUcmFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1RyYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbEltcGwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQ
dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFNjcmFt
YmxlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JhbWJs
ZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTg1NDE2RDFGQkUyODVD
MDA4REE1REEgLyogU2NyYW1ibGVkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmFtYmxlZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3
NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgwLDYgKzk4Myw4IEBACiAJCQkJMTQ2
OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywKIAkJCQkxQTM1
MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5
MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCisJCQkJRkU4NTQxNkMxRkJFMjg1QjAwOERB
NURBIC8qIFNjcmFtYmxlZFB0ci5jcHAgKi8sCisJCQkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURB
IC8qIFNjcmFtYmxlZFB0ci5oICovLAogCQkJCTBGNjZCMjg0MURDOTdCQUIwMDRBMUQzRiAvKiBT
ZWNvbmRzLmNwcCAqLywKIAkJCQkwRjY2QjI4NTFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5o
ICovLAogCQkJCUE4QTQ3MzA2MTUxQTgyNUIwMDQxMjNGRiAvKiBTZWdtZW50ZWRWZWN0b3IuaCAq
LywKQEAgLTE0NTksNiArMTQ2NCw3IEBACiAJCQkJMUMxODFDN0YxRDMwNzhEQTAwRjVGQTE2IC8q
IFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMTgxQzk2MUQzMDgw
MEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTNFNEREOTMxRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFNjcmFtYmxlZFB0
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzExRkIxNzFGMEE1NjhCMDAzQzA4REUgLyogVGhy
ZWFkR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEExNTFBODI1QjAwNDEyM0ZG
IC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0RTE1MUE4MjVCMDA0
MTIzRkYgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQCBzZXQoV1RGX0hFQURF
UlMKICAgICBTaGFyZWRUYXNrLmgKICAgICBTYXR1cmF0ZWRBcml0aG1ldGljLmgKICAgICBTY29w
ZWRMYW1iZGEuaAorICAgIFNjcmFtYmxlZFB0ci5oCiAgICAgU2Vjb25kcy5oCiAgICAgU2VnbWVu
dGVkVmVjdG9yLmgKICAgICBTbWFsbFB0clNldC5oCkBAIC0yNTYsNiArMjU3LDcgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgIFJ1bkxvb3AuY3Bw
CiAgICAgU0hBMS5jcHAKKyAgICBTY3JhbWJsZWRQdHIuY3BwCiAgICAgU2Vjb25kcy5jcHAKICAg
ICBTaXhDaGFyYWN0ZXJIYXNoLmNwcAogICAgIFN0YWNrQm91bmRzLmNwcApJbmRleDogU291cmNl
L1dURi93dGYvU2NyYW1ibGVkUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9T
Y3JhbWJsZWRQdHIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxl
ZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTY3JhbWJsZWRQdHIuaCIKKworI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordWludHB0cl90IG1ha2VTY3JhbWJs
ZWRQdHJLZXkoKQoreworICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlcigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAga2V5ID0gKGtleSA8PCAzMikgXiAo
c3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8
PCAzKTsKKyAgICBrZXkgfD0gMHg3OyAvLyBFbnN1cmUgdGhhdCBhbnkgdmFsaWQgcG9pbnRlciBe
IGtleSB3aWxsIG5vdCBiZSAwLgorICAgIGtleSB8PSAoc3RhdGljX2Nhc3Q8dWludHB0cl90Pigx
KSA8PCA2Myk7IC8vIEVuc3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyBkbyBub3QgbWFrZSBh
IHZhbGlkIHBvaW50ZXIuCisjZWxzZQorICAgIGtleSA9IDA7IC8vIFNjcmFtYmxpbmcgaXMgbm90
IHN1cHBvcnRlZCBvbiAzMi1iaXQgeWV0LgorI2VuZGlmCisgICAgcmV0dXJuIGtleTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjZGVmaW5l
IEVOQUJMRV9QQVJBTk9JRF9TQ1JBTUJMRURfUFRSX0FTU0VSVFMgMAorCituYW1lc3BhY2UgV1RG
IHsKKwordXNpbmcgU2NyYW1ibGVkUHRyQml0cyA9IHVpbnRwdHJfdDsKKwordGVtcGxhdGU8dWlu
dHB0cl90JiBrZXk+CitjbGFzcyBTY3JhbWJsZWRQdHIgeworcHVibGljOgorICAgIFNjcmFtYmxl
ZFB0cigpIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KKyAgICBl
eHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCisgICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNj
cmFtYmxlKHB0cikpCisgICAgeworICAgICAgICBBU1NFUlQocHRyICYmIG1fc2NyYW1ibGVkQml0
cyk7CisgICAgfQorCisgICAgU2NyYW1ibGVkUHRyKGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVm
YXVsdDsKKworICAgIGV4cGxpY2l0IFNjcmFtYmxlZFB0cihTY3JhbWJsZWRQdHJCaXRzIHNjcmFt
YmxlZEJpdHMpCisgICAgICAgIDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlZEJpdHMpCisgICAg
eworICAgICAgICBBU1NFUlQobV9zY3JhbWJsZWRCaXRzKTsKKyAgICB9CisKKyNpZiBFTkFCTEUo
UEFSQU5PSURfU0NSQU1CTEVEX1BUUl9BU1NFUlRTKSAmJiBVU0UoSlNWQUxVRTY0KQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KKyAgICBzdGF0aWMgYm9vbCBpc1NjcmFtYmxlZChU
IHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9
IHZvaWQqPgorICAgIHN0YXRpYyB2b2lkIHBhcmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoVCB2YWx1
ZSkgeyBSRUxFQVNFX0FTU0VSVChpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIHN0YXRpYyB2b2lkIHBhcmFub2lkQXNzZXJ0SXNOb3RT
Y3JhbWJsZWQoVCB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUpKTsg
fQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIHBh
cmFub2lkQXNzZXJ0SXNTY3JhbWJsZWQoVCkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9
IHZvaWQqPiBzdGF0aWMgdm9pZCBwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVkKFQpIHsgfQor
I2VuZGlmCisgICAgdm9pZCBwYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkKCkgY29uc3QgeyBwYXJh
bm9pZEFzc2VydElzU2NyYW1ibGVkKG1fc2NyYW1ibGVkQml0cyk7IH0KKyAgICB2b2lkIHBhcmFu
b2lkQXNzZXJ0SXNOb3RTY3JhbWJsZWQoKSBjb25zdCB7IHBhcmFub2lkQXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZv
aWQqPgorICAgIFQgZGVzY3JhbWJsZSgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4obV9z
Y3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4K
KyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1i
bGU8VD4obV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJs
ZWRCaXRzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JhbWJsZWRCaXRzOyB9CisKKyAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0KKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxlZEJpdHM7IH0KKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJsZWRCaXRzOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6
dHlwZT4KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGRlc2NyYW1ibGU8UHRyVHlwZT4oKSA9PSBiOworICAgIH0KKworcHJpdmF0ZToK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShUIHB0cikgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFQgZGVzY3JhbWJsZShTY3Jh
bWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzY3Jh
bWJsZWRCaXRzIF4ga2V5KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVCBwdHIpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUIGRlc2NyYW1ibGUoU2Ny
YW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oc2Ny
YW1ibGVkQml0cyk7IH0KKyNlbmRpZgorCisgICAgU2NyYW1ibGVkUHRyQml0cyBtX3NjcmFtYmxl
ZEJpdHMgeyAwIH07Cit9OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHIoKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgpOworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Cit1c2luZyBXVEY6OlNjcmFt
YmxlZFB0ckJpdHM7Cit1c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7CisK
</data>
<flag name="review"
          id="347186"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328009</attachid>
            <date>2017-11-30 13:02:46 -0800</date>
            <delta_ts>2017-11-30 13:29:55 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>87783</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8s
IFNhYW0gQmFyYXRpLCBhbmQgSkYgQmFzdGllbi4KKworICAgICAgICAxLiBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbm93IHN0b3JlcyBhIFNjcmFtYmxlZFB0ciBpbnN0ZWFkIG9mIGEgdm9pZCouCisK
KyAgICAgICAgMi4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJ3MgZXhlY3V0YWJsZUFkZHJlc3MoKSBh
bmQgZGF0YUxvY2F0aW9uKCkgbm93IHRha2UgYQorICAgICAgICAgICB0ZW1wbGF0ZSBhcmd1bWVu
dCB0eXBlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNhc3QgdGhlIHJlc3VsdC4gIFRoaXMgbWFrZXMg
dGhlCisgICAgICAgICAgIGNsaWVudCBjb2RlIHRoYXQgdXNlcyB0aGVzZSBmdW5jdGlvbnMgYSBs
aXR0bGUgbGVzcyB2ZXJib3NlLgorCisgICAgICAgIDMuIENoYW5nZSB0aGUgY29kZSBiYXNlIGlu
IGdlbmVyYWwgdG8gbWluaW1pemUgcGFzc2luZyB2b2lkKiBjb2RlIHBvaW50ZXJzIGFyb3VuZC4K
KyAgICAgICAgICAgV2Ugbm93IHBhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzIG11Y2ggYXMg
cG9zc2libGUsIGFuZCBkZXNjcmFtYmxlIGl0IG9ubHkKKyAgICAgICAgICAgYXQgdGhlIGxhc3Qg
bW9tZW50IHdoZW4gd2UgbmVlZCB0aGUgdW5kZXJseWluZyBjb2RlIHBvaW50ZXIuCisKKyAgICAg
ICAgNC4gQWRkZWQgc29tZSBNYXNtU2NyYW1ibGVkUHRyIHBhcmFub2lkIGFzc2VydHMgdGhhdCBh
cmUgZGlzYWJsZWQgKG5vdCBidWlsdCkgYnkKKyAgICAgICAgICAgZGVmYXVsdC4gIEknbSBsZWF2
aW5nIHRoZW0gaW4gYmVjYXVzZSB0aGV5IGFyZSBpbnN0cnVtZW50YWwgaW4gZmluZGluZyBidWdz
CisgICAgICAgICAgIHdoZXJlIG5vdCBhbGwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcyB3
ZXJlIG5vdCBzY3JhbWJsZWQgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgIEkgZXhwZWN0IHRoZW0g
dG8gYmUgdXNlZnVsIGluIHRoZSBuZWFyIGZ1dHVyZSBhcyB3ZSBhZGQgbW9yZSBzY3JhbWJsaW5n
LgorCisgICAgICAgIDUuIEFsc28gZGlzYWJsZSB0aGUgY2FzdGluZyBvcGVyYXRvciBvbiBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgKGV4Y2VwdCBmb3IKKyAgICAgICAgICAgZXhwbGljaXQgY2FzdHMg
dG8gYSBib29sZWFuKS4gIFRoaXMgZW5zdXJlcyB0aGF0IGNsaWVudHMgd2lsbCBhbHdheXMgZXhw
bGljaXRseQorICAgICAgICAgICB1c2Ugc2NyYW1ibGVkQml0cygpIG9yIGV4ZWN1dGFibGVBZGRy
ZXNzKCkgdG8gZ2V0IGEgdmFsdWUgYmFzZWQgb24gd2hpY2ggdmFsdWUKKyAgICAgICAgICAgdGhl
eSBhY3R1YWxseSBuZWVkLgorCisgICAgICAgIDUuIEFkZGVkIGN1cnJlbnRUaHJlYWQoKSBpZCB0
byB0aGUgbG9nZ2luZyBpbiBMTEludFNsb3dQYXRoIHRyYWNlIGZ1bmN0aW9ucy4KKyAgICAgICAg
ICAgVGhpcyB3YXMgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyB0ZXN0cyB0aGF0IHJhbiBtdWx0aXBs
ZSBWTXMgY29uY3VycmVudGx5IG9uCisgICAgICAgICAgIGRpZmZlcmVudCB0aHJlYWRzLgorCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBpcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIDY0
LWJpdCBidWlsZHMgKGluY2x1ZGluZyB0aGUKKyAgICAgICAgQ0xvb3ApLiAgSXQgaXMgbm90IHll
dCBzdXBwb3J0ZWQgaW4gMzItYml0IGFuZCBXaW5kb3dzIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAg
ICAgY3VycmVudGx5IGhhdmUgYSB3YXkgdG8gcmVhZCBhIGdsb2JhbCB2YXJpYWJsZSBmcm9tIHRo
ZWlyIExMSW50IGNvZGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjps
aW5rUG9pbnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Omluc3RydWN0aW9uQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmxhYmVsQXRPZmZzZXQpOgorICAgICAgICAoSlND
OjpDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVM
b2NhdGlvbkNvbW1vbjo6Y2FsbEF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9u
Q29tbW9uOjpuZWFyQ2FsbEF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29t
bW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNv
bW1vbjo6ZGF0YUxhYmVsMzJBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNv
bW1vbjo6ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpw
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpGdW5j
dGlvblB0cjo6RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6dmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6ZXhlY3V0YWJsZUFkZHJlc3MgY29u
c3QpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjpSZXR1cm5BZGRyZXNzUHRyKToK
KyAgICAgICAgKEpTQzo6UmV0dXJuQWRkcmVzc1B0cjo6dmFsdWUgY29uc3QpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpzY3JhbWJsZWRQdHIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OiBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpoYXNoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjplbXB0eVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmV4ZWN1dGFibGVBZGRyZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpkYXRhTG9jYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAqIGIz
L3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0SW50ZXJwcmV0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2Vt
Ymxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9EaXNhc3Nl
bWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlzYXNz
ZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNz
ZW1ibGVXaXRoVURpczg2KToKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEpJVENvZGUuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQpOgorICAg
ICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQv
SklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ0Zhc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKiBqaXQvSklUQ29k
ZS5jcHA6CisgICAgICAgIChKU0M6OkpJVENvZGVXaXRoQ29kZVJlZjo6ZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVENvZGVXaXRoQ29kZVJlZjo6ZGF0YUFkZHJl
c3NBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVENvZGVXaXRoQ29kZVJlZjo6b2Zmc2V0T2Yp
OgorICAgICAgICAqIGppdC9KSVREaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpKSVRE
aXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BDVG9Db2RlT3Jp
Z2luTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6UENUb0NvZGVPcmlnaW5NYXA6OlBDVG9Db2RlT3Jp
Z2luTWFwKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6
CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVua0Zvcik6CisgICAgICAgIChKU0M6OmJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxM
SW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS9jbG9vcC5yYjoKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3YXNt
L1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUp
OgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpDYWxs
ZWU6OmVudHJ5cG9pbnQgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbUNvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6
CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
OjpjcmVhdGUpOgorCiAyMDE3LTExLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyNTMxNCk6IFtMaW51eF0gTW9yZSB0aGFu
IDIwMDAganNjIHRlc3RzIGFyZSBmYWlsaW5nIGFmdGVyIHIyMjUzMTQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODMwLDcgKzgz
MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYSwgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyJiBiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PihiLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KGEuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBiLmV4ZWN1dGFibGVB
ZGRyZXNzPHB0cmRpZmZfdD4oKSAtIGEuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9hc3NlbWJsZXIu
ZGVidWdPZmZzZXQoKTsgfQpAQCAtODUyLDYgKzg1MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFz
c2VtYmxlclR5cGU6OmxpbmtQb2ludGVyKGNvZGUsIGxhYmVsLCB2YWx1ZSk7CiAgICAgfQogCisg
ICAgc3RhdGljIHZvaWQgbGlua1BvaW50ZXIodm9pZCogY29kZSwgQXNzZW1ibGVyTGFiZWwgbGFi
ZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFzc2VtYmxl
clR5cGU6OmxpbmtQb2ludGVyKGNvZGUsIGxhYmVsLCB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygp
KTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCogZ2V0TGlua2VyQWRkcmVzcyh2b2lkKiBjb2Rl
LCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKICAgICB7CiAgICAgICAgIHJldHVybiBBc3NlbWJsZXJU
eXBlOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUsIGxhYmVsKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkocmV2aXNpb24gMjI1MzMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjQsNTUgKzE2NCw1NSBAQCBwdWJsaWM6CiBpbmxpbmUgQ29kZUxvY2F0aW9u
SW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVjdGlvbkF0T2Zmc2V0KGludCBv
ZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0
dXJuIENvZGVMb2NhdGlvbkluc3RydWN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFM
b2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkluc3RydWN0aW9u
KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRp
b25MYWJlbCBDb2RlTG9jYXRpb25Db21tb246OmxhYmVsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsK
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxv
Y2F0aW9uTGFiZWwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zm
c2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFiZWwoZGF0YUxvY2F0aW9uPGNoYXIqPigp
ICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkp1bXAgQ29kZUxvY2F0aW9uQ29t
bW9uOjpqdW1wQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9P
RkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcChyZWludGVycHJldF9j
YXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9j
YXRpb25KdW1wKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBD
b2RlTG9jYXRpb25DYWxsIENvZGVMb2NhdGlvbkNvbW1vbjo6Y2FsbEF0T2Zmc2V0KGludCBvZmZz
ZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0dXJu
IENvZGVMb2NhdGlvbkNhbGwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkp
ICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChkYXRhTG9jYXRpb248Y2hh
cio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0aW9uTmVhckNhbGwgQ29kZUxv
Y2F0aW9uQ29tbW9uOjpuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIE5lYXJDYWxsTW9kZSBj
YWxsTW9kZSkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxv
Y2F0aW9uKCkpICsgb2Zmc2V0LCBjYWxsTW9kZSk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbk5l
YXJDYWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCwgY2FsbE1vZGUpOwogfQogCiBp
bmxpbmUgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIENvZGVMb2NhdGlvbkNvbW1vbjo6ZGF0YUxh
YmVsUHRyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0cihkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwog
fQogCiBpbmxpbmUgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgQ29kZUxvY2F0aW9uQ29tbW9uOjpk
YXRhTGFiZWwzMkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVf
T0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJu
IENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7
CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0IENvZGVMb2NhdGlvbkNv
bW1vbjo6ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJU
X1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFM
YWJlbENvbXBhY3QocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zm
c2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChkYXRhTG9jYXRp
b248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGli
bGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9m
ZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRh
dGFMb2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNvbnZlcnRp
YmxlTG9hZChkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBM
aW5rQnVmZmVyOjpDb2RlUmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgdmFfZW5kKGFyZ0xp
c3QpOwogICAgIG91dC5wcmludGYoIjpcbiIpOwogCi0gICAgb3V0LnByaW50ZigiICAgIENvZGUg
YXQgWyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRp
Y19jYXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0
LnNpemUoKSk7CisgICAgb3V0LnByaW50ZigiICAgIENvZGUgYXQgWyVwLCAlcCk6XG4iLCByZXN1
bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3M8Y2hhcio+KCkgKyByZXN1bHQuc2l6ZSgpKTsKICAgICAKICAgICBDU3RyaW5nIGhlYWRl
ciA9IG91dC50b0NTdHJpbmcoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTItMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsaW5rKENh
bGwgY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCiAgICAgewotICAgICAgICBsaW5rKGNh
bGwsIEZ1bmN0aW9uUHRyKGxhYmVsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgbGlu
ayhjYWxsLCBGdW5jdGlvblB0cihsYWJlbCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGxpbmso
SnVtcCBqdW1wLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKQEAgLTE1NCw3ICsxNTQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwYXRjaChEYXRhTGFiZWxQdHIgbGFiZWwsIENvZGVMb2NhdGlvbkxh
YmVsIHZhbHVlKQogICAgIHsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgdGFyZ2V0ID0gYXBwbHlP
ZmZzZXQobGFiZWwubV9sYWJlbCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpsaW5rUG9pbnRl
cihjb2RlKCksIHRhcmdldCwgdmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpsaW5rUG9pbnRlcihjb2RlKCksIHRhcmdldCwgdmFsdWUpOwogICAgIH0K
IAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgdG8gb2J0YWluIGhhbmRsZXMgdG8gYWxs
b3cgdGhlIGNvZGUgdG8gYmUgcmVsaW5rZWQgLyByZXBhdGNoZWQgbGF0ZXIuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOSAr
MjksMjAgQEAKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCit1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5OworCit2b2lkIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6aW5pdGlhbGl6ZSgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxl
ZFB0cktleSgpOworICAgIH0pOworfQorCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIoT3Bjb2RlSUQgY29kZUlkKQogewogICAg
IHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIoY29k
ZUlkKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIC8vIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIgY2hlY2tzIHRoYXQgcHRyIGlzIGEg
bm9uLW51bGwgcG9pbnRlciwgYW5kIHRoYXQgaXQgaXMgYSB2YWxpZApAQCAtNTAsNiArNTEsMTIg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRy
X3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5OworCit1c2luZyBNYXNtU2NyYW1ibGVkUHRyID0gU2Ny
YW1ibGVkUHRyPGdfbWFzbVNjcmFtYmxlZFB0cktleT47CisKK2NsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjsKKwogZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogCiAvLyBGdW5jdGlvblB0cjoK
QEAgLTU4LDE1ICs2NSwxMyBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7CiAvLyAocGFydGlj
dWxhcmx5LCB0aGUgc3R1YiBmdW5jdGlvbnMpLgogY2xhc3MgRnVuY3Rpb25QdHIgewogcHVibGlj
OgotICAgIEZ1bmN0aW9uUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAgewotICAgIH0K
KyAgICBGdW5jdGlvblB0cigpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgcmV0dXJuVHlw
ZT4KICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3Zh
bHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2Vy
dElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtNzQsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxKSkKICAgICAgICAgOiBtX3ZhbHVl
KCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElz
Tm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KG1fdmFsdWUpOwogICAgIH0KIApAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDog
bV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTg4LDYgKzk1LDcgQEAgcHVibGljOgogICAg
IEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtOTUsNiArMTAz
LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBl
MSwgYXJnVHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9p
ZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5
cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewor
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTEwOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgqdmFs
dWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0LCBhcmdUeXBlNSwgYXJn
VHlwZTYpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogLy8gTVNWQyBkb2Vz
bid0IHNlZW0gdG8gdHJlYXQgZnVuY3Rpb25zIHdpdGggZGlmZmVyZW50IGNhbGxpbmcgY29udmVu
dGlvbnMgYXMKQEAgLTExOSw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0
dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQo
bV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAg
ICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVy
blR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCkBAIC0xMzMsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRy
KHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09E
RV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTQwLDYgKzE1NCw3IEBAIHB1YmxpYzoK
ICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChDREVDTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdU
eXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsK
KyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7
CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBA
IC0xNDcsNiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENE
RUNMICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJ
RF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogI2VuZGlmCkBAIC0xNTcsNiArMTczLDcg
QEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKEZBU1RDQUxMICp2YWx1ZSko
KSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21T
Y3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTY0LDYgKzE4MSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAg
ICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTcx
LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FM
TCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCop
dmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFt
YmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAKQEAgLTE3OCw2ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIo
cmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUz
KSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21T
Y3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDYgKzIwNSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0KSkKICAgICAgICAgOiBtX3Zh
bHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2Vy
dElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwogICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGlj
OgogICAgICAgICAvLyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBk
aWZmZXJlbnQgY29uc3RuZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lk
Kil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIAotICAgIHZvaWQqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQotICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQorICAgIGV4cGxpY2l0IEZ1bmN0aW9uUHRyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cik7CiAKKyAg
ICB2b2lkKiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCogbV92YWx1ZTsK
KyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0dXJuQWRkcmVzc1B0
cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlzIHRoZSBzb3VyY2Ug
b2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0ciB7CiBwdWJsaWM6
Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgwKQotICAgIHsKLSAg
ICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGljaXQgUmV0dXJuQWRk
cmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgIHsKKyAg
ICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAg
ZXhwbGljaXQgUmV0dXJuQWRkcmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAg
OiBtX3ZhbHVlKGZ1bmN0aW9uLnZhbHVlKCkpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVk
UHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogICAgIHsKQEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIHZvaWQqIG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51
bGxwdHIgfTsKIH07CiAKIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgy
LDcgQEAgcHJpdmF0ZToKIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0
byB3cmFwIHBvaW50ZXJzIHRvIEpJVCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciB7CiBwdWJsaWM6Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAg
ICAgOiBtX3ZhbHVlKDApCi0gICAgewotICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSB7IH0KIAogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkK
ICNpZiBDUFUoQVJNX1RIVU1CMikKQEAgLTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgOiBtX3ZhbHVlKHZhbHVlKQogI2VuZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHZvaWQqIHZhbHVl
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUih2YWx1ZSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQ7
Ci0gICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHJlc3VsdC5tX3ZhbHVl
ID0gTWFzbVNjcmFtYmxlZFB0cih2YWx1ZSk7CisgICAgICAgIHJlc3VsdC5tX3ZhbHVlLmFzc2Vy
dElzU2NyYW1ibGVkKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yNzcs
MjQgKzMxMiw2NCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KFJldHVybkFkZHJlc3NQdHIgcmEpCiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAg
IHsKKyAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOworICAgICAgICBtX3ZhbHVlLmFzc2VydElz
U2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAg
VCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzU2NyYW1ibGVkKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFt
YmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjaWYgQ1BVKEFSTV9USFVNQjIp
CiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1vdmUgdGhl
IGRlY29yYXRpb24uCi0gICAgdm9pZCogZGF0YUxvY2F0aW9uKCkgY29uc3QgeyBBU1NFUlRfVkFM
SURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV92YWx1ZSkgLSAxOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIFQg
ZGF0YUxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3Jh
bWJsZWQoKTsKKyAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFtYmxl
PGNoYXIqPigpIC0gMSA6IG51bGxwdHIpOworICAgIH0KICNlbHNlCi0gICAgdm9pZCogZGF0YUxv
Y2F0aW9uKCkgY29uc3QgeyBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOyByZXR1
cm4gbV92YWx1ZTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KKyAgICBUIGRh
dGFMb2NhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1i
bGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2Fz
dDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAorICAg
IHsKKyNpZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1w
dHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAgICAgICAgbV92YWx1ZS5hc3Nl
cnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCisgICAgICAgIHJldHVybiAhbV92YWx1ZTsKKyAgICB9
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEoISp0aGlzKTsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IG90aGVyKSBjb25zdAogICAgIHsKKyNpZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQor
ICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAg
ICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBpZiAoIW90aGVyLmlz
RW1wdHlWYWx1ZSgpICYmICFvdGhlci5pc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAgICAgICAgb3Ro
ZXIubV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBt
X3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCisgICAgLy8gRGlzYWxsb3cgYW55IGNh
c3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGll
bnQKKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRh
YmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZhbHVlPj4KKyAg
ICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CisKICAgICB2b2lkIGR1bXBXaXRoTmFtZShjb25zdCBj
aGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CkBAIC0zMDQsMjQgKzM3OSwyNCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDog
bV92YWx1ZShlbXB0eVZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoRGVsZXRlZFZhbHVlVGFnKQogICAgICAgICA6IG1fdmFsdWUo
ZGVsZXRlZFZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAKICAgICBib29sIGlz
RW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlWYWx1ZSgpOyB9CiAg
ICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZGVsZXRl
ZFZhbHVlKCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gUHRy
SGFzaDx2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dCB7IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2gobV92YWx1ZS5zY3JhbWJsZWRCaXRz
KCkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PigxKSk7IH0KLSAgICBzdGF0aWMgdm9pZCogZGVsZXRlZFZhbHVl
KCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikp
OyB9Ci0gICAgCi0gICAgdm9pZCogbV92YWx1ZTsKKyAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0
ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFtYmxlZFB0cigxKTsgfQorICAgIHN0YXRp
YyBNYXNtU2NyYW1ibGVkUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3JhbWJsZWRQ
dHIoMik7IH0KKworICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKIH07CiAKIHN0cnVjdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAgLTQwNSw2ICs0ODAsMTMgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVjdXRhYmxlTWVtb3J5Owog
fTsKIAoraW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgcHRyKQorICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkKK3sKKyAgICBN
YXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0
cnVlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihpbmRleCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzKys7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxseSwgd2UgZG9u
J3QgaGF2ZSB0byBjbG9iYmVyIG1hY3JvIHJlZ2lzdGVycyBvbiBYODZfNjQuIFRoaXMgaXMgcHJv
YmFibHkKICAgICAgICAgICAgICAgICAvLyBPSyB0aG91Z2guCiAgICAgICAgICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpA
QCAtNTA1LDEwICs1MDUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGluZGV4ID0gcGFyYW1zWzBdLmdwcigpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNo
KDApOwotICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBH
UFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21T
Y3JhbWJsZWRQdHJLZXkpLCBkZXNjcmFtYmxlcktleSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRj
aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcChDQ2FsbEhlbHBlcnM6OkJhc2VJ
bmRleChzY3JhdGNoLCBpbmRleCwgQ0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgsIENDYWxsSGVscGVyczo6dGltZXNQ
dHIoKSksIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LnhvcjY0KGRlc2Ny
YW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKHNj
cmF0Y2gpOworCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1
YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9yZSBlaXRoZXIgbGF0ZSBwYXRocyBvcgogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbGluayB0YXNrcyBydW4uCiAgICAgICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVscGVyczo6TGFiZWw+PiBsYWJlbHMgPSBwYXJhbXMu
c3VjY2Vzc29yTGFiZWxzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAko
cmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDA3LDcgKzEzMDA3LDcgQEAgdm9pZCB0ZXN0SW50ZXJwcmV0
ZXIoKQogICAgIHBvbHlKdW1wLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKICAgICBwb2x5SnVt
cC0+YXBwZW5kU29tZVJlZ2lzdGVyKG9wY29kZSk7CiAgICAgcG9seUp1bXAtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBwb2x5SnVtcC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzKys7CisgICAgcG9seUp1bXAtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9
IDI7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soYWRkVG9E
YXRhUG9pbnRlcikpOwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJs
b2NrKGFkZFRvQ29kZVBvaW50ZXIpKTsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZy
ZXF1ZW50ZWRCbG9jayhhZGRUb0RhdGEpKTsKQEAgLTEzMDI5LDkgKzEzMDI5LDE1IEBAIHZvaWQg
dGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cioganVt
cFRhYmxlID0gYml0d2lzZV9jYXN0PE1hY3JvQXNzZW1ibGVyQ29kZVB0cio+KAogICAgICAgICAg
ICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6ZW9mKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsK
LSAgICAgICAgICAgIGppdC5qdW1wKENDYWxsSGVscGVyczo6QmFzZUluZGV4KHBhcmFtcy5ncFNj
cmF0Y2goMCksIHBhcmFtc1swXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSk7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRj
aCgwKTsKKyAgICAgICAgICAgIEdQUlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNjcmF0
Y2goMSk7CisKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5KTsK
KyAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwg
cGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKKyAg
ICAgICAgICAgIGppdC54b3I2NChkZXNjcmFtYmxlcktleSwgc2NyYXRjaCk7CisgICAgICAgICAg
ICBqaXQuanVtcChzY3JhdGNoKTsKKwogICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAg
ICAgICAgICAgICAgIFsmLCBqdW1wVGFibGUsIGxhYmVsc10gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFiZWxzLnNpemUo
KTsgaS0tOykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjgsOCArMTY4LDggQEAg
dm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludAogICAgIENvZGVMb2NhdGlv
bkxhYmVsIHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByZXZpb3VzTGFiZWwpOwogICAg
IENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjdXJyZW50TGFi
ZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7Ci0gICAgQVNTRVJUKGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KGVuZC5leGVjdXRhYmxlQWRkcmVzcygpKSA+PSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihzdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgZGlzYXNzZW1i
bGUoc3RhcnQsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVuZC5leGVjdXRhYmxlQWRkcmVzcygp
KSAtIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBw
cmVmaXhCdWZmZXIuZ2V0KCksIG91dCk7CisgICAgQVNTRVJUKGVuZC5leGVjdXRhYmxlQWRkcmVz
czx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpKTsK
KyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmdl
dCgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI1MzMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsK
ICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwotICAgICAgICBsaW5r
QnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHVi
KGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtKCkt
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgIGlu
Zm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtC
dWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93Q2FsbCkpLAogICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC50YXJnZXRUb0No
ZWNrKSksCkBAIC01MjUsOSArNTI1LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0
aW9uKCkKICAgICAKICAgICBtX2ppdENvZGUtPnNocmlua1RvRml0KCk7CiAgICAgY29kZUJsb2Nr
KCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7Ci0gICAgCi0gICAgbGlua0J1
ZmZlci0+bGluayhtX2NhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigodm0oKS0+Z2V0Q1RJU3R1
Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAg
ICAKKworICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIo
dm0oKS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpKTsKKwogICAgIGRp
c2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAyOSw4ICsyMDI5LDggQEAgY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25GaW5kU3dpdGNoSQogICAgIGRvdWJsZSBhc0RvdWJsZSA9IHZhbHVlLmFzRG91Ymxl
KCk7CiAgICAgaW50MzJfdCBhc0ludDMyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUp
OwogICAgIGlmIChhc0RvdWJsZSA9PSBhc0ludDMyKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcio+KHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4odGFibGUuY3RpRGVmYXVsdC5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIp
LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOworICAgIHJldHVybiB0YWJsZS5jdGlEZWZhdWx0
LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCB0YWJsZUluZGV4LCBK
U1N0cmluZyogc3RyaW5nKQpAQCAtMjAzOCw3ICsyMDM4LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNoYXIqPihleGVjLT5jb2RlQmxvY2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRh
YmxlSW5kZXgpLmN0aUZvclZhbHVlKHN0cmluZy0+dmFsdWUoZXhlYykuaW1wbCgpKS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICByZXR1cm4gZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmlt
cGwoKSkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiB9CiAKIGludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQoRXhlY1N0YXRlKiBl
eGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAy
MjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTc3MCw3ICs5NzcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCgKLSAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoKQorICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0
Y2gsIEdQUlJlZyBkZXNjcmFtYmxlcktleVNjcmF0Y2gpCiB7CiAgICAgU2ltcGxlSnVtcFRhYmxl
JiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNo
VGFibGVJbmRleCk7CiAgICAgdGFibGUuZW5zdXJlQ1RJVGFibGUoKTsKQEAgLTk3NzgsOCArOTc3
OCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKICAgICBhZGRC
cmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWws
IHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAogICAgICAgICBkYXRhLT5m
YWxsVGhyb3VnaC5ibG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyYW1ibGVyS2V5U2NyYXRj
aCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1i
bGVyS2V5U2NyYXRjaCk7CisjZW5kaWYKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIodGFi
bGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBKSVRDb21waWxlcjo6dGltZXNQdHIo
KSksIHNjcmF0Y2gpOworICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQueG9yNjQo
ZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsKKyNlbmRpZgogICAgIG1faml0Lmp1bXAo
c2NyYXRjaCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKIH0KQEAgLTk3OTAs
NyArOTc5OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSoKICAg
ICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwot
ICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwgdGVtcC5ncHIoKSk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICAgICAgZW1pdFN3aXRjaElu
dEp1bXAoZGF0YSwgdmFsdWUuZ3ByKCksIHRlbXAuZ3ByKCksIHRlbXAyLmdwcigpKTsKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk3OTgsMTUgKzk4
MDcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9
IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gdGVtcC5ncHIo
KTsKLSAgICAgICAgCisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHRlbXAyLmdwcigpOworCiAg
ICAgICAgIHZhbHVlLnVzZSgpOwogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RJbnQgPSBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpCZWxvdywgdmFsdWVSZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3Mu
Z3ByKCksIHNjcmF0Y2gpOworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJl
Z3MuZ3ByKCksIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAgICAgbm90SW50LmxpbmsoJm1faml0
KTsKICAgICAgICAgYWRkQnJhbmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KApA
QCAtOTgxOSw3ICs5ODMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShO
b2RlKgogI2Vsc2UKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50ID0gbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlUmVncy50YWdH
UFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIGVtaXRTd2l0
Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gpOworICAgICAg
ICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNo
LCBzY3JhdGNoMik7CiAgICAgICAgIG5vdEludC5saW5rKCZtX2ppdCk7CiAgICAgICAgIGFkZEJy
YW5jaCgKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKApAQCAtOTg0Myw3ICs5ODU0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoCi0gICAgU3dpdGNoRGF0YSogZGF0
YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBH
UFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpCiB7CiAgICAgYWRk
QnJhbmNoKAogICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAgLTk4NzQsNyArOTg4NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW4KICAgICBtX2ppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZSksIHNjcmF0Y2gpOwogICAgIAogICAgIHJlYWR5
LmxpbmsoJm1faml0KTsKLSAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCBzY3JhdGNoLCB2YWx1
ZSk7CisgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgc2NyYXRjaCwgdmFsdWUsIHNjcmF0Y2gy
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZSogbm9kZSwg
U3dpdGNoRGF0YSogZGF0YSkKQEAgLTk4ODMsMTQgKzk4OTQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogICAgIGNhc2UgU3RyaW5nVXNlOiB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAyKHRoaXMpOworCiAgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgCisgICAgICAgIEdQUlJl
ZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCiAgICAgICAgIG9wMS51c2UoKTsKIAogICAgICAg
ICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG9wMUdQUik7Ci0gICAgICAgIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFHUFIsIHRlbXBHUFIpOworICAgICAgICBlbWl0
U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxR1BSLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTk4OTgsMTcgKzk5MTEsMTkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
Mih0aGlzKTsKKwogICAgICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgCisgICAg
ICAgIEdQUlJlZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCiAgICAgICAgIG9wMS51c2UoKTsK
ICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxUmVn
cyksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5j
aChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFSZWdzLnBheWxvYWRHUFIoKSksIGRhdGEtPmZh
bGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5n
SnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CisgICAgICAgIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUiwg
dGVtcDJHUFIpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4NTgsOSArMjg1OCw5IEBAIHB1YmxpYzoKICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0
OwogICAgIH07CiAgICAgCi0gICAgdm9pZCBlbWl0U3dpdGNoSW50SnVtcChTd2l0Y2hEYXRhKiwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCk7CisgICAgdm9pZCBlbWl0U3dpdGNoSW50SnVt
cChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNjcmF0
Y2gyKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hJbW0oTm9kZSosIFN3aXRjaERhdGEqKTsKLSAgICB2
b2lkIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCk7CisgICAgdm9pZCBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoU3dpdGNo
RGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBzY3JhdGNoMik7CiAg
ICAgdm9pZCBlbWl0U3dpdGNoQ2hhcihOb2RlKiwgU3dpdGNoRGF0YSopOwogICAgIHZvaWQgZW1p
dEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UoCiAgICAgICAgIFN3aXRjaERhdGEqLCBjb25zdCBW
ZWN0b3I8U3RyaW5nU3dpdGNoQ2FzZT4mLCB1bnNpZ25lZCBudW1DaGVja2VkLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNw
cAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgdm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZAogICAgIGlmICh0cnlU
b0Rpc2Fzc2VtYmxlKGNvZGVQdHIsIHNpemUsIHByZWZpeCwgb3V0KSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3Ig
cmFuZ2UgJXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0
YXRpY19jYXN0PGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgc2l6ZSk7Cisg
ICAgb3V0LnByaW50ZigiJXNkaXNhc3NlbWJseSBub3QgYXZhaWxhYmxlIGZvciByYW5nZSAlcC4u
LiVwXG4iLCBwcmVmaXgsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHNpemUpOwogfQogCiBuYW1lc3BhY2UgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2
RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDEzICszNywxMyBAQCBib29sIHRyeVRvRGlzYXNzZW1ibGVXaXRoVURpczg2
KGNvbnN0IE1hCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNz
ZW1ibGVyKTsKLSAgICB1ZF9zZXRfaW5wdXRfYnVmZmVyKCZkaXNhc3NlbWJsZXIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBzaXplKTsK
KyAgICB1ZF9zZXRfaW5wdXRfYnVmZmVyKCZkaXNhc3NlbWJsZXIsIGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3M8dW5zaWduZWQgY2hhcio+KCksIHNpemUpOwogI2lmIENQVShYODZfNjQpCiAgICAg
dWRfc2V0X21vZGUoJmRpc2Fzc2VtYmxlciwgNjQpOwogI2Vsc2UKICAgICB1ZF9zZXRfbW9kZSgm
ZGlzYXNzZW1ibGVyLCAzMik7CiAjZW5kaWYKLSAgICB1ZF9zZXRfcGMoJmRpc2Fzc2VtYmxlciwg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgdWRfc2V0X3BjKCZkaXNhc3NlbWJsZXIsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3M8dWlu
dHB0cl90PigpKTsKICAgICB1ZF9zZXRfc3ludGF4KCZkaXNhc3NlbWJsZXIsIFVEX1NZTl9BVFQp
OwogICAgIAogICAgIHVpbnQ2NF90IGN1cnJlbnRQQyA9IGRpc2Fzc2VtYmxlci5wYzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjI1MzMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUyLDggKzE1Miw4IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVw
b2ludDo6UmUKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGluZygp
KQogICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlx
dWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwgV1RGTW92
ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikpOwogCi0g
ICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8R2VuZXJhdGVkRnVuY3Rp
b24+KAotICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9u
T2Yoc3RhdGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKSk7CisgICAgQ29kZUxvY2F0aW9uTGFi
ZWwgbGFiZWwgPSBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
c3RhdGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKTsKKyAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5j
dGlvbiA9IGxhYmVsLmV4ZWN1dGFibGVBZGRyZXNzPEdlbmVyYXRlZEZ1bmN0aW9uPigpOwogICAg
IHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVCM0J5cHJvZHVjdHMoc3RhdGUucHJvYy0+cmVsZWFz
ZUJ5cHJvZHVjdHMoKSk7CiAKICAgICBmb3IgKGF1dG8gcGFpciA6IHN0YXRlLmdyYXBoLm1fZW50
cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcg
Kzg0LDcgQEAgSklUQ29kZTo6Q29kZVB0ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbAogCiB2b2lk
KiBKSVRDb2RlOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYWRkcmVzc0ZvckNhbGwuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIG1fYWRkcmVzc0ZvckNhbGwuZXhl
Y3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgKyBvZmZzZXQ7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmRh
dGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9u
Q29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAg
ICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVy
RnJhbWUsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotICAgICAgICAg
ICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtLmdldENU
SVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CisgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0
cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpKSk7CiAgICAgICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjEsNyArMTgyMSw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIHNsb3dQYXRoRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
bGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAt
IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1
dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJ
Qy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CiAjZW5kaWYKQEAgLTE4MzUsNyArMTgzNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1B
VEhfSUNfU1RBVFMpCiAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVFbmQgPSBqaXQubGFiZWwo
KTsKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFy
dCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpOwogICAgICAgICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29k
ZVNpemUgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTkxNCw3ICsx
OTE0LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0
aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhlY3V0
YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFy
dCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTkyOCw3ICsxOTI4LDcgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUVuZCA9IGpp
dC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlu
bGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRk
cmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0
YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAgICAgIG1hdGhJQy0+bV9nZW5l
cmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC02
NzY1LDcgKzY3NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBsaW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdl
dENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChzbG93Q2FsbCkpLApAQCAtNzA3Niw3ICs3MDc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwg
RnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2Fs
bCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2Nh
dGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlu
a0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAgLTczNDcsNyArNzM0Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2Fs
bCwgRnVuY3Rpb25QdHIobGlua0NhbGwpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkBAIC03NjMwLDcgKzc2MzAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9u
UHRyKGxpbmtDYWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChzbG93Q2FsbCkpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjI1MzMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBPcGNvZGVJRCBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQKICAgICAvLyB0aGUgTExJbnQgY29kZSBmb3IgdGhlIG9wY29kZSAoc2Vl
IHRoZSBFTUJFRF9PUENPREVfSURfSUZfTkVFREVEIG1hY3JvCiAgICAgLy8gaW4gTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHApLgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wY29kZSkpOwotICAgIGludDMyX3QqIG9wY29kZUlEQWRkcmVz
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGNvZGVQdHIuZGF0YUxvY2F0aW9uKCkpIC0g
MTsKKyAgICBpbnQzMl90KiBvcGNvZGVJREFkZHJlc3MgPSBjb2RlUHRyLmRhdGFMb2NhdGlvbjxp
bnQzMl90Kj4oKSAtIDE7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBzdGF0aWNfY2FzdDxPcGNv
ZGVJRD4oKm9wY29kZUlEQWRkcmVzcyk7CiAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVSX09G
X0JZVEVDT0RFX0lEUyk7CiAgICAgcmV0dXJuIG9wY29kZUlEOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRV
bmFyeU1hdGhJQzwKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIGlubGluZUVu
ZCA9IGxhYmVsKCk7CiAgICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CisgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGlu
ZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
aW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMt
Pm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtNzg5LDcg
Kzc4OSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUMKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIGlubGluZUVuZCA9IGxhYmVsKCk7CiAgICAg
YWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHNpemVf
dCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVF
bmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIHNp
emVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFk
ZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1
dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNp
emUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSklU
OjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzwKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKICAgICBhdXRvIHNsb3dQYXRoRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxl
QWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xv
d1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIHNpemVfdCBzaXplID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFy
Kj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRk
cmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNp
emU7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1h
dGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAg
YXV0byBzbG93UGF0aEVuZCA9IGxhYmVsKCk7CiAgICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3Rh
cnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAg
IH0pOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJl
dmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI3LDIwICsxMjcsMjAgQEAgSklUQ29kZVdpdGhD
b2RlUmVmOjp+SklUQ29kZVdpdGhDb2RlUmVmKAogdm9pZCogSklUQ29kZVdpdGhDb2RlUmVmOjpl
eGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9yZWYpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIG1fcmVmLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIG9mZnNldDsKIH0KIAogdm9pZCogSklU
Q29kZVdpdGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwogICAgIEFTU0VSVChvZmZzZXQgPD0gc2l6ZSgpKTsg
Ly8gdXNlIDw9IGluc3RlYWQgb2YgPCBiZWNhdXNlIGl0IGlzIHZhbGlkIHRvIGFzayBmb3IgYW4g
YWRkcmVzcyBhdCB0aGUgZXhjbHVzaXZlIGVuZCBvZiB0aGUgY29kZS4KLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dDsKKyAgICByZXR1cm4gbV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNl
dDsKIH0KIAogdW5zaWduZWQgSklUQ29kZVdpdGhDb2RlUmVmOjpvZmZzZXRPZih2b2lkKiBwb2lu
dGVySW50b0NvZGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgIGludHB0cl90
IHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXJJbnRvQ29kZSkgLSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisgICAgaW50cHRyX3QgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9p
bnRlckludG9Db2RlKSAtIG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxpbnRwdHJfdD4o
KTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyZXN1bHQpKSA9PSByZXN1bHQpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fz
c2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2Myw3ICsx
NjMsNyBAQCB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByCiB7CiAgICAg
Q29kZUxvY2F0aW9uTGFiZWwgZnJvbUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGZy
b20pOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIHRvTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YodG8pOwotICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlvbiwgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4odG9Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSAtIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGZyb21Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiAgICAgICAgIiwg
b3V0KTsKKyAgICBkaXNhc3NlbWJsZShmcm9tTG9jYXRpb24sIHRvTG9jYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3M8dWludHB0cl90PigpIC0gZnJvbUxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzPHVp
bnRwdHJfdD4oKSwgIiAgICAgICAgIiwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNw
cAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29k
ZU9yaWdpbk1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjA0LDggKzIwNCw4IEBAIFBDVG9Db2RlT3Jp
Z2luTWFwOjpQQ1RvQ29kZU9yaWdpbk1hcChQQ1QKICAgICAgICAgICAgIGNvZGVPcmlnaW5Db21w
cmVzc29yLndyaXRlPHVpbnRwdHJfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpKTsKICAgICB9OwogCi0gICAgbV9wY1JhbmdlU3RhcnQgPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoYnVpbGRlci5tX2NvZGVS
YW5nZXMuZmlyc3QoKS5zdGFydCkuZGF0YUxvY2F0aW9uKCkpOwotICAgIG1fcGNSYW5nZUVuZCA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihidWlsZGVyLm1f
Y29kZVJhbmdlcy5sYXN0KCkuZW5kKS5kYXRhTG9jYXRpb24oKSk7CisgICAgbV9wY1JhbmdlU3Rh
cnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoYnVpbGRlci5tX2NvZGVSYW5nZXMuZmlyc3QoKS5z
dGFydCkuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKTsKKyAgICBtX3BjUmFuZ2VFbmQgPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YoYnVpbGRlci5tX2NvZGVSYW5nZXMubGFzdCgpLmVuZCkuZGF0YUxv
Y2F0aW9uPHVpbnRwdHJfdD4oKTsKICAgICBtX3BjUmFuZ2VFbmQgLT0gMTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBidWlsZGVyLm1fY29kZVJhbmdlcy5zaXplKCk7IGkrKykgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMjUzMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw4ICs5MSw3IEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9j
ayoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdl
dChjYWxsKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIGtleSA9IGtleS53aXRoQ2Fs
bFRhcmdldChuZXdDYWxsZWVGdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAg
bmV3Q2FsbGVlRnVuY3Rpb24gPSBGdW5jdGlvblB0cigKLSAgICAgICAgICAgIHRodW5rcy5nZXRT
bG93UGF0aENhbGxUaHVuayhrZXkpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgbmV3Q2FsbGVlRnVuY3Rpb24gPSBGdW5jdGlvblB0cih0aHVua3MuZ2V0U2xvd1BhdGhDYWxs
VGh1bmsoa2V5KS5jb2RlKCkpOwogICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAg
IFVOVVNFRF9QQVJBTShjb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMi0yMDE0LCAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2
aXJ0dWFsVGh1bmtGb3IoVk0KICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB0aGF0IHdlIGhhdmUg
YSBDb2RlQmxvY2ssIGFuZCB3ZSdyZSBjb21taXR0ZWQgdG8gbWFraW5nIGEgZmFzdAogICAgIC8v
IGNhbGwuCi0gICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NChnX21hc21TY3JhbWJsZWRQdHJLZXkpLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgaml0LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CisjZW5kaWYK
KwogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFjayB0byBKSVQg
Y29kZS4KICAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgY2FsbENvZGUoaml0LmxhYmVsKCkpOwog
ICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKQEAgLTExNTgs
NiArMTE2MiwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAg
ICAgICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0g
aml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW02NChnX21hc21TY3JhbWJsZWRQdHJLZXkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0
LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisjZW5kaWYKICAgICBlbWl0
UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmNhbGwoR1BS
SW5mbzo6cmVnVDApOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEs
NyArMTkxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElO
VF9CRUdJTigpOwotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMl
dTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhl
Y3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICAg
Y3VycmVudFRocmVhZCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAg
ICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjE0LDcgKzIxNSw4IEBA
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWMKICAgICB9IHU7CiAgICAg
dS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICBkYXRhTG9nRigKLSAgICAg
ICAgIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDog
JTA4eDolMDh4OiAlc1xuIiwKKyAgICAgICAgIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6
dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICBj
dXJyZW50VGhyZWFkKCksCiAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVj
LAogICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBAIC0yMzAsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhYwogCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFj
ZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwg
ZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGlu
IHByb2xvZ3VlIG9mICIsIGN1cnJlbnRUaHJlYWQoKSwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMp
OwogICAgIGRhdGFMb2coKmV4ZWMtPmNvZGVCbG9jaygpLCAiXG4iKTsKICAgICBMTElOVF9FTkRf
SU1QTCgpOwogfQpAQCAtMjQwLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZShFeGVjU3QKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGlu
ICVzIG9mICIsIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlZD4g
JXAgLyAlcDogaW4gJXMgb2YgIiwgY3VycmVudFRocmVhZCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNv
bW1lbnQpOwogICAgIGRhdGFMb2coKmNvZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlv
biAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51
bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhl
Y3V0YWJsZSwgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAg
LTI3Myw3ICsyNzUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zv
CiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7Ci0gICAgZGF0YUxvZ0Yo
IiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgIGRhdGFMb2dG
KCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAg
ICAgICAgY3VycmVudFRocmVhZCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAg
ICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0g
ZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjkxLDcgKzI5
NCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzcGVjaWFsX3RyYWNlKQogewotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgc3Bl
Y2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICBkYXRhTG9n
RigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJl
dHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSwKQEAgLTEzMDUsNiArMTMwOSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5
cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09i
amVjdChjYWxsZWUpKTsKICAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKICAgICAg
ICAgICAgIAorICAgICAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJs
ZWQoTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENv
ZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTMyOCw2ICsxMzMzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwogCisgICAgICAgIE1hc21TY3JhbWJsZWRQ
dHI6OmFzc2VydElzTm90U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0Nh
bGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgIH0K
ICAgICAKQEAgLTEzNjgsNiArMTM3NCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0
VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFy
Z2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CkBAIC0xNDE4LDYgKzE0MjUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNl
dFVwQ2FsbChFeGVjCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhl
YywgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJ
c05vdFNjcmFtYmxlZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMTk0Niw4ICsxOTQ2LDE1IEBAIG1hY3JvIGRvQ2FsbChzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CiAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBzdG9y
ZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgIG1vdmUgdDMsIHNw
Ci0gICAgcHJlcGFyZUNhbGwoTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3Qx
XSwgdDIsIHQzLCB0NCkKLSAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSkKKyAgICBpZiBYODZfNjRfV0lOCisgICAgICAgIHByZXBh
cmVDYWxsKExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQyLCB0Mywg
dDQpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihMTEludENhbGxMaW5rSW5mbzo6bWFjaGlu
ZUNvZGVUYXJnZXRbdDFdKQorICAgIGVsc2UKKyAgICAgICAgbG9hZHAgX2dfbWFzbVNjcmFtYmxl
ZFB0cktleSwgdDIKKyAgICAgICAgeG9ycCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVU
YXJnZXRbdDFdLCB0MgorICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDEsIHQzLCB0NCkKKyAgICAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKHQyKQorICAgIGVuZAogCiAub3BDYWxsU2xvdzoKICAgICBz
bG93UGF0aEZvckNhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDIsNiArMzAyLDEyIEBAIGNsYXNzIEFic29sdXRlQWRkcmVzcwogICAgIGVuZAogZW5kCiAKK2Ns
YXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGludE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50
cHRyX3QqPigmI3tjTGFiZWx9KSIKKyAgICBlbmQKK2VuZAorCiAKICMKICMgTGVhIHN1cHBvcnQu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxl
LmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01OCw2ICs1OSw3IEBAIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZygpCiAKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplVGhyZWFk
aW5nT25jZUZsYWcsIFtdewogICAgICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCk7CiAgICAgICAgIE9wdGlv
bnM6OmluaXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAg
ICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCShyZXZpc2lvbiAyMjUzMzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNywxMiArMzI3LDEyIEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJz
dHJhY3RMb2MKIAogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkIDogbV91bmxpbmtlZFdhc21U
b1dhc21DYWxscykgewogICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogdW5saW5rZWQpIHsK
LSAgICAgICAgICAgICAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzczsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZXhlY3V0YWJsZUFkZHJlc3M7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kdWxlSW5mb3JtYXRpb24tPmlzSW1wb3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlv
bkluZGV4U3BhY2UoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FIGltcG9ydHMgY291bGQgaGF2ZSBiZWVuIGxpbmtlZCBpbiBCMywgaW5zdGVh
ZCBvZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludC4gVGhpcyBjb25kaXRpb24gc2hvdWxkIGJlIHJl
cGxhY2VkIGJ5IGEgUkVMRUFTRV9BU1NFUlQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjY0NjIKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3Mg
PSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlQWRk
cmVzcyA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5hdChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSku
Y29kZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBleGVj
dXRhYmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25J
bmRleFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+
ZW50cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNzID0gbV93YXNtSW50ZXJuYWxGdW5jdGlv
bnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgLSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBv
cnRGdW5jdGlvbkNvdW50KCkpLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCk7CiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2Nh
dGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZXhlY3V0YWJsZUFkZHJlc3MpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxl
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
aAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpjYWxsZWUpOwogICAgIH0KIAotICAgIHZvaWQqIGVudHJ5cG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGlsYXRpb24tPmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOyB9CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnQoKSBj
b25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGlsYXRpb24tPmNvZGUoKTsgfQogCiAgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSB7IHJldHVybiAmbV9l
bnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnM7IH0KICAgICBJbmRleE9yTmFtZSBpbmRleE9y
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhPck5hbWU7IH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjUzMzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb250ZXh0KiBjb250
ZXh0LCBNCiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY2FsbGVlc1tjYWxsZWVJbmRl
eF0gPSBXVEZNb3ZlKHdhc21FbnRyeXBvaW50Q2FsbGVlKTsKLSAgICAgICAgICAgIG1fd2FzbUlu
ZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2NhbGxlZUluZGV4XSA9IG1fY2FsbGVlc1tjYWxsZWVJbmRl
eF0tPmVudHJ5cG9pbnQoKTsKKyAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9p
bnRzW2NhbGxlZUluZGV4XSA9IG1fY2FsbGVlc1tjYWxsZWVJbmRleF0tPmVudHJ5cG9pbnQoKS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX3dhc21Ub1dhc21F
eGl0U3R1YnMgPSBtX3BsYW4tPnRha2VXYXNtVG9XYXNtRXhpdFN0dWJzKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCShyZXZpc2lvbiAyMjUzMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCiAKICAgICBvbWdFbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMgPSBXVEZNb3Zl
KHBhcnNlQW5kQ29tcGlsZVJlc3VsdC52YWx1ZSgpLT5lbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdp
c3RlcnMpOwogCi0gICAgdm9pZCogZW50cnlwb2ludDsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgZW50cnlwb2ludDsKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvZGVCbG9jay5wdHIoKSA9
PSBtX21vZHVsZS0+Y29kZUJsb2NrRm9yKG1vZGUoKSkpOwogICAgICAgICBSZWY8Q2FsbGVlPiBj
YWxsZWUgPSBDYWxsZWU6OmNyZWF0ZShXVEZNb3ZlKG9tZ0VudHJ5cG9pbnQpLCBmdW5jdGlvbklu
ZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25J
bmRleFNwYWNlKSk7CkBAIC0xMTksOSArMTE5LDkgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBp
bGF0aW9uRWZmb3J0KQogICAgICAgICBtX2NvZGVCbG9jay0+bV9vcHRpbWl6ZWRDYWxsZWVzW21f
ZnVuY3Rpb25JbmRleF0gPSBXVEZNb3ZlKGNhbGxlZSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBj
YWxsIDogdW5saW5rZWRDYWxscykgewotICAgICAgICAgICAgdm9pZCogZW50cnlwb2ludDsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50OwogICAgICAgICAgICAg
aWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9u
KCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKQotICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQgPSBt
X2NvZGVCbG9jay0+bV93YXNtVG9XYXNtRXhpdFN0dWJzW2NhbGwuZnVuY3Rpb25JbmRleFNwYWNl
XS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50
ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRvV2FzbUV4aXRTdHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhT
cGFjZV0uY29kZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnQgPSBtX2NvZGVCbG9jay0+d2FzbUVudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNw
YWNlKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5lbnRyeXBvaW50KCk7CiAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgcmVzZXRJ
bnN0cnVjdGlvbkNhY2hlT25BbGxUaHJlYWRzKCk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2Uo
KTsgLy8gVGhpcyBwcm9iYWJseSBpc24ndCBuZWNlc3NhcnkgYnV0IGl0J3MgZ29vZCB0byBiZSBw
YXJhbm9pZC4KIAotICAgIG1fY29kZUJsb2NrLT5tX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50
c1ttX2Z1bmN0aW9uSW5kZXhdID0gZW50cnlwb2ludDsKKyAgICBtX2NvZGVCbG9jay0+bV93YXNt
SW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlvbkluZGV4XSA9IGVudHJ5cG9pbnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29k
ZUJsb2NrLT5tX2xvY2spOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHNp
dGVzKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6
dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihj
YWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJnZXRzICIsIGNhbGwu
ZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbklu
ZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwg
YXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRv
ICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAi
LCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBS
YXdQb2ludGVyKGVudHJ5cG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGwuY2FsbExvY2F0aW9u
LCBDb2RlTG9jYXRpb25MYWJlbChlbnRyeXBvaW50KSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2FzbVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNyArNjI3LDcgQEAgRXhwZWN0ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBCaW5kaW5nRgogICAgIGlmIChVTkxJS0VMWShwYXRjaEJ1
ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEJpbmRpbmdGYWlsdXJlOjpPdXRPZk1lbW9yeSk7CiAKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNs
b3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKTsKICAgICBDb2RlTG9jYXRpb25M
YWJlbCBob3RQYXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZih0YXJnZXRUb0NoZWNrKSk7
CiAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMjUz
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICB2bS53YXNtQ29udGV4dC5zdG9yZSh3YXNtSW5z
dGFuY2UsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmlu
c3RhbmNlKCkpOwogICAgIEFTU0VSVCgmd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5j
ZSgpID09IHZtLndhc21Db250ZXh0LmxvYWQoKSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVz
dWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgpLCAmdm0sICZw
cm90b0NhbGxGcmFtZSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRv
V2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzKCksICZ2
bSwgJnByb3RvQ2FsbEZyYW1lKTsKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlz
IGluIGEgcmVnaXN0ZXIgb3Igb24gdGhlIHN0YWNrIHNpbmNlIGl0J3Mgc3RvcmVkIGluIFZlY3Rv
cjxKU1ZhbHVlPi4KICAgICAvLyBUaGlzIHByb2JhYmx5IGlzbid0IHN0cmljdGx5IG5lY2Vzc2Fy
eSwgc2luY2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHNob3VsZCBrZWVwIHRoZSBpbnN0YW5j
ZQogICAgIC8vIGFsaXZlLiBCdXQgaXQncyBnb29kIGh5Z2llbmUuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCShyZXZp
c2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2lu
Y2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgV2FzbTo6V2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24gd2FzbUVudHJ5cG9pbnRMb2Fk
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3dhc21GdW5jdGlvbi5jb2RlOyB9CiAgICAgV2Fz
bTo6Q2FsbGFibGVGdW5jdGlvbiBjYWxsYWJsZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93
YXNtRnVuY3Rpb247IH0KIAotICAgIHZvaWQqIGpzRW50cnlwb2ludCgpIHsgcmV0dXJuIG1fanNF
bnRyeXBvaW50OyB9CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGpzRW50cnlwb2ludCgpIHsg
cmV0dXJuIG1fanNFbnRyeXBvaW50OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
V2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2Vi
QXNzZW1ibHlGdW5jdGlvbiwgbV93YXNtRnVuY3Rpb24pICsgV2FzbTo6Q2FsbGFibGVGdW5jdGlv
bjo6b2Zmc2V0T2ZXYXNtRW50cnlwb2ludExvYWRMb2NhdGlvbigpOyB9CiAKQEAgLTY2LDcgKzY3
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJdCdzIHNhZmUgdG8ganVzdCBob2xkIHRoZSByYXcgQ2Fs
bGFibGVGdW5jdGlvbi9qc0VudHJ5cG9pbnQgYmVjYXVzZSB3ZSBoYXZlIGEgcmVmZXJlbmNlCiAg
ICAgLy8gdG8gb3VyIEluc3RhbmNlLCB3aGljaCBwb2ludHMgdG8gdGhlIE1vZHVsZSB0aGF0IGV4
cG9ydGVkIHVzLCB3aGljaAogICAgIC8vIGVuc3VyZXMgdGhhdCB0aGUgYWN0dWFsIFNpZ25hdHVy
ZS9jb2RlIGRvZXNuJ3QgZ2V0IGRlYWxsb2NhdGVkLgotICAgIHZvaWQqIG1fanNFbnRyeXBvaW50
OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pzRW50cnlwb2ludDsKICAgICBXYXNtOjpD
YWxsYWJsZUZ1bmN0aW9uIG1fd2FzbUZ1bmN0aW9uOwogfTsKIApJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
NTMzMCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzEgQEAKKzIwMTctMTEtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIExldCdzIHNjcmFtYmxlIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM1NzU4MzQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBp
emxvLCBTYWFtIEJhcmF0aSwgYW5kIEpGIEJhc3RpZW4uCisKKyAgICAgICAgSW50cm9kdWNlIGEg
U2NyYW1ibGVkUHRyIGNsYXNzIHRvIGZhY2lsaXRhdGUgc2NyYW1ibGluZy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvU2NyYW1ibGVkUHRyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VEY6Om1ha2VTY3JhbWJsZWRQdHJLZXkpOgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDog
QWRkZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6U2NyYW1ibGVkUHRyKToKKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkIGNvbnN0KToK
KyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVk
IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjogY29uc3QpOgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV1RGOjpTY3Jh
bWJsZWRQdHI6OnNjcmFtYmxlZEJpdHMgY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQ
dHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXVEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGUpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQ
dHI6OmRlc2NyYW1ibGUpOgorCiAyMDE3LTExLTI5ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXVEYgLyBibWFsbG9jOiBkb24ndCB3cml0ZSB0byAweGJiYWRi
ZWVmIHdoZW4gQVNBTiBpcyBsb29raW5nCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQAog
CQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJF
MzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2
MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVl
LmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29h
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBB
RDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CisJCUZFODU0
MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFNjcmFtYmxlZFB0ci5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC01OTcsNiArNTk4LDggQEAKIAkJRUY3
RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNzJCQkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyYW1ibGVkUHRyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURB
IC8qIFNjcmFtYmxlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jh
bWJsZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQw
MjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcmJpZEhlYXBBbGxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MCw2ICs5ODMsOCBAQAogCQkJCTE0Njk0MTk1MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYz
QTJGRjAwMzE3MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0
IC8qIFNjb3BlZExhbWJkYS5oICovLAorCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBT
Y3JhbWJsZWRQdHIuY3BwICovLAorCQkJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3Jh
bWJsZWRQdHIuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5j
cHAgKi8sCiAJCQkJMEY2NkIyODUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJ
CQlBOEE0NzMwNjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0x
NDU5LDYgKzE0NjQsNyBAQAogCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJl
YWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM5NjFEMzA4MDBBMDBGNUZB
MTYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzRTRERDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTMxMUZCMTcxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDRBMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJl
YWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEUxNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAg
U2hhcmVkVGFzay5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NvcGVkTGFtYmRh
LmgKKyAgICBTY3JhbWJsZWRQdHIuaAogICAgIFNlY29uZHMuaAogICAgIFNlZ21lbnRlZFZlY3Rv
ci5oCiAgICAgU21hbGxQdHJTZXQuaApAQCAtMjU2LDYgKzI1Nyw3IEBAIHNldChXVEZfU09VUkNF
UwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNI
QTEuY3BwCisgICAgU2NyYW1ibGVkUHRyLmNwcAogICAgIFNlY29uZHMuY3BwCiAgICAgU2l4Q2hh
cmFjdGVySGFzaC5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
YW1ibGVkUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5
KCkKK3sKKyAgICB1aW50cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIo
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyAgICBrZXkgPSAoa2V5IDw8
IDMyKSBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyKCkpIDw8IDMpOworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyAocG9p
bnRlciBeIGtleSkgZG8gbm90IG1ha2UgYSB2YWxpZCBwb2ludGVyIGFuZAorICAgIC8vIGNhbm5v
dCBiZSAwLiBXZSBlbnN1cmUgdGhhdCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHNjcmFtYmxlZCBi
aXRzIGNhbiBhbHNvIGJlCisgICAgLy8gdXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRo
b3V0IG5lZWRpbmcgdG8gZGVzY3JhbWJsZSBmaXJzdC4KKyAgICBrZXkgfD0gKHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMHgxKSA8PCA2Myk7CisjZWxzZQorICAgIGtleSA9IDA7IC8vIFNjcmFtYmxp
bmcgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1iaXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0
LgorI2VuZGlmCisgICAgcmV0dXJuIGtleTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1Nj
cmFtYmxlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjZGVmaW5lIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FT
U0VSVFMgMAorCisvLyBOb3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9TKFdJ
TkRPV1MpIGJ1aWxkcyAoYmVjYXVzZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgorLy8gTWFr
ZSBzdXJlIGl0J3MgZGlzYWJsZWQuCisjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lORE9X
UykKKyN1bmRlZiBFTkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTCisjZGVmbmUgRU5BQkxFX1ND
UkFNQkxFRF9QVFJfQVNTRVJUUyAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5n
IFNjcmFtYmxlZFB0ckJpdHMgPSB1aW50cHRyX3Q7CisKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5
PgorY2xhc3MgU2NyYW1ibGVkUHRyIHsKK3B1YmxpYzoKKyAgICBTY3JhbWJsZWRQdHIoKSB7IH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT46OnR5cGU+CisgICAgZXhwbGljaXQgU2Ny
YW1ibGVkUHRyKFQgcHRyKQorICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZShwdHIp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHB0ciAmJiBtX3NjcmFtYmxlZEJpdHMpOworICAgIH0K
KworICAgIFNjcmFtYmxlZFB0cihjb25zdCBTY3JhbWJsZWRQdHImKSA9IGRlZmF1bHQ7CisKKyAg
ICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKQor
ICAgICAgICA6IG1fc2NyYW1ibGVkQml0cyhzY3JhbWJsZWRCaXRzKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fc2NyYW1ibGVkQml0cyk7CisgICAgfQorCisjaWYgRU5BQkxFKFNDUkFNQkxFRF9Q
VFJfQVNTRVJUUykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGlj
IGJvb2wgaXNTY3JhbWJsZWQoVCB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlIHx8IChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpICYgMHhmZmZmMDAwMDAwMDAwMDAwKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KKyAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFt
YmxlZChUIHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKGlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNO
b3RTY3JhbWJsZWQoVCB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVCghaXNTY3JhbWJsZWQodmFsdWUp
KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lk
IGFzc2VydElzU2NyYW1ibGVkKFQpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lk
Kj4gc3RhdGljIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoVCkgeyB9CisjZW5kaWYKKyAgICB2
b2lkIGFzc2VydElzU2NyYW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJc1NjcmFtYmxlZChtX3NjcmFt
YmxlZEJpdHMpOyB9CisgICAgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZCgpIGNvbnN0IHsgYXNz
ZXJ0SXNOb3RTY3JhbWJsZWQobV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IHZvaWQqPgorICAgIFQgZGVzY3JhbWJsZSgpIGNvbnN0IHsgcmV0dXJuIGRlc2Ny
YW1ibGU8VD4obV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZh
bHVlPjo6dHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuIGRlc2NyYW1ibGU8VD4obV9zY3JhbWJsZWRCaXRzKTsgfQorCisgICAgU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZWRCaXRzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JhbWJsZWRCaXRzOyB9CisK
KyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3NjcmFtYmxlZEJpdHM7IH0K
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3NjcmFtYmxl
ZEJpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JhbWJsZWRQdHImIGIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zY3JhbWJsZWRCaXRzID09IGIubV9zY3JhbWJs
ZWRCaXRzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlw
ZT46OnZhbHVlPjo6dHlwZT4KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGRlc2NyYW1ibGU8UHRyVHlwZT4oKSA9PSBiOworICAgIH0K
KworcHJpdmF0ZToKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShUIHB0
cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFQgZGVz
Y3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxUPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorI2Vsc2UKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1i
bGUoVCBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUIGRl
c2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8VD4oc2NyYW1ibGVkQml0cyk7IH0KKyNlbmRpZgorCisgICAgU2NyYW1ibGVkUHRyQml0
cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cit9OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQ
dHIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVNjcmFtYmxlZFB0cktleSgp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTY3JhbWJsZWRQdHI7Cit1c2lu
ZyBXVEY6OlNjcmFtYmxlZFB0ckJpdHM7Cit1c2luZyBXVEY6Om1ha2VTY3JhbWJsZWRQdHJLZXk7
CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328014</attachid>
            <date>2017-11-30 13:29:55 -0800</date>
            <delta_ts>2017-11-30 13:29:55 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180169.patch</filename>
            <type>text/plain</type>
            <size>87784</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MSBA
QAorMjAxNy0xMS0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TGV0J3Mgc2NyYW1ibGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2OQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzU3NTgzNDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8s
IFNhYW0gQmFyYXRpLCBhbmQgSkYgQmFzdGllbi4KKworICAgICAgICAxLiBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbm93IHN0b3JlcyBhIFNjcmFtYmxlZFB0ciBpbnN0ZWFkIG9mIGEgdm9pZCouCisK
KyAgICAgICAgMi4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJ3MgZXhlY3V0YWJsZUFkZHJlc3MoKSBh
bmQgZGF0YUxvY2F0aW9uKCkgbm93IHRha2UgYQorICAgICAgICAgICB0ZW1wbGF0ZSBhcmd1bWVu
dCB0eXBlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNhc3QgdGhlIHJlc3VsdC4gIFRoaXMgbWFrZXMg
dGhlCisgICAgICAgICAgIGNsaWVudCBjb2RlIHRoYXQgdXNlcyB0aGVzZSBmdW5jdGlvbnMgYSBs
aXR0bGUgbGVzcyB2ZXJib3NlLgorCisgICAgICAgIDMuIENoYW5nZSB0aGUgY29kZSBiYXNlIGlu
IGdlbmVyYWwgdG8gbWluaW1pemUgcGFzc2luZyB2b2lkKiBjb2RlIHBvaW50ZXJzIGFyb3VuZC4K
KyAgICAgICAgICAgV2Ugbm93IHBhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGFzIG11Y2ggYXMg
cG9zc2libGUsIGFuZCBkZXNjcmFtYmxlIGl0IG9ubHkKKyAgICAgICAgICAgYXQgdGhlIGxhc3Qg
bW9tZW50IHdoZW4gd2UgbmVlZCB0aGUgdW5kZXJseWluZyBjb2RlIHBvaW50ZXIuCisKKyAgICAg
ICAgNC4gQWRkZWQgc29tZSBNYXNtU2NyYW1ibGVkUHRyIHBhcmFub2lkIGFzc2VydHMgdGhhdCBh
cmUgZGlzYWJsZWQgKG5vdCBidWlsdCkgYnkKKyAgICAgICAgICAgZGVmYXVsdC4gIEknbSBsZWF2
aW5nIHRoZW0gaW4gYmVjYXVzZSB0aGV5IGFyZSBpbnN0cnVtZW50YWwgaW4gZmluZGluZyBidWdz
CisgICAgICAgICAgIHdoZXJlIG5vdCBhbGwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHZhbHVlcyB3
ZXJlIG5vdCBzY3JhbWJsZWQgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgIEkgZXhwZWN0IHRoZW0g
dG8gYmUgdXNlZnVsIGluIHRoZSBuZWFyIGZ1dHVyZSBhcyB3ZSBhZGQgbW9yZSBzY3JhbWJsaW5n
LgorCisgICAgICAgIDUuIEFsc28gZGlzYWJsZSB0aGUgY2FzdGluZyBvcGVyYXRvciBvbiBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgKGV4Y2VwdCBmb3IKKyAgICAgICAgICAgZXhwbGljaXQgY2FzdHMg
dG8gYSBib29sZWFuKS4gIFRoaXMgZW5zdXJlcyB0aGF0IGNsaWVudHMgd2lsbCBhbHdheXMgZXhw
bGljaXRseQorICAgICAgICAgICB1c2Ugc2NyYW1ibGVkQml0cygpIG9yIGV4ZWN1dGFibGVBZGRy
ZXNzKCkgdG8gZ2V0IGEgdmFsdWUgYmFzZWQgb24gd2hpY2ggdmFsdWUKKyAgICAgICAgICAgdGhl
eSBhY3R1YWxseSBuZWVkLgorCisgICAgICAgIDUuIEFkZGVkIGN1cnJlbnRUaHJlYWQoKSBpZCB0
byB0aGUgbG9nZ2luZyBpbiBMTEludFNsb3dQYXRoIHRyYWNlIGZ1bmN0aW9ucy4KKyAgICAgICAg
ICAgVGhpcyB3YXMgaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyB0ZXN0cyB0aGF0IHJhbiBtdWx0aXBs
ZSBWTXMgY29uY3VycmVudGx5IG9uCisgICAgICAgICAgIGRpZmZlcmVudCB0aHJlYWRzLgorCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBpcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIDY0
LWJpdCBidWlsZHMgKGluY2x1ZGluZyB0aGUKKyAgICAgICAgQ0xvb3ApLiAgSXQgaXMgbm90IHll
dCBzdXBwb3J0ZWQgaW4gMzItYml0IGFuZCBXaW5kb3dzIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAg
ICAgY3VycmVudGx5IGhhdmUgYSB3YXkgdG8gcmVhZCBhIGdsb2JhbCB2YXJpYWJsZSBmcm9tIHRo
ZWlyIExMSW50IGNvZGUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNl
QmV0d2VlbkNvZGVQdHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjps
aW5rUG9pbnRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246Omluc3RydWN0aW9uQXRPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlTG9jYXRpb25Db21tb246OmxhYmVsQXRPZmZzZXQpOgorICAgICAgICAoSlND
OjpDb2RlTG9jYXRpb25Db21tb246Omp1bXBBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVM
b2NhdGlvbkNvbW1vbjo6Y2FsbEF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9u
Q29tbW9uOjpuZWFyQ2FsbEF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0aW9uQ29t
bW9uOjpkYXRhTGFiZWxQdHJBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNv
bW1vbjo6ZGF0YUxhYmVsMzJBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVMb2NhdGlvbkNv
bW1vbjo6ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUxvY2F0
aW9uQ29tbW9uOjpjb252ZXJ0aWJsZUxvYWRBdE9mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVX
aXRoRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpw
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpGdW5j
dGlvblB0cjo6RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6dmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblB0cjo6ZXhlY3V0YWJsZUFkZHJlc3MgY29u
c3QpOgorICAgICAgICAoSlNDOjpSZXR1cm5BZGRyZXNzUHRyOjpSZXR1cm5BZGRyZXNzUHRyKToK
KyAgICAgICAgKEpTQzo6UmV0dXJuQWRkcmVzc1B0cjo6dmFsdWUgY29uc3QpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpzY3JhbWJsZWRQdHIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OiBjb25zdCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6b3BlcmF0b3IhIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpvcGVyYXRvcj09IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpoYXNoIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjplbXB0eVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmV4ZWN1dGFibGVBZGRyZXNzIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpkYXRhTG9jYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3MuY3BwOgorICAgICAgICAqIGIz
L3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0SW50ZXJwcmV0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2Vt
Ymxlcjo6ZHVtcERpc2Fzc2VtYmx5KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEludEp1bXApOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9EaXNhc3Nl
bWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlzYXNz
ZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNz
ZW1ibGVXaXRoVURpczg2KToKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTEpJVENvZGUuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQpOgorICAg
ICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1
Y3RWYXJhcmdzKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQv
SklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGhJQ0Zhc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRoSUNTbG93KToKKyAgICAgICAgKiBqaXQvSklUQ29k
ZS5jcHA6CisgICAgICAgIChKU0M6OkpJVENvZGVXaXRoQ29kZVJlZjo6ZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVENvZGVXaXRoQ29kZVJlZjo6ZGF0YUFkZHJl
c3NBdE9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVENvZGVXaXRoQ29kZVJlZjo6b2Zmc2V0T2Yp
OgorICAgICAgICAqIGppdC9KSVREaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpKSVRE
aXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BDVG9Db2RlT3Jp
Z2luTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6UENUb0NvZGVPcmlnaW5NYXA6OlBDVG9Db2RlT3Jp
Z2luTWFwKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmZ0bFRo
dW5rQXdhcmVSZXBhdGNoQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6
CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVua0Zvcik6CisgICAgICAgIChKU0M6OmJvdW5kVGhp
c05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxM
SW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogb2Zm
bGluZWFzbS9jbG9vcC5yYjoKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3YXNt
L1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUp
OgorICAgICAgICAqIHdhc20vV2FzbUNhbGxlZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpDYWxs
ZWU6OmVudHJ5cG9pbnQgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbUNvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6
CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAg
ICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
OjpjcmVhdGUpOgorCiAyMDE3LTExLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyNTMxNCk6IFtMaW51eF0gTW9yZSB0aGFu
IDIwMDAganNjIHRlc3RzIGFyZSBmYWlsaW5nIGFmdGVyIHIyMjUzMTQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODMwLDcgKzgz
MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgZGlmZmVyZW5jZUJldHdlZW5D
b2RlUHRyKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYSwgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyJiBiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8cHRy
ZGlmZl90PihiLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZm
X3Q+KGEuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIHJldHVybiBiLmV4ZWN1dGFibGVB
ZGRyZXNzPHB0cmRpZmZfdD4oKSAtIGEuZXhlY3V0YWJsZUFkZHJlc3M8cHRyZGlmZl90PigpOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9hc3NlbWJsZXIu
ZGVidWdPZmZzZXQoKTsgfQpAQCAtODUyLDYgKzg1MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFz
c2VtYmxlclR5cGU6OmxpbmtQb2ludGVyKGNvZGUsIGxhYmVsLCB2YWx1ZSk7CiAgICAgfQogCisg
ICAgc3RhdGljIHZvaWQgbGlua1BvaW50ZXIodm9pZCogY29kZSwgQXNzZW1ibGVyTGFiZWwgbGFi
ZWwsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFzc2VtYmxl
clR5cGU6OmxpbmtQb2ludGVyKGNvZGUsIGxhYmVsLCB2YWx1ZS5leGVjdXRhYmxlQWRkcmVzcygp
KTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCogZ2V0TGlua2VyQWRkcmVzcyh2b2lkKiBjb2Rl
LCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKICAgICB7CiAgICAgICAgIHJldHVybiBBc3NlbWJsZXJU
eXBlOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUsIGxhYmVsKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkocmV2aXNpb24gMjI1MzMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Db2RlTG9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjQsNTUgKzE2NCw1NSBAQCBwdWJsaWM6CiBpbmxpbmUgQ29kZUxvY2F0aW9u
SW5zdHJ1Y3Rpb24gQ29kZUxvY2F0aW9uQ29tbW9uOjppbnN0cnVjdGlvbkF0T2Zmc2V0KGludCBv
ZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0
dXJuIENvZGVMb2NhdGlvbkluc3RydWN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFM
b2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkluc3RydWN0aW9u
KGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBDb2RlTG9jYXRp
b25MYWJlbCBDb2RlTG9jYXRpb25Db21tb246OmxhYmVsQXRPZmZzZXQoaW50IG9mZnNldCkKIHsK
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxv
Y2F0aW9uTGFiZWwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zm
c2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFiZWwoZGF0YUxvY2F0aW9uPGNoYXIqPigp
ICsgb2Zmc2V0KTsKIH0KIAogaW5saW5lIENvZGVMb2NhdGlvbkp1bXAgQ29kZUxvY2F0aW9uQ29t
bW9uOjpqdW1wQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9P
RkZTRVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcChyZWludGVycHJldF9j
YXN0PGNoYXIqPihkYXRhTG9jYXRpb24oKSkgKyBvZmZzZXQpOworICAgIHJldHVybiBDb2RlTG9j
YXRpb25KdW1wKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7CiB9CiAKIGlubGluZSBD
b2RlTG9jYXRpb25DYWxsIENvZGVMb2NhdGlvbkNvbW1vbjo6Y2FsbEF0T2Zmc2V0KGludCBvZmZz
ZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0dXJu
IENvZGVMb2NhdGlvbkNhbGwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkp
ICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uQ2FsbChkYXRhTG9jYXRpb248Y2hh
cio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0aW9uTmVhckNhbGwgQ29kZUxv
Y2F0aW9uQ29tbW9uOjpuZWFyQ2FsbEF0T2Zmc2V0KGludCBvZmZzZXQsIE5lYXJDYWxsTW9kZSBj
YWxsTW9kZSkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICBy
ZXR1cm4gQ29kZUxvY2F0aW9uTmVhckNhbGwocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxv
Y2F0aW9uKCkpICsgb2Zmc2V0LCBjYWxsTW9kZSk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbk5l
YXJDYWxsKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCwgY2FsbE1vZGUpOwogfQogCiBp
bmxpbmUgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIENvZGVMb2NhdGlvbkNvbW1vbjo6ZGF0YUxh
YmVsUHRyQXRPZmZzZXQoaW50IG9mZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZT
RVQob2Zmc2V0KTsKLSAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0cihkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwog
fQogCiBpbmxpbmUgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgQ29kZUxvY2F0aW9uQ29tbW9uOjpk
YXRhTGFiZWwzMkF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJUX1ZBTElEX0NPREVf
T0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGFMb2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJu
IENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKGRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNldCk7
CiB9CiAKIGlubGluZSBDb2RlTG9jYXRpb25EYXRhTGFiZWxDb21wYWN0IENvZGVMb2NhdGlvbkNv
bW1vbjo6ZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KGludCBvZmZzZXQpCiB7CiAgICAgQVNTRVJU
X1ZBTElEX0NPREVfT0ZGU0VUKG9mZnNldCk7Ci0gICAgcmV0dXJuIENvZGVMb2NhdGlvbkRhdGFM
YWJlbENvbXBhY3QocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YUxvY2F0aW9uKCkpICsgb2Zm
c2V0KTsKKyAgICByZXR1cm4gQ29kZUxvY2F0aW9uRGF0YUxhYmVsQ29tcGFjdChkYXRhTG9jYXRp
b248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiBpbmxpbmUgQ29kZUxvY2F0aW9uQ29udmVydGli
bGVMb2FkIENvZGVMb2NhdGlvbkNvbW1vbjo6Y29udmVydGlibGVMb2FkQXRPZmZzZXQoaW50IG9m
ZnNldCkKIHsKICAgICBBU1NFUlRfVkFMSURfQ09ERV9PRkZTRVQob2Zmc2V0KTsKLSAgICByZXR1
cm4gQ29kZUxvY2F0aW9uQ29udmVydGlibGVMb2FkKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRh
dGFMb2NhdGlvbigpKSArIG9mZnNldCk7CisgICAgcmV0dXJuIENvZGVMb2NhdGlvbkNvbnZlcnRp
YmxlTG9hZChkYXRhTG9jYXRpb248Y2hhcio+KCkgKyBvZmZzZXQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBM
aW5rQnVmZmVyOjpDb2RlUmVmIExpbmtCdWZmZXI6OmZpbmFsaXplCiAgICAgdmFfZW5kKGFyZ0xp
c3QpOwogICAgIG91dC5wcmludGYoIjpcbiIpOwogCi0gICAgb3V0LnByaW50ZigiICAgIENvZGUg
YXQgWyVwLCAlcCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRp
Y19jYXN0PGNoYXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0
LnNpemUoKSk7CisgICAgb3V0LnByaW50ZigiICAgIENvZGUgYXQgWyVwLCAlcCk6XG4iLCByZXN1
bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlc3VsdC5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3M8Y2hhcio+KCkgKyByZXN1bHQuc2l6ZSgpKTsKICAgICAKICAgICBDU3RyaW5nIGhlYWRl
ciA9IG91dC50b0NTdHJpbmcoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTItMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsaW5rKENh
bGwgY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWwpCiAgICAgewotICAgICAgICBsaW5rKGNh
bGwsIEZ1bmN0aW9uUHRyKGxhYmVsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAgICAgbGlu
ayhjYWxsLCBGdW5jdGlvblB0cihsYWJlbCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGxpbmso
SnVtcCBqdW1wLCBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbCkKQEAgLTE1NCw3ICsxNTQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwYXRjaChEYXRhTGFiZWxQdHIgbGFiZWwsIENvZGVMb2NhdGlvbkxh
YmVsIHZhbHVlKQogICAgIHsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgdGFyZ2V0ID0gYXBwbHlP
ZmZzZXQobGFiZWwubV9sYWJlbCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpsaW5rUG9pbnRl
cihjb2RlKCksIHRhcmdldCwgdmFsdWUuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpsaW5rUG9pbnRlcihjb2RlKCksIHRhcmdldCwgdmFsdWUpOwogICAgIH0K
IAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgdG8gb2J0YWluIGhhbmRsZXMgdG8gYWxs
b3cgdGhlIGNvZGUgdG8gYmUgcmVsaW5rZWQgLyByZXBhdGNoZWQgbGF0ZXIuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOSAr
MjksMjAgQEAKICNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCit1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5OworCit2b2lkIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6aW5pdGlhbGl6ZSgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgZ19tYXNtU2NyYW1ibGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxl
ZFB0cktleSgpOworICAgIH0pOworfQorCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVMTEludENvZGVQdHIoT3Bjb2RlSUQgY29kZUlkKQogewogICAg
IHJldHVybiBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIoY29k
ZUlkKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIC8vIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIgY2hlY2tzIHRoYXQgcHRyIGlzIGEg
bm9uLW51bGwgcG9pbnRlciwgYW5kIHRoYXQgaXQgaXMgYSB2YWxpZApAQCAtNTAsNiArNTEsMTIg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRy
X3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5OworCit1c2luZyBNYXNtU2NyYW1ibGVkUHRyID0gU2Ny
YW1ibGVkUHRyPGdfbWFzbVNjcmFtYmxlZFB0cktleT47CisKK2NsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjsKKwogZW51bSBPcGNvZGVJRCA6IHVuc2lnbmVkOwogCiAvLyBGdW5jdGlvblB0cjoK
QEAgLTU4LDE1ICs2NSwxMyBAQCBlbnVtIE9wY29kZUlEIDogdW5zaWduZWQ7CiAvLyAocGFydGlj
dWxhcmx5LCB0aGUgc3R1YiBmdW5jdGlvbnMpLgogY2xhc3MgRnVuY3Rpb25QdHIgewogcHVibGlj
OgotICAgIEZ1bmN0aW9uUHRyKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAgewotICAgIH0K
KyAgICBGdW5jdGlvblB0cigpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgcmV0dXJuVHlw
ZT4KICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlKCp2YWx1ZSkoKSkKICAgICAgICAgOiBtX3Zh
bHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2Vy
dElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtNzQsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgRnVu
Y3Rpb25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxKSkKICAgICAgICAgOiBtX3ZhbHVl
KCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElz
Tm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KG1fdmFsdWUpOwogICAgIH0KIApAQCAtODEsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDog
bV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAgLTg4LDYgKzk1LDcgQEAgcHVibGljOgogICAg
IEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5
cGUzKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1h
c21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtOTUsNiArMTAz
LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUoKnZhbHVlKShhcmdUeXBl
MSwgYXJnVHlwZTIsIGFyZ1R5cGUzLCBhcmdUeXBlNCkpCiAgICAgICAgIDogbV92YWx1ZSgodm9p
ZCopdmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNj
cmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTEwMiw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25Q
dHIocmV0dXJuVHlwZSgqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5
cGU0LCBhcmdUeXBlNSkpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCopdmFsdWUpCiAgICAgewor
ICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTEwOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSgqdmFs
dWUpKGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0LCBhcmdUeXBlNSwgYXJn
VHlwZTYpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAg
TWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogLy8gTVNWQyBkb2Vz
bid0IHNlZW0gdG8gdHJlYXQgZnVuY3Rpb25zIHdpdGggZGlmZmVyZW50IGNhbGxpbmcgY29udmVu
dGlvbnMgYXMKQEAgLTExOSw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIocmV0
dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVl
KQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQo
bV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAg
ICAgfQogCkBAIC0xMjYsNiArMTM4LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVy
blR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQq
KXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3Jh
bWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1
ZSk7CiAgICAgfQogCkBAIC0xMzMsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRy
KHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyKSkKICAgICAgICAg
OiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6
OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09E
RV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTQwLDYgKzE1NCw3IEBAIHB1YmxpYzoK
ICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChDREVDTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdU
eXBlMiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsK
KyAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7
CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCkBA
IC0xNDcsNiArMTYyLDcgQEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENE
RUNMICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAg
ICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKKyAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9WQUxJ
RF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogI2VuZGlmCkBAIC0xNTcsNiArMTczLDcg
QEAgcHVibGljOgogICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKEZBU1RDQUxMICp2YWx1ZSko
KSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21T
Y3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTY0LDYgKzE4MSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxKSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAg
ICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTcx
LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FM
TCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBlMikpCiAgICAgICAgIDogbV92YWx1ZSgodm9pZCop
dmFsdWUpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFt
YmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVl
KTsKICAgICB9CiAKQEAgLTE3OCw2ICsxOTcsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25QdHIo
cmV0dXJuVHlwZSAoRkFTVENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUz
KSkKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21T
Y3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApAQCAtMTg1LDYgKzIwNSw3
IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChGQVNUQ0FMTCAqdmFsdWUp
KGFyZ1R5cGUxLCBhcmdUeXBlMiwgYXJnVHlwZTMsIGFyZ1R5cGU0KSkKICAgICAgICAgOiBtX3Zh
bHVlKCh2b2lkKil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2Vy
dElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKG1fdmFsdWUpOwogICAgIH0KICNlbmRpZgpAQCAtMTk2LDE1ICsyMTcsMjUgQEAgcHVibGlj
OgogICAgICAgICAvLyAoSSBndWVzcyBvbiBSVlRDIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBk
aWZmZXJlbnQgY29uc3RuZXNzIHRvIEdDQy9NU1ZDPykKICAgICAgICAgOiBtX3ZhbHVlKCh2b2lk
Kil2YWx1ZSkKICAgICB7CisgICAgICAgIE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2Ny
YW1ibGVkKG1fdmFsdWUpOwogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFs
dWUpOwogICAgIH0KIAotICAgIHZvaWQqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQotICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQorICAgIGV4cGxpY2l0IEZ1bmN0aW9uUHRyKE1hY3JvQXNzZW1ibGVyQ29kZVB0cik7CiAKKyAg
ICB2b2lkKiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVkUHRyOjph
c3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorICAgIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IE1hc21TY3JhbWJsZWRQdHI6OmFzc2VydElzTm90U2NyYW1ibGVkKG1fdmFsdWUpOworICAgICAg
ICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCogbV92YWx1ZTsK
KyAgICB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogLy8gUmV0dXJuQWRkcmVzc1B0
cjoKQEAgLTIxNSwyNCArMjQ2LDI3IEBAIHByaXZhdGU6CiAvLyB0aGF0IGlzIHRoZSBzb3VyY2Ug
b2YgdGhlIHJldHVybiBhZGRyZXNzLgogY2xhc3MgUmV0dXJuQWRkcmVzc1B0ciB7CiBwdWJsaWM6
Ci0gICAgUmV0dXJuQWRkcmVzc1B0cigpCi0gICAgICAgIDogbV92YWx1ZSgwKQotICAgIHsKLSAg
ICB9CisgICAgUmV0dXJuQWRkcmVzc1B0cigpIHsgfQogCiAgICAgZXhwbGljaXQgUmV0dXJuQWRk
cmVzc1B0cih2b2lkKiB2YWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgIHsKKyAg
ICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQobV92YWx1ZSk7CiAg
ICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogCiAgICAg
ZXhwbGljaXQgUmV0dXJuQWRkcmVzc1B0cihGdW5jdGlvblB0ciBmdW5jdGlvbikKICAgICAgICAg
OiBtX3ZhbHVlKGZ1bmN0aW9uLnZhbHVlKCkpCiAgICAgeworICAgICAgICBNYXNtU2NyYW1ibGVk
UHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogICAgIHsKQEAgLTI0MCw3ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIHZvaWQqIG1fdmFsdWU7CisgICAgdm9pZCogbV92YWx1ZSB7IG51
bGxwdHIgfTsKIH07CiAKIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjoKQEAgLTI0OCwxMCArMjgy
LDcgQEAgcHJpdmF0ZToKIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0
byB3cmFwIHBvaW50ZXJzIHRvIEpJVCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciB7CiBwdWJsaWM6Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkKLSAgICAg
ICAgOiBtX3ZhbHVlKDApCi0gICAgewotICAgIH0KKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSB7IH0KIAogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cih2b2lkKiB2YWx1ZSkK
ICNpZiBDUFUoQVJNX1RIVU1CMikKQEAgLTI2MSwxNCArMjkyLDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgOiBtX3ZhbHVlKHZhbHVlKQogI2VuZGlmCiAgICAgeworICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzU2NyYW1ibGVkKCk7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHZvaWQqIHZhbHVl
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NP
REVfUE9JTlRFUih2YWx1ZSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQ7
Ci0gICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHJlc3VsdC5tX3ZhbHVl
ID0gTWFzbVNjcmFtYmxlZFB0cih2YWx1ZSk7CisgICAgICAgIHJlc3VsdC5tX3ZhbHVlLmFzc2Vy
dElzU2NyYW1ibGVkKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0yNzcs
MjQgKzMxMiw2NCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KFJldHVybkFkZHJlc3NQdHIgcmEpCiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQogICAg
IHsKKyAgICAgICAgQVNTRVJUKHJhLnZhbHVlKCkpOworICAgICAgICBtX3ZhbHVlLmFzc2VydElz
U2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7
CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CisgICAgTWFzbVNjcmFtYmxlZFB0ciBzY3JhbWJsZWRQdHIoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAg
VCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLmFzc2Vy
dElzU2NyYW1ibGVkKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFt
YmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICB9CiAjaWYgQ1BVKEFSTV9USFVNQjIp
CiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRhdGEgYWRkcmVzcyByZW1vdmUgdGhl
IGRlY29yYXRpb24uCi0gICAgdm9pZCogZGF0YUxvY2F0aW9uKCkgY29uc3QgeyBBU1NFUlRfVkFM
SURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV92YWx1ZSkgLSAxOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIFQg
ZGF0YUxvY2F0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3Jh
bWJsZWQoKTsKKyAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFtYmxl
PGNoYXIqPigpIC0gMSA6IG51bGxwdHIpOworICAgIH0KICNlbHNlCi0gICAgdm9pZCogZGF0YUxv
Y2F0aW9uKCkgY29uc3QgeyBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOyByZXR1
cm4gbV92YWx1ZTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KKyAgICBUIGRh
dGFMb2NhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBtX3ZhbHVlLmFzc2VydElzU2NyYW1i
bGVkKCk7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2Fz
dDxUPigwKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAorICAg
IHsKKyNpZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQorICAgICAgICBpZiAoIWlzRW1w
dHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAgICAgICAgbV92YWx1ZS5hc3Nl
cnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCisgICAgICAgIHJldHVybiAhbV92YWx1ZTsKKyAgICB9
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEoISp0aGlzKTsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IG90aGVyKSBjb25zdAogICAgIHsKKyNpZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQor
ICAgICAgICBpZiAoIWlzRW1wdHlWYWx1ZSgpICYmICFpc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAg
ICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworICAgICAgICBpZiAoIW90aGVyLmlz
RW1wdHlWYWx1ZSgpICYmICFvdGhlci5pc0RlbGV0ZWRWYWx1ZSgpKQorICAgICAgICAgICAgb3Ro
ZXIubV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBt
X3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogCisgICAgLy8gRGlzYWxsb3cgYW55IGNh
c3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucykuIEluc3RlYWQsIHRoZSBjbGll
bnQKKyAgICAvLyBzaG91bGQgYmUgYXNraW5nIGZvciBzY3JhbWJsZWRQdHIoKSBvciBleGVjdXRh
YmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX3NhbWU8VCwgYm9vbD46OnZhbHVlPj4KKyAg
ICBvcGVyYXRvciBUKCkgPSBkZWxldGU7CisKICAgICB2b2lkIGR1bXBXaXRoTmFtZShjb25zdCBj
aGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CkBAIC0zMDQsMjQgKzM3OSwyNCBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKEVtcHR5VmFsdWVUYWcpCiAgICAgICAgIDog
bV92YWx1ZShlbXB0eVZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoRGVsZXRlZFZhbHVlVGFnKQogICAgICAgICA6IG1fdmFsdWUo
ZGVsZXRlZFZhbHVlKCkpCi0gICAgewotICAgIH0KKyAgICB7IH0KICAgICAKICAgICBib29sIGlz
RW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlWYWx1ZSgpOyB9CiAg
ICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZGVsZXRl
ZFZhbHVlKCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gUHRy
SGFzaDx2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dCB7IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2gobV92YWx1ZS5zY3JhbWJsZWRCaXRz
KCkpOyB9CisKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PGludHB0cl90PigxKSk7IH0KLSAgICBzdGF0aWMgdm9pZCogZGVsZXRlZFZhbHVl
KCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikp
OyB9Ci0gICAgCi0gICAgdm9pZCogbV92YWx1ZTsKKyAgICBzdGF0aWMgTWFzbVNjcmFtYmxlZFB0
ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gTWFzbVNjcmFtYmxlZFB0cigxKTsgfQorICAgIHN0YXRp
YyBNYXNtU2NyYW1ibGVkUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIE1hc21TY3JhbWJsZWRQ
dHIoMik7IH0KKworICAgIE1hc21TY3JhbWJsZWRQdHIgbV92YWx1ZTsKIH07CiAKIHN0cnVjdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHJIYXNoIHsKQEAgLTQwNSw2ICs0ODAsMTMgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gbV9leGVjdXRhYmxlTWVtb3J5Owog
fTsKIAoraW5saW5lIEZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgcHRyKQorICAgIDogbV92YWx1ZShwdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkKK3sKKyAgICBN
YXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJc05vdFNjcmFtYmxlZChtX3ZhbHVlKTsKKyAgICBBU1NF
UlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
ck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJNYWNyb3MuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlck1hY3Jvcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMudGVybWluYWwgPSB0
cnVlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihpbmRleCk7Ci0gICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzKys7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxseSwgd2UgZG9u
J3QgaGF2ZSB0byBjbG9iYmVyIG1hY3JvIHJlZ2lzdGVycyBvbiBYODZfNjQuIFRoaXMgaXMgcHJv
YmFibHkKICAgICAgICAgICAgICAgICAvLyBPSyB0aG91Z2guCiAgICAgICAgICAgICAgICAgcGF0
Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpA
QCAtNTA1LDEwICs1MDUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGluZGV4ID0gcGFyYW1zWzBdLmdwcigpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNo
KDApOwotICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBH
UFJSZWcgZGVzY3JhbWJsZXJLZXkgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX21hc21T
Y3JhbWJsZWRQdHJLZXkpLCBkZXNjcmFtYmxlcktleSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRj
aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuanVtcChDQ2FsbEhlbHBlcnM6OkJhc2VJ
bmRleChzY3JhdGNoLCBpbmRleCwgQ0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwgaW5kZXgsIENDYWxsSGVscGVyczo6dGltZXNQ
dHIoKSksIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LnhvcjY0KGRlc2Ny
YW1ibGVyS2V5LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKHNj
cmF0Y2gpOworCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBsYWJlbHMgYXJlIGd1
YXJhbnRlZWQgdG8gYmUgcG9wdWxhdGVkIGJlZm9yZSBlaXRoZXIgbGF0ZSBwYXRocyBvcgogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbGluayB0YXNrcyBydW4uCiAgICAgICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8Qm94PENDYWxsSGVscGVyczo6TGFiZWw+PiBsYWJlbHMgPSBwYXJhbXMu
c3VjY2Vzc29yTGFiZWxzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAko
cmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMDA3LDcgKzEzMDA3LDcgQEAgdm9pZCB0ZXN0SW50ZXJwcmV0
ZXIoKQogICAgIHBvbHlKdW1wLT5lZmZlY3RzLnRlcm1pbmFsID0gdHJ1ZTsKICAgICBwb2x5SnVt
cC0+YXBwZW5kU29tZVJlZ2lzdGVyKG9wY29kZSk7CiAgICAgcG9seUp1bXAtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBwb2x5SnVtcC0+bnVtR1BT
Y3JhdGNoUmVnaXN0ZXJzKys7CisgICAgcG9seUp1bXAtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9
IDI7CiAgICAgZGlzcGF0Y2gtPmFwcGVuZFN1Y2Nlc3NvcihGcmVxdWVudGVkQmxvY2soYWRkVG9E
YXRhUG9pbnRlcikpOwogICAgIGRpc3BhdGNoLT5hcHBlbmRTdWNjZXNzb3IoRnJlcXVlbnRlZEJs
b2NrKGFkZFRvQ29kZVBvaW50ZXIpKTsKICAgICBkaXNwYXRjaC0+YXBwZW5kU3VjY2Vzc29yKEZy
ZXF1ZW50ZWRCbG9jayhhZGRUb0RhdGEpKTsKQEAgLTEzMDI5LDkgKzEzMDI5LDE1IEBAIHZvaWQg
dGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cioganVt
cFRhYmxlID0gYml0d2lzZV9jYXN0PE1hY3JvQXNzZW1ibGVyQ29kZVB0cio+KAogICAgICAgICAg
ICAgICAgIHBhcmFtcy5wcm9jKCkuYWRkRGF0YVNlY3Rpb24oc2l6ZW9mKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cikgKiBsYWJlbHMuc2l6ZSgpKSk7CiAKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFibGUpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsK
LSAgICAgICAgICAgIGppdC5qdW1wKENDYWxsSGVscGVyczo6QmFzZUluZGV4KHBhcmFtcy5ncFNj
cmF0Y2goMCksIHBhcmFtc1swXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjp0aW1lc1B0cigpKSk7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdwU2NyYXRj
aCgwKTsKKyAgICAgICAgICAgIEdQUlJlZyBkZXNjcmFtYmxlcktleSA9IHBhcmFtcy5ncFNjcmF0
Y2goMSk7CisKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihqdW1wVGFibGUpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1ibGVyS2V5KTsK
KyAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaCwg
cGFyYW1zWzBdLmdwcigpLCBDQ2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKKyAg
ICAgICAgICAgIGppdC54b3I2NChkZXNjcmFtYmxlcktleSwgc2NyYXRjaCk7CisgICAgICAgICAg
ICBqaXQuanVtcChzY3JhdGNoKTsKKwogICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKAogICAg
ICAgICAgICAgICAgIFsmLCBqdW1wVGFibGUsIGxhYmVsc10gKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGFiZWxzLnNpemUo
KTsgaS0tOykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjgsOCArMTY4LDggQEAg
dm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludAogICAgIENvZGVMb2NhdGlv
bkxhYmVsIHN0YXJ0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByZXZpb3VzTGFiZWwpOwogICAg
IENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjdXJyZW50TGFi
ZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7Ci0gICAgQVNTRVJUKGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KGVuZC5leGVjdXRhYmxlQWRkcmVzcygpKSA+PSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihzdGFydC5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgZGlzYXNzZW1i
bGUoc3RhcnQsIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVuZC5leGVjdXRhYmxlQWRkcmVzcygp
KSAtIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBw
cmVmaXhCdWZmZXIuZ2V0KCksIG91dCk7CisgICAgQVNTRVJUKGVuZC5leGVjdXRhYmxlQWRkcmVz
czx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpKTsK
KyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmdl
dCgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI1MzMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtC
dWZmZXImIGxpbmtCCiAgICAgCiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2pzQ2FsbHMpIHsK
ICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKnJlY29yZC5pbmZvOwotICAgICAgICBsaW5r
QnVmZmVyLmxpbmsocmVjb3JkLnNsb3dDYWxsLCBGdW5jdGlvblB0cih2bSgpLT5nZXRDVElTdHVi
KGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgICAgIGxpbmtCdWZmZXIubGluayhyZWNvcmQuc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKHZtKCkt
PmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgIGlu
Zm8uc2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtC
dWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKHJlY29yZC5zbG93Q2FsbCkpLAogICAgICAgICAgICAg
Q29kZUxvY2F0aW9uTGFiZWwobGlua0J1ZmZlci5sb2NhdGlvbk9mKHJlY29yZC50YXJnZXRUb0No
ZWNrKSksCkBAIC01MjUsOSArNTI1LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0
aW9uKCkKICAgICAKICAgICBtX2ppdENvZGUtPnNocmlua1RvRml0KCk7CiAgICAgY29kZUJsb2Nr
KCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7Ci0gICAgCi0gICAgbGlua0J1
ZmZlci0+bGluayhtX2NhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0cigodm0oKS0+Z2V0Q1RJU3R1
Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAg
ICAKKworICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIo
dm0oKS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKS5jb2RlKCkpKTsKKwogICAgIGRp
c2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2YobV9hcml0eUNoZWNrKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAyOSw4ICsyMDI5LDggQEAgY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25GaW5kU3dpdGNoSQogICAgIGRvdWJsZSBhc0RvdWJsZSA9IHZhbHVlLmFzRG91Ymxl
KCk7CiAgICAgaW50MzJfdCBhc0ludDMyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYXNEb3VibGUp
OwogICAgIGlmIChhc0RvdWJsZSA9PSBhc0ludDMyKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcio+KHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4odGFibGUuY3RpRGVmYXVsdC5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIHRhYmxlLmN0aUZvclZhbHVlKGFzSW50MzIp
LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOworICAgIHJldHVybiB0YWJsZS5jdGlEZWZhdWx0
LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN3aXRjaFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCB0YWJsZUluZGV4LCBK
U1N0cmluZyogc3RyaW5nKQpAQCAtMjAzOCw3ICsyMDM4LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25Td2l0Y2hTdHJpbgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNoYXIqPihleGVjLT5jb2RlQmxvY2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHRh
YmxlSW5kZXgpLmN0aUZvclZhbHVlKHN0cmluZy0+dmFsdWUoZXhlYykuaW1wbCgpKS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICByZXR1cm4gZXhlYy0+Y29kZUJsb2NrKCktPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShzdHJpbmctPnZhbHVlKGV4ZWMpLmlt
cGwoKSkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiB9CiAKIGludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQoRXhlY1N0YXRlKiBl
eGVjLCBzaXplX3QgdGFibGVJbmRleCwgSlNTdHJpbmcqIHN0cmluZykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAy
MjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTc3MCw3ICs5NzcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoSW50SnVtcCgKLSAgICBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBz
Y3JhdGNoKQorICAgIFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0
Y2gsIEdQUlJlZyBkZXNjcmFtYmxlcktleVNjcmF0Y2gpCiB7CiAgICAgU2ltcGxlSnVtcFRhYmxl
JiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNo
VGFibGVJbmRleCk7CiAgICAgdGFibGUuZW5zdXJlQ1RJVGFibGUoKTsKQEAgLTk3NzgsOCArOTc3
OCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKICAgICBhZGRC
cmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWws
IHZhbHVlLCBJbW0zMih0YWJsZS5jdGlPZmZzZXRzLnNpemUoKSkpLAogICAgICAgICBkYXRhLT5m
YWxsVGhyb3VnaC5ibG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyYW1ibGVyS2V5U2NyYXRj
aCk7IC8vIFBsYWNhdGUgdGhlIDMyLWJpdCBidWlsZC4KKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KGdfbWFzbVNjcmFtYmxlZFB0cktleSksIGRlc2NyYW1i
bGVyS2V5U2NyYXRjaCk7CisjZW5kaWYKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIodGFi
bGUuY3RpT2Zmc2V0cy5iZWdpbigpKSwgc2NyYXRjaCk7CiAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIHZhbHVlLCBKSVRDb21waWxlcjo6dGltZXNQdHIo
KSksIHNjcmF0Y2gpOworICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQueG9yNjQo
ZGVzY3JhbWJsZXJLZXlTY3JhdGNoLCBzY3JhdGNoKTsKKyNlbmRpZgogICAgIG1faml0Lmp1bXAo
c2NyYXRjaCk7CiAgICAgZGF0YS0+ZGlkVXNlSnVtcFRhYmxlID0gdHJ1ZTsKIH0KQEAgLTk3OTAs
NyArOTc5OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW0oTm9kZSoKICAg
ICBjYXNlIEludDMyVXNlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwot
ICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwgdGVtcC5ncHIoKSk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICAgICAgZW1pdFN3aXRjaElu
dEp1bXAoZGF0YSwgdmFsdWUuZ3ByKCksIHRlbXAuZ3ByKCksIHRlbXAyLmdwcigpKTsKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk3OTgsMTUgKzk4
MDcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgIGNh
c2UgVW50eXBlZFVzZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9
IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gdGVtcC5ncHIo
KTsKLSAgICAgICAgCisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHRlbXAyLmdwcigpOworCiAg
ICAgICAgIHZhbHVlLnVzZSgpOwogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RJbnQgPSBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpCZWxvdywgdmFsdWVSZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3Mu
Z3ByKCksIHNjcmF0Y2gpOworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJl
Z3MuZ3ByKCksIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAgICAgbm90SW50LmxpbmsoJm1faml0
KTsKICAgICAgICAgYWRkQnJhbmNoKAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KApA
QCAtOTgxOSw3ICs5ODMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShO
b2RlKgogI2Vsc2UKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90SW50ID0gbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlUmVncy50YWdH
UFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIGVtaXRTd2l0
Y2hJbnRKdW1wKGRhdGEsIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gpOworICAgICAg
ICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNo
LCBzY3JhdGNoMik7CiAgICAgICAgIG5vdEludC5saW5rKCZtX2ppdCk7CiAgICAgICAgIGFkZEJy
YW5jaCgKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKApAQCAtOTg0Myw3ICs5ODU0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoCi0gICAgU3dpdGNoRGF0YSogZGF0
YSwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICBTd2l0Y2hEYXRhKiBkYXRhLCBH
UFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBHUFJSZWcgc2NyYXRjaDIpCiB7CiAgICAgYWRk
QnJhbmNoKAogICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAgLTk4NzQsNyArOTg4NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW4KICAgICBtX2ppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZSksIHNjcmF0Y2gpOwogICAgIAogICAgIHJlYWR5
LmxpbmsoJm1faml0KTsKLSAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCBzY3JhdGNoLCB2YWx1
ZSk7CisgICAgZW1pdFN3aXRjaEludEp1bXAoZGF0YSwgc2NyYXRjaCwgdmFsdWUsIHNjcmF0Y2gy
KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZSogbm9kZSwg
U3dpdGNoRGF0YSogZGF0YSkKQEAgLTk4ODMsMTQgKzk4OTQsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogICAgIGNhc2UgU3RyaW5nVXNlOiB7CiAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAgICAKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAyKHRoaXMpOworCiAgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgCisgICAgICAgIEdQUlJl
ZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCiAgICAgICAgIG9wMS51c2UoKTsKIAogICAgICAg
ICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG9wMUdQUik7Ci0gICAgICAgIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFHUFIsIHRlbXBHUFIpOworICAgICAgICBlbWl0
U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxR1BSLCB0ZW1wR1BSLCB0ZW1wMkdQUik7CiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTk4OTgsMTcgKzk5MTEsMTkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgCisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
Mih0aGlzKTsKKwogICAgICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgCisgICAg
ICAgIEdQUlJlZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCiAgICAgICAgIG9wMS51c2UoKTsK
ICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxUmVn
cyksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5j
aChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFSZWdzLnBheWxvYWRHUFIoKSksIGRhdGEtPmZh
bGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5n
SnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CisgICAgICAgIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUiwg
dGVtcDJHUFIpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4NTgsOSArMjg1OCw5IEBAIHB1YmxpYzoKICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0
OwogICAgIH07CiAgICAgCi0gICAgdm9pZCBlbWl0U3dpdGNoSW50SnVtcChTd2l0Y2hEYXRhKiwg
R1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCk7CisgICAgdm9pZCBlbWl0U3dpdGNoSW50SnVt
cChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgR1BSUmVnIHNjcmF0
Y2gyKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hJbW0oTm9kZSosIFN3aXRjaERhdGEqKTsKLSAgICB2
b2lkIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCk7CisgICAgdm9pZCBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoU3dpdGNo
RGF0YSosIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEdQUlJlZyBzY3JhdGNoMik7CiAg
ICAgdm9pZCBlbWl0U3dpdGNoQ2hhcihOb2RlKiwgU3dpdGNoRGF0YSopOwogICAgIHZvaWQgZW1p
dEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vyc2UoCiAgICAgICAgIFN3aXRjaERhdGEqLCBjb25zdCBW
ZWN0b3I8U3RyaW5nU3dpdGNoQ2FzZT4mLCB1bnNpZ25lZCBudW1DaGVja2VkLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNw
cAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDcg
QEAgdm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZAogICAgIGlmICh0cnlU
b0Rpc2Fzc2VtYmxlKGNvZGVQdHIsIHNpemUsIHByZWZpeCwgb3V0KSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3Ig
cmFuZ2UgJXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0
YXRpY19jYXN0PGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgc2l6ZSk7Cisg
ICAgb3V0LnByaW50ZigiJXNkaXNhc3NlbWJseSBub3QgYXZhaWxhYmxlIGZvciByYW5nZSAlcC4u
LiVwXG4iLCBwcmVmaXgsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIHNpemUpOwogfQogCiBuYW1lc3BhY2UgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2
RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDEzICszNywxMyBAQCBib29sIHRyeVRvRGlzYXNzZW1ibGVXaXRoVURpczg2
KGNvbnN0IE1hCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNz
ZW1ibGVyKTsKLSAgICB1ZF9zZXRfaW5wdXRfYnVmZmVyKCZkaXNhc3NlbWJsZXIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBzaXplKTsK
KyAgICB1ZF9zZXRfaW5wdXRfYnVmZmVyKCZkaXNhc3NlbWJsZXIsIGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3M8dW5zaWduZWQgY2hhcio+KCksIHNpemUpOwogI2lmIENQVShYODZfNjQpCiAgICAg
dWRfc2V0X21vZGUoJmRpc2Fzc2VtYmxlciwgNjQpOwogI2Vsc2UKICAgICB1ZF9zZXRfbW9kZSgm
ZGlzYXNzZW1ibGVyLCAzMik7CiAjZW5kaWYKLSAgICB1ZF9zZXRfcGMoJmRpc2Fzc2VtYmxlciwg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgdWRfc2V0X3BjKCZkaXNhc3NlbWJsZXIsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3M8dWlu
dHB0cl90PigpKTsKICAgICB1ZF9zZXRfc3ludGF4KCZkaXNhc3NlbWJsZXIsIFVEX1NZTl9BVFQp
OwogICAgIAogICAgIHVpbnQ2NF90IGN1cnJlbnRQQyA9IGRpc2Fzc2VtYmxlci5wYzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMjI1MzMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUyLDggKzE1Miw4IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVw
b2ludDo6UmUKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGluZygp
KQogICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlx
dWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwgV1RGTW92
ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikpOwogCi0g
ICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8R2VuZXJhdGVkRnVuY3Rp
b24+KAotICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9u
T2Yoc3RhdGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKSk7CisgICAgQ29kZUxvY2F0aW9uTGFi
ZWwgbGFiZWwgPSBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Yo
c3RhdGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKTsKKyAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5j
dGlvbiA9IGxhYmVsLmV4ZWN1dGFibGVBZGRyZXNzPEdlbmVyYXRlZEZ1bmN0aW9uPigpOwogICAg
IHN0YXRlLmppdENvZGUtPmluaXRpYWxpemVCM0J5cHJvZHVjdHMoc3RhdGUucHJvYy0+cmVsZWFz
ZUJ5cHJvZHVjdHMoKSk7CiAKICAgICBmb3IgKGF1dG8gcGFpciA6IHN0YXRlLmdyYXBoLm1fZW50
cnlwb2ludEluZGV4VG9DYXRjaEJ5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcg
Kzg0LDcgQEAgSklUQ29kZTo6Q29kZVB0ciBKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbAogCiB2b2lk
KiBKSVRDb2RlOjpleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYWRkcmVzc0ZvckNhbGwuZXhlY3V0
YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIG1fYWRkcmVzc0ZvckNhbGwuZXhl
Y3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgKyBvZmZzZXQ7CiB9CiAKIHZvaWQqIEpJVENvZGU6OmRh
dGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9u
Q29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAg
ICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVy
RnJhbWUsIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwotICAgICAgICAg
ICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZtLmdldENU
SVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7
CisgICAgICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0
cigodm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKSkuY29kZSgpKSk7CiAgICAgICAg
ICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjEsNyArMTgyMSw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIHNsb3dQYXRoRW5kID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
bGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzcygpKSAt
IHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpIC0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3RhcnQpLmV4ZWN1
dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJ
Qy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CiAjZW5kaWYKQEAgLTE4MzUsNyArMTgzNSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1B
VEhfSUNfU1RBVFMpCiAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVFbmQgPSBqaXQubGFiZWwo
KTsKICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFy
dCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRy
ZXNzPGNoYXIqPigpOwogICAgICAgICAgICAgICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29k
ZVNpemUgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTkxNCw3ICsx
OTE0LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhFbmQgPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0
PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhFbmQpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0
aFN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhlY3V0
YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFy
dCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNpemU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKICNlbmRpZgpAQCAtMTkyOCw3ICsxOTI4LDcgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUVuZCA9IGpp
dC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0
aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKGlu
bGluZVN0YXJ0KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lRW5kKS5leGVjdXRhYmxlQWRk
cmVzczxjaGFyKj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0
YWJsZUFkZHJlc3M8Y2hhcio+KCk7CiAgICAgICAgICAgICAgICAgICAgIG1hdGhJQy0+bV9nZW5l
cmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAgICAgICAgICAgICAgIH0pOwogI2VuZGlmCkBAIC02
NzY1LDcgKzY3NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBsaW5rQ2FsbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdl
dENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
Lmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChzbG93Q2FsbCkpLApAQCAtNzA3Niw3ICs3MDc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbGlua0NhbGwgPQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2FsbCwg
RnVuY3Rpb25QdHIobGlua0NhbGwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2Fs
bCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldENhbGxMb2Nh
dGlvbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwobGlu
a0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKSwKQEAgLTczNDcsNyArNzM0Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGxp
bmtDYWxsID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9uUHRyKGxpbmtDYWxsLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhzbG93Q2Fs
bCwgRnVuY3Rpb25QdHIobGlua0NhbGwpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKGxpbmtCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKHNsb3dDYWxsKSksCkBAIC03NjMwLDcgKzc2MzAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICBbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBsaW5rQ2FsbCA9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dl
bmVyYXRvcikuY29kZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KHNsb3dDYWxsLCBGdW5jdGlvblB0cihsaW5rQ2FsbC5leGVjdXRhYmxlQWRkcmVzcygpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoc2xvd0NhbGwsIEZ1bmN0aW9u
UHRyKGxpbmtDYWxsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0Q2FsbExvY2F0aW9ucygKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFy
Q2FsbChzbG93Q2FsbCkpLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjI1MzMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBPcGNvZGVJRCBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQKICAgICAvLyB0aGUgTExJbnQgY29kZSBmb3IgdGhlIG9wY29kZSAoc2Vl
IHRoZSBFTUJFRF9PUENPREVfSURfSUZfTkVFREVEIG1hY3JvCiAgICAgLy8gaW4gTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHApLgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wY29kZSkpOwotICAgIGludDMyX3QqIG9wY29kZUlEQWRkcmVz
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGNvZGVQdHIuZGF0YUxvY2F0aW9uKCkpIC0g
MTsKKyAgICBpbnQzMl90KiBvcGNvZGVJREFkZHJlc3MgPSBjb2RlUHRyLmRhdGFMb2NhdGlvbjxp
bnQzMl90Kj4oKSAtIDE7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBzdGF0aWNfY2FzdDxPcGNv
ZGVJRD4oKm9wY29kZUlEQWRkcmVzcyk7CiAgICAgQVNTRVJUKG9wY29kZUlEIDwgTlVNQkVSX09G
X0JZVEVDT0RFX0lEUyk7CiAgICAgcmV0dXJuIG9wY29kZUlEOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRV
bmFyeU1hdGhJQzwKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIGlubGluZUVu
ZCA9IGxhYmVsKCk7CiAgICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihpbmxpbmVFbmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CisgICAgICAgIHNpemVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGlu
ZUVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Yo
aW5saW5lU3RhcnQpLmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMt
Pm1fZ2VuZXJhdGVkQ29kZVNpemUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtNzg5LDcg
Kzc4OSw3IEBAIHZvaWQgSklUOjplbWl0TWF0aElDRmFzdChKSVRCaW5hcnlNYXRoSUMKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKICAgICBhdXRvIGlubGluZUVuZCA9IGxhYmVsKCk7CiAgICAg
YWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHNpemVf
dCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihpbmxpbmVF
bmQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIu
bG9jYXRpb25PZihpbmxpbmVTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIHNp
emVfdCBzaXplID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGlubGluZUVuZCkuZXhlY3V0YWJsZUFk
ZHJlc3M8Y2hhcio+KCkgLSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoaW5saW5lU3RhcnQpLmV4ZWN1
dGFibGVBZGRyZXNzPGNoYXIqPigpOwogICAgICAgICBtYXRoSUMtPm1fZ2VuZXJhdGVkQ29kZVNp
emUgKz0gc2l6ZTsKICAgICB9KTsKICNlbmRpZgpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSklU
OjplbWl0TWF0aElDU2xvdyhKSVRVbmFyeU1hdGhJQzwKICNpZiBFTkFCTEUoTUFUSF9JQ19TVEFU
UykKICAgICBhdXRvIHNsb3dQYXRoRW5kID0gbGFiZWwoKTsKICAgICBhZGRMaW5rVGFzayhbPV0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxl
QWRkcmVzcygpKSAtIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xv
d1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIHNpemVfdCBzaXplID0g
bGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoRW5kKS5leGVjdXRhYmxlQWRkcmVzczxjaGFy
Kj4oKSAtIGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aFN0YXJ0KS5leGVjdXRhYmxlQWRk
cmVzczxjaGFyKj4oKTsKICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRlZENvZGVTaXplICs9IHNp
emU7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdE1h
dGhJQ1Nsb3coSklUQmluYXJ5TWF0aElDCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCiAgICAg
YXV0byBzbG93UGF0aEVuZCA9IGxhYmVsKCk7CiAgICAgYWRkTGlua1Rhc2soWz1dIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGxpbmtCdWZmZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkgLSBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5sb2NhdGlvbk9mKHNsb3dQYXRoU3Rh
cnQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihzbG93UGF0aEVuZCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hhcio+KCkgLSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Yoc2xvd1BhdGhTdGFydCkuZXhlY3V0YWJsZUFkZHJlc3M8Y2hh
cio+KCk7CiAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0ZWRDb2RlU2l6ZSArPSBzaXplOwogICAg
IH0pOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJl
dmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI3LDIwICsxMjcsMjAgQEAgSklUQ29kZVdpdGhD
b2RlUmVmOjp+SklUQ29kZVdpdGhDb2RlUmVmKAogdm9pZCogSklUQ29kZVdpdGhDb2RlUmVmOjpl
eGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9yZWYpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3JlZi5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkgKyBvZmZzZXQ7CisgICAgcmV0dXJuIG1fcmVmLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKSArIG9mZnNldDsKIH0KIAogdm9pZCogSklU
Q29kZVdpdGhDb2RlUmVmOjpkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwogICAgIEFTU0VSVChvZmZzZXQgPD0gc2l6ZSgpKTsg
Ly8gdXNlIDw9IGluc3RlYWQgb2YgPCBiZWNhdXNlIGl0IGlzIHZhbGlkIHRvIGFzayBmb3IgYW4g
YWRkcmVzcyBhdCB0aGUgZXhjbHVzaXZlIGVuZCBvZiB0aGUgY29kZS4KLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4obV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbigpKSArIG9mZnNl
dDsKKyAgICByZXR1cm4gbV9yZWYuY29kZSgpLmRhdGFMb2NhdGlvbjxjaGFyKj4oKSArIG9mZnNl
dDsKIH0KIAogdW5zaWduZWQgSklUQ29kZVdpdGhDb2RlUmVmOjpvZmZzZXRPZih2b2lkKiBwb2lu
dGVySW50b0NvZGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgIGludHB0cl90
IHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXJJbnRvQ29kZSkgLSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihtX3JlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisgICAgaW50cHRyX3QgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9p
bnRlckludG9Db2RlKSAtIG1fcmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzczxpbnRwdHJfdD4o
KTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyZXN1bHQpKSA9PSByZXN1bHQpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fz
c2VtYmxlci5jcHAJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2Myw3ICsx
NjMsNyBAQCB2b2lkIEpJVERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByCiB7CiAgICAg
Q29kZUxvY2F0aW9uTGFiZWwgZnJvbUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGZy
b20pOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIHRvTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0
aW9uT2YodG8pOwotICAgIGRpc2Fzc2VtYmxlKGZyb21Mb2NhdGlvbiwgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4odG9Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSAtIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGZyb21Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSwgIiAgICAgICAgIiwg
b3V0KTsKKyAgICBkaXNhc3NlbWJsZShmcm9tTG9jYXRpb24sIHRvTG9jYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3M8dWludHB0cl90PigpIC0gZnJvbUxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzPHVp
bnRwdHJfdD4oKSwgIiAgICAgICAgIiwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNw
cAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29k
ZU9yaWdpbk1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjA0LDggKzIwNCw4IEBAIFBDVG9Db2RlT3Jp
Z2luTWFwOjpQQ1RvQ29kZU9yaWdpbk1hcChQQ1QKICAgICAgICAgICAgIGNvZGVPcmlnaW5Db21w
cmVzc29yLndyaXRlPHVpbnRwdHJfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpKTsKICAgICB9OwogCi0gICAgbV9wY1JhbmdlU3RhcnQgPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihsaW5rQnVmZmVyLmxvY2F0aW9uT2YoYnVpbGRlci5tX2NvZGVS
YW5nZXMuZmlyc3QoKS5zdGFydCkuZGF0YUxvY2F0aW9uKCkpOwotICAgIG1fcGNSYW5nZUVuZCA9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGxpbmtCdWZmZXIubG9jYXRpb25PZihidWlsZGVyLm1f
Y29kZVJhbmdlcy5sYXN0KCkuZW5kKS5kYXRhTG9jYXRpb24oKSk7CisgICAgbV9wY1JhbmdlU3Rh
cnQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoYnVpbGRlci5tX2NvZGVSYW5nZXMuZmlyc3QoKS5z
dGFydCkuZGF0YUxvY2F0aW9uPHVpbnRwdHJfdD4oKTsKKyAgICBtX3BjUmFuZ2VFbmQgPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2YoYnVpbGRlci5tX2NvZGVSYW5nZXMubGFzdCgpLmVuZCkuZGF0YUxv
Y2F0aW9uPHVpbnRwdHJfdD4oKTsKICAgICBtX3BjUmFuZ2VFbmQgLT0gMTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBidWlsZGVyLm1fY29kZVJhbmdlcy5zaXplKCk7IGkrKykgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMjUzMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw4ICs5MSw3IEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9j
ayoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdl
dChjYWxsKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIGtleSA9IGtleS53aXRoQ2Fs
bFRhcmdldChuZXdDYWxsZWVGdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAg
bmV3Q2FsbGVlRnVuY3Rpb24gPSBGdW5jdGlvblB0cigKLSAgICAgICAgICAgIHRodW5rcy5nZXRT
bG93UGF0aENhbGxUaHVuayhrZXkpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgbmV3Q2FsbGVlRnVuY3Rpb24gPSBGdW5jdGlvblB0cih0aHVua3MuZ2V0U2xvd1BhdGhDYWxs
VGh1bmsoa2V5KS5jb2RlKCkpOwogICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAg
IFVOVVNFRF9QQVJBTShjb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMi0yMDE0LCAyMDE2LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMTMsNyArMjEzLDExIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2
aXJ0dWFsVGh1bmtGb3IoVk0KICAgICAKICAgICAvLyBOb3cgd2Uga25vdyB0aGF0IHdlIGhhdmUg
YSBDb2RlQmxvY2ssIGFuZCB3ZSdyZSBjb21taXR0ZWQgdG8gbWFraW5nIGEgZmFzdAogICAgIC8v
IGNhbGwuCi0gICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NChnX21hc21TY3JhbWJsZWRQdHJLZXkpLCBHUFJJbmZvOjpyZWdUMSk7
CisgICAgaml0LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7CisjZW5kaWYK
KwogICAgIC8vIE1ha2UgYSB0YWlsIGNhbGwuIFRoaXMgd2lsbCByZXR1cm4gYmFjayB0byBKSVQg
Y29kZS4KICAgICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgY2FsbENvZGUoaml0LmxhYmVsKCkpOwog
ICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1Q0KTsKQEAgLTExNTgs
NiArMTE2MiwxMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAg
ICAgICAgIEdQUkluZm86OnJlZ1QwKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9Db2RlID0g
aml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW02NChnX21hc21TY3JhbWJsZWRQdHJLZXkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgaml0
LnhvcjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisjZW5kaWYKICAgICBlbWl0
UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmNhbGwoR1BS
SW5mbzo6cmVnVDApOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEs
NyArMTkxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKIHsKICAgICBMTElO
VF9CRUdJTigpOwotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMl
dTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhl
Y3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICAg
Y3VycmVudFRocmVhZCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAg
ICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjE0LDcgKzIxNSw4IEBA
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWMKICAgICB9IHU7CiAgICAg
dS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICBkYXRhTG9nRigKLSAgICAg
ICAgIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDog
JTA4eDolMDh4OiAlc1xuIiwKKyAgICAgICAgIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6
dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICBj
dXJyZW50VGhyZWFkKCksCiAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVj
LAogICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBAIC0yMzAsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhYwogCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFj
ZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9nRigiJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwg
ZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGlu
IHByb2xvZ3VlIG9mICIsIGN1cnJlbnRUaHJlYWQoKSwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMp
OwogICAgIGRhdGFMb2coKmV4ZWMtPmNvZGVCbG9jaygpLCAiXG4iKTsKICAgICBMTElOVF9FTkRf
SU1QTCgpOwogfQpAQCAtMjQwLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZShFeGVjU3QKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0gICAgZGF0YUxvZ0YoIiVwIC8gJXA6IGlu
ICVzIG9mICIsIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlZD4g
JXAgLyAlcDogaW4gJXMgb2YgIiwgY3VycmVudFRocmVhZCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNv
bW1lbnQpOwogICAgIGRhdGFMb2coKmNvZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlv
biAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51
bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhl
Y3V0YWJsZSwgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAg
LTI3Myw3ICsyNzUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zv
CiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7Ci0gICAgZGF0YUxvZ0Yo
IiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgIGRhdGFMb2dG
KCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAg
ICAgICAgY3VycmVudFRocmVhZCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAg
ICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0g
ZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjkxLDcgKzI5
NCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzcGVjaWFsX3RyYWNlKQogewotICAgIGRhdGFMb2dGKCIlcCAvICVwOiBleGVjdXRpbmcgc3Bl
Y2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICBkYXRhTG9n
RigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJl
dHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKICAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSwKQEAgLTEzMDUsNiArMTMwOSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5
cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShhc09i
amVjdChjYWxsZWUpKTsKICAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKICAgICAg
ICAgICAgIAorICAgICAgICAgICAgTWFzbVNjcmFtYmxlZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJs
ZWQoTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0NhbGxlZSwgTExJbnQ6OmdldENv
ZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTMyOCw2ICsxMzMzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgICAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwogCisgICAgICAgIE1hc21TY3JhbWJsZWRQ
dHI6OmFzc2VydElzTm90U2NyYW1ibGVkKExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgZXhlY0Nh
bGxlZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwogICAgIH0K
ICAgICAKQEAgLTEzNjgsNiArMTM3NCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0
VXBDYWxsKEV4ZWMKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFy
Z2V0ID0gY29kZVB0cjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgTWFzbVNjcmFtYmxl
ZFB0cjo6YXNzZXJ0SXNOb3RTY3JhbWJsZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhyb3dTY29wZS5yZWxl
YXNlKCk7CkBAIC0xNDE4LDYgKzE0MjUsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNl
dFVwQ2FsbChFeGVjCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhl
YywgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKKyAgICBNYXNtU2NyYW1ibGVkUHRyOjphc3NlcnRJ
c05vdFNjcmFtYmxlZChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMTk0Niw4ICsxOTQ2LDE1IEBAIG1hY3JvIGRvQ2FsbChzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CiAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBzdG9y
ZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgIG1vdmUgdDMsIHNw
Ci0gICAgcHJlcGFyZUNhbGwoTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3Qx
XSwgdDIsIHQzLCB0NCkKLSAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSkKKyAgICBpZiBYODZfNjRfV0lOCisgICAgICAgIHByZXBh
cmVDYWxsKExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0sIHQyLCB0Mywg
dDQpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihMTEludENhbGxMaW5rSW5mbzo6bWFjaGlu
ZUNvZGVUYXJnZXRbdDFdKQorICAgIGVsc2UKKyAgICAgICAgbG9hZHAgX2dfbWFzbVNjcmFtYmxl
ZFB0cktleSwgdDIKKyAgICAgICAgeG9ycCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVU
YXJnZXRbdDFdLCB0MgorICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDEsIHQzLCB0NCkKKyAgICAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKHQyKQorICAgIGVuZAogCiAub3BDYWxsU2xvdzoKICAgICBz
bG93UGF0aEZvckNhbGwoc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDIsNiArMzAyLDEyIEBAIGNsYXNzIEFic29sdXRlQWRkcmVzcwogICAgIGVuZAogZW5kCiAKK2Ns
YXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGludE1lbVJlZgorICAgICAgICAiKkNBU1Q8aW50
cHRyX3QqPigmI3tjTGFiZWx9KSIKKyAgICBlbmQKK2VuZAorCiAKICMKICMgTGVhIHN1cHBvcnQu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxl
LmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCkBAIC01OCw2ICs1OSw3IEBAIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZygpCiAKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplVGhyZWFk
aW5nT25jZUZsYWcsIFtdewogICAgICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCk7CiAgICAgICAgIE9wdGlv
bnM6OmluaXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAg
ICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCShyZXZpc2lvbiAyMjUzMzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNywxMiArMzI3LDEyIEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJz
dHJhY3RMb2MKIAogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkIDogbV91bmxpbmtlZFdhc21U
b1dhc21DYWxscykgewogICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogdW5saW5rZWQpIHsK
LSAgICAgICAgICAgICAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzczsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZXhlY3V0YWJsZUFkZHJlc3M7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kdWxlSW5mb3JtYXRpb24tPmlzSW1wb3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlv
bkluZGV4U3BhY2UoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FIGltcG9ydHMgY291bGQgaGF2ZSBiZWVuIGxpbmtlZCBpbiBCMywgaW5zdGVh
ZCBvZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludC4gVGhpcyBjb25kaXRpb24gc2hvdWxkIGJlIHJl
cGxhY2VkIGJ5IGEgUkVMRUFTRV9BU1NFUlQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjY0NjIKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZUFkZHJlc3Mg
PSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlQWRk
cmVzcyA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5hdChjYWxsLmZ1bmN0aW9uSW5kZXhTcGFjZSku
Y29kZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBleGVj
dXRhYmxlQWRkcmVzcyA9IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLmF0KGNhbGwuZnVuY3Rpb25J
bmRleFNwYWNlIC0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpKS0+
ZW50cnlwb2ludC5jb21waWxhdGlvbi0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVBZGRyZXNzID0gbV93YXNtSW50ZXJuYWxGdW5jdGlv
bnMuYXQoY2FsbC5mdW5jdGlvbkluZGV4U3BhY2UgLSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBv
cnRGdW5jdGlvbkNvdW50KCkpLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uLT5jb2RlKCk7CiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hOZWFyQ2FsbChjYWxsLmNhbGxMb2Nh
dGlvbiwgQ29kZUxvY2F0aW9uTGFiZWwoZXhlY3V0YWJsZUFkZHJlc3MpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxl
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUu
aAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpjYWxsZWUpOwogICAgIH0KIAotICAgIHZvaWQqIGVudHJ5cG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGlsYXRpb24tPmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOyB9CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnQoKSBj
b25zdCB7IHJldHVybiBtX2VudHJ5cG9pbnQuY29tcGlsYXRpb24tPmNvZGUoKTsgfQogCiAgICAg
UmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSB7IHJldHVybiAmbV9l
bnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnM7IH0KICAgICBJbmRleE9yTmFtZSBpbmRleE9y
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhPck5hbWU7IH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjUzMzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb250ZXh0KiBjb250
ZXh0LCBNCiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY2FsbGVlc1tjYWxsZWVJbmRl
eF0gPSBXVEZNb3ZlKHdhc21FbnRyeXBvaW50Q2FsbGVlKTsKLSAgICAgICAgICAgIG1fd2FzbUlu
ZGlyZWN0Q2FsbEVudHJ5UG9pbnRzW2NhbGxlZUluZGV4XSA9IG1fY2FsbGVlc1tjYWxsZWVJbmRl
eF0tPmVudHJ5cG9pbnQoKTsKKyAgICAgICAgICAgIG1fd2FzbUluZGlyZWN0Q2FsbEVudHJ5UG9p
bnRzW2NhbGxlZUluZGV4XSA9IG1fY2FsbGVlc1tjYWxsZWVJbmRleF0tPmVudHJ5cG9pbnQoKS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICB9KTsKIAogICAgICAgICBtX3dhc21Ub1dhc21F
eGl0U3R1YnMgPSBtX3BsYW4tPnRha2VXYXNtVG9XYXNtRXhpdFN0dWJzKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCShyZXZpc2lvbiAyMjUzMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCiAKICAgICBvbWdFbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdpc3RlcnMgPSBXVEZNb3Zl
KHBhcnNlQW5kQ29tcGlsZVJlc3VsdC52YWx1ZSgpLT5lbnRyeXBvaW50LmNhbGxlZVNhdmVSZWdp
c3RlcnMpOwogCi0gICAgdm9pZCogZW50cnlwb2ludDsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgZW50cnlwb2ludDsKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvZGVCbG9jay5wdHIoKSA9
PSBtX21vZHVsZS0+Y29kZUJsb2NrRm9yKG1vZGUoKSkpOwogICAgICAgICBSZWY8Q2FsbGVlPiBj
YWxsZWUgPSBDYWxsZWU6OmNyZWF0ZShXVEZNb3ZlKG9tZ0VudHJ5cG9pbnQpLCBmdW5jdGlvbklu
ZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25J
bmRleFNwYWNlKSk7CkBAIC0xMTksOSArMTE5LDkgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBp
bGF0aW9uRWZmb3J0KQogICAgICAgICBtX2NvZGVCbG9jay0+bV9vcHRpbWl6ZWRDYWxsZWVzW21f
ZnVuY3Rpb25JbmRleF0gPSBXVEZNb3ZlKGNhbGxlZSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBj
YWxsIDogdW5saW5rZWRDYWxscykgewotICAgICAgICAgICAgdm9pZCogZW50cnlwb2ludDsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50OwogICAgICAgICAgICAg
aWYgKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9u
KCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKQotICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQgPSBt
X2NvZGVCbG9jay0+bV93YXNtVG9XYXNtRXhpdFN0dWJzW2NhbGwuZnVuY3Rpb25JbmRleFNwYWNl
XS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50
ID0gbV9jb2RlQmxvY2stPm1fd2FzbVRvV2FzbUV4aXRTdHVic1tjYWxsLmZ1bmN0aW9uSW5kZXhT
cGFjZV0uY29kZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnQgPSBtX2NvZGVCbG9jay0+d2FzbUVudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNw
YWNlKGNhbGwuZnVuY3Rpb25JbmRleFNwYWNlKS5lbnRyeXBvaW50KCk7CiAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgcmVzZXRJ
bnN0cnVjdGlvbkNhY2hlT25BbGxUaHJlYWRzKCk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2Uo
KTsgLy8gVGhpcyBwcm9iYWJseSBpc24ndCBuZWNlc3NhcnkgYnV0IGl0J3MgZ29vZCB0byBiZSBw
YXJhbm9pZC4KIAotICAgIG1fY29kZUJsb2NrLT5tX3dhc21JbmRpcmVjdENhbGxFbnRyeVBvaW50
c1ttX2Z1bmN0aW9uSW5kZXhdID0gZW50cnlwb2ludDsKKyAgICBtX2NvZGVCbG9jay0+bV93YXNt
SW5kaXJlY3RDYWxsRW50cnlQb2ludHNbbV9mdW5jdGlvbkluZGV4XSA9IGVudHJ5cG9pbnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29k
ZUJsb2NrLT5tX2xvY2spOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogY2FsbHNp
dGVzKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbU9NR1BsYW5JbnRlcm5hbDo6
dmVyYm9zZSwgIkNvbnNpZGVyaW5nIHJlcGF0Y2hpbmcgY2FsbCBhdDogIiwgUmF3UG9pbnRlcihj
YWxsLmNhbGxMb2NhdGlvbi5kYXRhTG9jYXRpb24oKSksICIgdGhhdCB0YXJnZXRzICIsIGNhbGwu
ZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbC5mdW5jdGlvbklu
ZGV4U3BhY2UgPT0gZnVuY3Rpb25JbmRleFNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKFdhc21PTUdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJSZXBhdGNoaW5nIGNhbGwg
YXQ6ICIsIFJhd1BvaW50ZXIoY2FsbC5jYWxsTG9jYXRpb24uZGF0YUxvY2F0aW9uKCkpLCAiIHRv
ICIsIFJhd1BvaW50ZXIoZW50cnlwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG5JZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUmVwYXRjaGluZyBjYWxsIGF0OiAi
LCBSYXdQb2ludGVyKGNhbGwuY2FsbExvY2F0aW9uLmRhdGFMb2NhdGlvbigpKSwgIiB0byAiLCBS
YXdQb2ludGVyKGVudHJ5cG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaE5lYXJDYWxsKGNhbGwuY2FsbExvY2F0aW9u
LCBDb2RlTG9jYXRpb25MYWJlbChlbnRyeXBvaW50KSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAkocmV2aXNpb24gMjI1MzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2FzbVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNyArNjI3LDcgQEAgRXhwZWN0ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBCaW5kaW5nRgogICAgIGlmIChVTkxJS0VMWShwYXRjaEJ1
ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEJpbmRpbmdGYWlsdXJlOjpPdXRPZk1lbW9yeSk7CiAKLSAgICBwYXRjaEJ1ZmZlci5saW5rKHNs
b3dDYWxsLCBGdW5jdGlvblB0cih2bS0+Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xv
d0NhbGwsIEZ1bmN0aW9uUHRyKHZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoc2xvd0NhbGwpKTsKICAgICBDb2RlTG9jYXRpb25M
YWJlbCBob3RQYXRoQmVnaW4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZih0YXJnZXRUb0NoZWNrKSk7
CiAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9j
YXRpb25PZk5lYXJDYWxsKGZhc3RDYWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMjUz
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICB2bS53YXNtQ29udGV4dC5zdG9yZSh3YXNtSW5z
dGFuY2UsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmlu
c3RhbmNlKCkpOwogICAgIEFTU0VSVCgmd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5j
ZSgpID09IHZtLndhc21Db250ZXh0LmxvYWQoKSk7Ci0gICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVz
dWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgpLCAmdm0sICZw
cm90b0NhbGxGcmFtZSk7CisgICAgRW5jb2RlZEpTVmFsdWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRv
V2FzbSh3YXNtRnVuY3Rpb24tPmpzRW50cnlwb2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzKCksICZ2
bSwgJnByb3RvQ2FsbEZyYW1lKTsKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlz
IGluIGEgcmVnaXN0ZXIgb3Igb24gdGhlIHN0YWNrIHNpbmNlIGl0J3Mgc3RvcmVkIGluIFZlY3Rv
cjxKU1ZhbHVlPi4KICAgICAvLyBUaGlzIHByb2JhYmx5IGlzbid0IHN0cmljdGx5IG5lY2Vzc2Fy
eSwgc2luY2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHNob3VsZCBrZWVwIHRoZSBpbnN0YW5j
ZQogICAgIC8vIGFsaXZlLiBCdXQgaXQncyBnb29kIGh5Z2llbmUuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCShyZXZp
c2lvbiAyMjUzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2lu
Y2x1ZGUgIldhc21DYWxsZWUuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgV2FzbTo6V2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24gd2FzbUVudHJ5cG9pbnRMb2Fk
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3dhc21GdW5jdGlvbi5jb2RlOyB9CiAgICAgV2Fz
bTo6Q2FsbGFibGVGdW5jdGlvbiBjYWxsYWJsZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93
YXNtRnVuY3Rpb247IH0KIAotICAgIHZvaWQqIGpzRW50cnlwb2ludCgpIHsgcmV0dXJuIG1fanNF
bnRyeXBvaW50OyB9CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGpzRW50cnlwb2ludCgpIHsg
cmV0dXJuIG1fanNFbnRyeXBvaW50OyB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
V2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2Vi
QXNzZW1ibHlGdW5jdGlvbiwgbV93YXNtRnVuY3Rpb24pICsgV2FzbTo6Q2FsbGFibGVGdW5jdGlv
bjo6b2Zmc2V0T2ZXYXNtRW50cnlwb2ludExvYWRMb2NhdGlvbigpOyB9CiAKQEAgLTY2LDcgKzY3
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJdCdzIHNhZmUgdG8ganVzdCBob2xkIHRoZSByYXcgQ2Fs
bGFibGVGdW5jdGlvbi9qc0VudHJ5cG9pbnQgYmVjYXVzZSB3ZSBoYXZlIGEgcmVmZXJlbmNlCiAg
ICAgLy8gdG8gb3VyIEluc3RhbmNlLCB3aGljaCBwb2ludHMgdG8gdGhlIE1vZHVsZSB0aGF0IGV4
cG9ydGVkIHVzLCB3aGljaAogICAgIC8vIGVuc3VyZXMgdGhhdCB0aGUgYWN0dWFsIFNpZ25hdHVy
ZS9jb2RlIGRvZXNuJ3QgZ2V0IGRlYWxsb2NhdGVkLgotICAgIHZvaWQqIG1fanNFbnRyeXBvaW50
OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pzRW50cnlwb2ludDsKICAgICBXYXNtOjpD
YWxsYWJsZUZ1bmN0aW9uIG1fd2FzbUZ1bmN0aW9uOwogfTsKIApJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
NTMzMCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzEgQEAKKzIwMTctMTEtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIExldCdzIHNjcmFtYmxlIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB2YWx1ZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM1NzU4MzQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBp
emxvLCBTYWFtIEJhcmF0aSwgYW5kIEpGIEJhc3RpZW4uCisKKyAgICAgICAgSW50cm9kdWNlIGEg
U2NyYW1ibGVkUHRyIGNsYXNzIHRvIGZhY2lsaXRhdGUgc2NyYW1ibGluZy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvU2NyYW1ibGVkUHRyLmNwcDogQWRkZWQuCisgICAgICAgIChX
VEY6Om1ha2VTY3JhbWJsZWRQdHJLZXkpOgorICAgICAgICAqIHd0Zi9TY3JhbWJsZWRQdHIuaDog
QWRkZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6U2NyYW1ibGVkUHRyKToKKyAgICAg
ICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzU2NyYW1ibGVkIGNvbnN0KToK
KyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjpwYXJhbm9pZEFzc2VydElzTm90U2NyYW1ibGVk
IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2NyYW1ibGVkUHRyOjogY29uc3QpOgorICAgICAgICAo
V1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yLT4gY29uc3QpOgorICAgICAgICAoV1RGOjpTY3Jh
bWJsZWRQdHI6OnNjcmFtYmxlZEJpdHMgY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQ
dHI6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0
b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChXVEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGUpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQ
dHI6OmRlc2NyYW1ibGUpOgorCiAyMDE3LTExLTI5ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXVEYgLyBibWFsbG9jOiBkb24ndCB3cml0ZSB0byAweGJiYWRi
ZWVmIHdoZW4gQVNBTiBpcyBsb29raW5nCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQAog
CQlFMzhENkUyNzFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDZFMjYxRjU1MjJF
MzAwQTc1Q0M0IC8qIFN0cmluZ0J1aWxkZXJKU09OLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2
MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVl
LmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29h
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBB
RDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07CisJCUZFODU0
MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFNjcmFtYmxlZFB0ci5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC01OTcsNiArNTk4LDggQEAKIAkJRUY3
RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNzJCQkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyYW1ibGVkUHRyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURB
IC8qIFNjcmFtYmxlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jh
bWJsZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQw
MjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcmJpZEhlYXBBbGxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MCw2ICs5ODMsOCBAQAogCQkJCTE0Njk0MTk1MTZF
QUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCiAJCQkJMUEzNTI0QUExRDYz
QTJGRjAwMzE3MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0
IC8qIFNjb3BlZExhbWJkYS5oICovLAorCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBT
Y3JhbWJsZWRQdHIuY3BwICovLAorCQkJCUZFODU0MTZEMUZCRTI4NUMwMDhEQTVEQSAvKiBTY3Jh
bWJsZWRQdHIuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5j
cHAgKi8sCiAJCQkJMEY2NkIyODUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuaCAqLywKIAkJ
CQlBOEE0NzMwNjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi8sCkBAIC0x
NDU5LDYgKzE0NjQsNyBAQAogCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJl
YWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzE4MUM5NjFEMzA4MDBBMDBGNUZB
MTYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzRTRERDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBTY3JhbWJsZWRQdHIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTMxMUZCMTcxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDRBMTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJl
YWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEUxNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDIyNTMzMCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAg
U2hhcmVkVGFzay5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NvcGVkTGFtYmRh
LmgKKyAgICBTY3JhbWJsZWRQdHIuaAogICAgIFNlY29uZHMuaAogICAgIFNlZ21lbnRlZFZlY3Rv
ci5oCiAgICAgU21hbGxQdHJTZXQuaApAQCAtMjU2LDYgKzI1Nyw3IEBAIHNldChXVEZfU09VUkNF
UwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNI
QTEuY3BwCisgICAgU2NyYW1ibGVkUHRyLmNwcAogICAgIFNlY29uZHMuY3BwCiAgICAgU2l4Q2hh
cmFjdGVySGFzaC5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1NjcmFtYmxlZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2NyYW1ibGVk
UHRyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
YW1ibGVkUHRyLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VpbnRwdHJfdCBtYWtlU2NyYW1ibGVkUHRyS2V5
KCkKK3sKKyAgICB1aW50cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIo
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyAgICBrZXkgPSAoa2V5IDw8
IDMyKSBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyKCkpIDw8IDMpOworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBzY3JhbWJsZWQgYml0cyAocG9p
bnRlciBeIGtleSkgZG8gbm90IG1ha2UgYSB2YWxpZCBwb2ludGVyIGFuZAorICAgIC8vIGNhbm5v
dCBiZSAwLiBXZSBlbnN1cmUgdGhhdCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHNjcmFtYmxlZCBi
aXRzIGNhbiBhbHNvIGJlCisgICAgLy8gdXNlZCBmb3IgYSBub3RtYWwgemVybyBjaGVjayB3aXRo
b3V0IG5lZWRpbmcgdG8gZGVzY3JhbWJsZSBmaXJzdC4KKyAgICBrZXkgfD0gKHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMHgxKSA8PCA2Myk7CisjZWxzZQorICAgIGtleSA9IDA7IC8vIFNjcmFtYmxp
bmcgaXMgbm90IHN1cHBvcnRlZCBvbiAzMi1iaXQgb3Igbm9uLWRhcndpbiBwbGF0Zm9ybXMgeWV0
LgorI2VuZGlmCisgICAgcmV0dXJuIGtleTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1NjcmFtYmxlZFB0ci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1Nj
cmFtYmxlZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCisjZGVmaW5lIEVOQUJMRV9TQ1JBTUJMRURfUFRSX0FT
U0VSVFMgMAorCisvLyBOb3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9TKFdJ
TkRPV1MpIGJ1aWxkcyAoYmVjYXVzZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgorLy8gTWFr
ZSBzdXJlIGl0J3MgZGlzYWJsZWQuCisjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lORE9X
UykKKyN1bmRlZiBFTkFCTEVfU0NSQU1CTEVEX1BUUl9BU1NFUlRTCisjZGVmaW5lIEVOQUJMRV9T
Q1JBTUJMRURfUFRSX0FTU0VSVFMgMAorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCit1c2lu
ZyBTY3JhbWJsZWRQdHJCaXRzID0gdWludHB0cl90OworCit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtl
eT4KK2NsYXNzIFNjcmFtYmxlZFB0ciB7CitwdWJsaWM6CisgICAgU2NyYW1ibGVkUHRyKCkgeyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlPgorICAgIGV4cGxpY2l0IFNj
cmFtYmxlZFB0cihUIHB0cikKKyAgICAgICAgOiBtX3NjcmFtYmxlZEJpdHMoc2NyYW1ibGUocHRy
KSkKKyAgICB7CisgICAgICAgIEFTU0VSVChwdHIgJiYgbV9zY3JhbWJsZWRCaXRzKTsKKyAgICB9
CisKKyAgICBTY3JhbWJsZWRQdHIoY29uc3QgU2NyYW1ibGVkUHRyJikgPSBkZWZhdWx0OworCisg
ICAgZXhwbGljaXQgU2NyYW1ibGVkUHRyKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykK
KyAgICAgICAgOiBtX3NjcmFtYmxlZEJpdHMoc2NyYW1ibGVkQml0cykKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3NjcmFtYmxlZEJpdHMpOworICAgIH0KKworI2lmIEVOQUJMRShTQ1JBTUJMRURf
UFRSX0FTU0VSVFMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIHN0YXRp
YyBib29sIGlzU2NyYW1ibGVkKFQgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZSB8fCAocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4ZmZmZjAwMDAwMDAwMDAwMCk7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNTY3Jh
bWJsZWQoVCB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVChpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgorICAgIHN0YXRpYyB2b2lkIGFzc2VydElz
Tm90U2NyYW1ibGVkKFQgdmFsdWUpIHsgUkVMRUFTRV9BU1NFUlQoIWlzU2NyYW1ibGVkKHZhbHVl
KSk7IH0KKyNlbHNlCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBzdGF0aWMgdm9p
ZCBhc3NlcnRJc1NjcmFtYmxlZChUKSB7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9p
ZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKFQpIHsgfQorI2VuZGlmCisgICAg
dm9pZCBhc3NlcnRJc1NjcmFtYmxlZCgpIGNvbnN0IHsgYXNzZXJ0SXNTY3JhbWJsZWQobV9zY3Jh
bWJsZWRCaXRzKTsgfQorICAgIHZvaWQgYXNzZXJ0SXNOb3RTY3JhbWJsZWQoKSBjb25zdCB7IGFz
c2VydElzTm90U2NyYW1ibGVkKG1fc2NyYW1ibGVkQml0cyk7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQgPSB2b2lkKj4KKyAgICBUIGRlc2NyYW1ibGUoKSBjb25zdCB7IHJldHVybiBkZXNj
cmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2
YWx1ZT46OnR5cGU+CisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiBkZXNjcmFtYmxlPFQ+KG1fc2NyYW1ibGVkQml0cyk7IH0KKworICAgIFNjcmFtYmxlZFB0
ckJpdHMgc2NyYW1ibGVkQml0cygpIGNvbnN0IHsgcmV0dXJuIG1fc2NyYW1ibGVkQml0czsgfQor
CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zY3JhbWJsZWRCaXRzOyB9
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zY3JhbWJs
ZWRCaXRzOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyYW1ibGVkUHRyJiBiKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NyYW1ibGVkQml0cyA9PSBiLm1fc2NyYW1i
bGVkQml0czsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCos
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5
cGU+Ojp2YWx1ZT46OnR5cGU+CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikK
KyAgICB7CisgICAgICAgIHJldHVybiBkZXNjcmFtYmxlPFB0clR5cGU+KCkgPT0gYjsKKyAgICB9
CisKK3ByaXZhdGU6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVCBw
dHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpIF4ga2V5OyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUIGRl
c2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8VD4oc2NyYW1ibGVkQml0cyBeIGtleSk7IH0KKyNlbHNlCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY3JhbWJsZWRQdHJCaXRzIHNjcmFt
YmxlKFQgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8U2NyYW1ibGVkUHRyQml0cz4ocHRyKTsg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVCBk
ZXNjcmFtYmxlKFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGVkQml0cykgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PFQ+KHNjcmFtYmxlZEJpdHMpOyB9CisjZW5kaWYKKworICAgIFNjcmFtYmxlZFB0ckJp
dHMgbV9zY3JhbWJsZWRCaXRzIHsgMCB9OworfTsKKwordm9pZCBpbml0aWFsaXplU2NyYW1ibGVk
UHRyKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VTY3JhbWJsZWRQdHJLZXko
KTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U2NyYW1ibGVkUHRyOwordXNp
bmcgV1RGOjpTY3JhbWJsZWRQdHJCaXRzOwordXNpbmcgV1RGOjptYWtlU2NyYW1ibGVkUHRyS2V5
OworCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>328024</attachid>
            <date>2017-11-30 14:12:31 -0800</date>
            <delta_ts>2017-11-30 14:12:31 -0800</delta_ts>
            <desc>x86_64 benchmark results.</desc>
            <filename>bench-result-x86_64.txt</filename>
            <type>text/plain</type>
            <size>104354</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCA1ICYmIC4vcnVuLWpzYy1iZW5jaG1hcmtzIC0tb3V0ZXIgNiBiYXNlOmJhc2UvanNj
IG5ldzpuZXcvanNjCldhcm5pbmc6IGNvdWxkIG5vdCBpZGVudGlmeSBjaGVja291dCBsb2NhdGlv
biBmb3IgYmFzZQpXYXJuaW5nOiBjb3VsZCBub3QgaWRlbnRpZnkgY2hlY2tvdXQgbG9jYXRpb24g
Zm9yIG5ldwpXYXJuaW5nOiByZWZ1c2luZyB0byBydW4gSlNCZW5jaCBiZWNhdXNlIG5vdCBhbGwg
Vk1zIGFyZSBEdW1wUmVuZGVyVHJlZSBvciBXZWJLaXRUZXN0UnVubmVyLgpXYXJuaW5nOiByZWZ1
c2luZyB0byBydW4gRFNQSlMgYmVjYXVzZSBub3QgYWxsIFZNcyBhcmUgRHVtcFJlbmRlclRyZWUg
b3IgV2ViS2l0VGVzdFJ1bm5lci4KOTQwMC85NDAwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgICAgICAgICAgICAgICAg
ICAgICAgICAtZSAKR2VuZXJhdGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9Wb2x1bWVzL0RhdGEv
YmVuY2gvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRlclY4U3BpZGVyT2N0YW5lS3Jha2VuVGFp
bEJlbmNoTWljcm9iZW5jaG1hcmtzQXNtQmVuY2hDb21wcmVzc2lvbkJlbmNoU2l4U3BlZWRfQ2hy
b25vbl8yMDE3MTEzMF8xNDA1X3JlcG9ydC50eHQKQW5kIHJhdyBkYXRhIGF0IC9Wb2x1bWVzL0Rh
dGEvYmVuY2gvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRlclY4U3BpZGVyT2N0YW5lS3Jha2Vu
VGFpbEJlbmNoTWljcm9iZW5jaG1hcmtzQXNtQmVuY2hDb21wcmVzc2lvbkJlbmNoU2l4U3BlZWRf
Q2hyb25vbl8yMDE3MTEzMF8xNDA1Lmpzb24KCkJlbmNobWFyayByZXBvcnQgZm9yIFN1blNwaWRl
ciwgTG9uZ1NwaWRlciwgVjhTcGlkZXIsIE9jdGFuZSwgS3Jha2VuLCBUYWlsQmVuY2gsIE1pY3Jv
YmVuY2htYXJrcywgQXNtQmVuY2gsIENvbXByZXNzaW9uQmVuY2gsIGFuZCBTaXhTcGVlZCBvbiBD
aHJvbm9uIChNYWNCb29rUHJvMTEsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1ZvbHVtZXMv
RGF0YS9iZW5jaC9iYXNlL2pzYwoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL2JlbmNoL25ldy9qc2MK
CkNvbGxlY3RlZCA2IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA2IFZNIGludm9jYXRp
b25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUg
bWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlv
biBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rp
b24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBl
eGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNv
bmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljk5MzIrLTEuMjU3NyAgICAgICAgICAgIDYu
NzAyNCstMS4xNTM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzNHggZmFzdGVyCiAgIDNkLW1vcnBo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTk4NCstMS4yMDIx
ICAgICAgICAgICAgNy42NzI5Ky0wLjY3MTUgICAgICAgICAgbWlnaHQgYmUgMS4wNDI0eCBmYXN0
ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OC4xNjcyKy0yLjQxMTEgICAgICAgICAgICA3LjgyNzgrLTEuNjM5OSAgICAgICAgICBtaWdodCBi
ZSAxLjA0MzR4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjY4NDcrLTEuMTQ1OCAgICAgICAgICAgIDMuNTI3OCstMC41NDAwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDQ0NXggZmFzdGVyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguODE0NistMC4yOTg5ICAgICAgICAgICAgOC43
MzcxKy0wLjgzNTEgICAgICAgIAogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjk0ODgrLTAuNTAyNSAgICAgPyAgICAgIDQuMDI0MCstMC40Njgz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5MXggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTM5NistMC43MTkyICAgICAgICAgICAg
NC4yMTEzKy0wLjMzNjIgICAgICAgICAgbWlnaHQgYmUgMS4wNzc5eCBmYXN0ZXIKICAgYml0b3Bz
LTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgMS43OTU2Ky0wLjMw
MTcgICAgID8gICAgICAxLjkzNTIrLTAuNjA1NyAgICAgICAgPyBtaWdodCBiZSAxLjA3Nzd4IHNs
b3dlcgogICBiaXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0Ljk0MTQrLTAuMzMxMiAgICAgICAgICAgIDQuNDQxOCstMC42ODc0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMTEyNXggZmFzdGVyCiAgIGJpdG9wcy1iaXR3aXNlLWFuZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMDA2MCstMC4yNzIzICAgICAgICAgICAgMi45ODUxKy0wLjIzODcg
ICAgICAgIAogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjIyMzMrLTAuODYyNiAgICAgPyAgICAgIDUuNDc4NCstMC44MjQyICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQ4OHggc2xvd2VyCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuMjQ5MistMC40MDU3ICAgICA/ICAgICAgNC44MjU3Ky0xLjYz
NjUgICAgICAgID8gbWlnaHQgYmUgMS4xMzU3eCBzbG93ZXIKICAgY3J5cHRvLWFlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44NTg1Ky0xLjMwNjYgICAgID8gICAg
ICA3LjA0NzcrLTEuMTQ1MyAgICAgICAgPyBtaWdodCBiZSAxLjAyNzZ4IHNsb3dlcgogICBjcnlw
dG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ3MzErLTAu
Njc4NCAgICAgPyAgICAgIDUuMDQ3MistMC41OTQyICAgICAgICA/IG1pZ2h0IGJlIDEuMTI4NHgg
c2xvd2VyCiAgIGNyeXB0by1zaGExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuODYzNCstMC4zNjM2ICAgICA/ICAgICAgNC45MTY3Ky0wLjI1NjEgICAgICAgID8gbWln
aHQgYmUgMS4wMTEweCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQtdG9mdGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMS44ODIyKy0xLjUyNTkgICAgICAgICAgIDExLjIxMjYrLTEuNjY5
NyAgICAgICAgICBtaWdodCBiZSAxLjA1OTd4IGZhc3RlcgogICBkYXRlLWZvcm1hdC14cGFyYiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljc3NDMrLTEuMDYwOSAgICAgPyAgICAg
IDkuNDk5NCstMS4wMTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMjIxOXggc2xvd2VyCiAgIG1hdGgt
Y29yZGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTcyNCstMC41
NDM5ICAgICA/ICAgICAgNC42NTM0Ky0wLjU5OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTc3eCBz
bG93ZXIKICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi4xODIyKy0wLjcyMDkgICAgID8gICAgICA2Ljc4NTErLTIuNTAxMyAgICAgICAgPyBtaWdo
dCBiZSAxLjA5NzV4IHNsb3dlcgogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjk2NDUrLTAuMzg0MCAgICAgPyAgICAgIDMuMDMyOSstMC4zMzc0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzMXggc2xvd2VyCiAgIHJlZ2V4cC1kbmEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODg0MCstMS4wNTEyICAgICAgICAgICAg
OS4wNDcxKy0xLjI0MDIgICAgICAgICAgbWlnaHQgYmUgMS4wOTI1eCBmYXN0ZXIKICAgc3RyaW5n
LWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zNjkwKy0wLjkw
NzIgICAgID8gICAgICA3LjU3NzkrLTMuMzI5NyAgICAgICAgPyBtaWdodCBiZSAxLjE4OTh4IHNs
b3dlcgogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA4LjgwODgrLTEuMzA2NyAgICAgPyAgICAgIDkuMDEwMystMS4xNDA5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIyOXggc2xvd2VyCiAgIHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTIuODE2MistMS40NzAwICAgICAgICAgICAxMS45MzQ3Ky0wLjgxOTcg
ICAgICAgICAgbWlnaHQgYmUgMS4wNzM5eCBmYXN0ZXIKICAgc3RyaW5nLXVucGFjay1jb2RlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi4xNzczKy0xLjM5NjggICAgICAgICAgIDI1
Ljg1MTQrLTAuMzUyNiAgICAgICAgICBtaWdodCBiZSAxLjAxMjZ4IGZhc3RlcgogICBzdHJpbmct
dmFsaWRhdGUtaW5wdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjEyNjMrLTUuNTkw
MiAgICAgICAgICAgIDguMDcyMSstMS44MTA1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMwNnggZmFz
dGVyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjE1ODIrLTAuMzQyNiAgICAgICAgICAgIDcuMTU2MSstMC4yMjEzICAgICAgICAgIG1pZ2h0
IGJlIDEuMDAwM3ggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApMb25nU3BpZGVyOgogICAzZC1jdWJl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTkxLjU1MDErLTguOTE2
NiAgICAgPyAgICA5OTQuMzMxOCstMjEuNTY2MCAgICAgICA/CiAgIDNkLW1vcnBoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MTIuMzQyNCstNy45NzU1ICAgICA/ICAg
IDgxMy44NDY1Ky0xMC4wOTU4ICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYzMC40NDA5Ky02LjU2MjQgICAgID8gICAgNjM3Ljc1MDIr
LTIxLjU1NzIgICAgICAgPyBtaWdodCBiZSAxLjAxMTZ4IHNsb3dlcgogICBhY2Nlc3MtYmluYXJ5
LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjU0LjIxMjgrLTguNDU1OCAgICAg
PyAgIDEyNTYuMzE5MystNy4zNDU3ICAgICAgICA/CiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzMjcuMTM0OCstMjIuMDE0OSAgICAgICAgIDMyMy43
MTMzKy0xNC4yODcwICAgICAgICAgbWlnaHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgYWNjZXNzLW5i
b2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwNy44OTk5Ky02LjgyMDQg
ICAgICAgICAgNzA3LjQ1NjUrLTMuMDA3MyAgICAgICAgCiAgIGFjY2Vzcy1uc2lldmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NTguOTI2MCstOS4xMTA0ICAgICAgICAgIDU1
OC4xMTc1Ky01LjQzMzggICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ0LjgyNTIrLTEuMTg3NCAgICAgPyAgICAgNDQuODg1OSstMC45
NTk1ICAgICAgICA/CiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMjIuMjg2NSstMi44MDYxICAgICA/ICAgIDEyMy43MDg5Ky02LjIzODQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTE2eCBzbG93ZXIKICAgYml0b3BzLW5zaWV2ZS1iaXRzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYyNC45MjA1Ky0zMS44OTU3ICAgICAgICAgNjA5Ljk1Nzgr
LTEwLjE1NjggICAgICAgICBtaWdodCBiZSAxLjAyNDV4IGZhc3RlcgogICBjb250cm9sZmxvdy1y
ZWN1cnNpdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjQzLjAxODkrLTExLjU1MzMgICAg
ICAgICA2MzUuNDAyOSstMTMuMzkzOCAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVyCiAg
IGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MjMuMzM5
OSstMTQuNzI5NCAgICAgICAgIDcxNi44NDA4Ky05LjQ1NjQgICAgICAgIAogICBjcnlwdG8tbWQ1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODE2LjEyMzgrLTkuNTQ0NSAg
ICAgICAgICA4MTYuMDQ1NystMjAuNDY5OSAgICAgICAKICAgY3J5cHRvLXNoYTEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg0My40OTAyKy0xMS44MTUwICAgID8gICAgODU3
Ljc4MTMrLTE3LjU2NjIgICAgICAgPyBtaWdodCBiZSAxLjAxNjl4IHNsb3dlcgogICBkYXRlLWZv
cm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYxLjM4MTgrLTM0Ljgy
MTIgICAgICAgICA0NTkuMDkyOSstNC4yODgyICAgICAgICAKICAgZGF0ZS1mb3JtYXQteHBhcmIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1Mi43MDU2Ky0zOC45MDE0ICAgICAgICAg
OTQ5LjQwODErLTIxLjMwMTQgICAgICAgCiAgIGhhc2gtbWFwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyMDcuOTQyMystNC44MTM4ICAgICA/ICAgIDIxMS42Nzg2Ky03
LjcxOTggICAgICAgID8gbWlnaHQgYmUgMS4wMTgweCBzbG93ZXIKICAgbWF0aC1jb3JkaWMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3My4wNzA4Ky0xMy41MTEwICAgID8g
ICAgNTc4LjQyNDUrLTE1LjIwNTcgICAgICAgPwogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzgyLjAyNTgrLTUuNDU2NCAgICAgPyAgICAzODIuNjAz
MCstNC44NzQwICAgICAgICA/CiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3NDQuMjY0MCstMTYuNTM3NCAgICAgICAgIDc0My41NTE3Ky0xMS4yOTI1
ICAgICAgIAogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDgwLjI0MzIrLTUuMjg0MCAgICAgICAgICA0NzkuNTMwOCstMTEuNjE3NyAgICAgICAKICAg
c3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3OC43MDI0
Ky04LjQzMzcgICAgID8gICAgNDg4LjM3ODMrLTkuMDkwMyAgICAgICAgPyBtaWdodCBiZSAxLjAy
MDJ4IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjIyLjQ4NjgrLTMuNTE0NCAgICAgPyAgICAyMjcuNDE0MSstMi45ODg1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDIyMXggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDg4LjA2NDgrLTIuMzkzNyAgICAgPyAgICA0ODkuMTY1NCst
Mi4wNjc1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAyM3ggc2xvd2VyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApW
OFNwaWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1Mi4wODAyKy0xLjA0ODkgICAgID8gICAgIDYzLjE5NTArLTE4LjkwNjcgICAgICAgPyBt
aWdodCBiZSAxLjIxMzR4IHNsb3dlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDkzLjM1NjYrLTUuODY4MSAgICAgICAgICAgODkuMDg0MSstNC43
MTY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4MHggZmFzdGVyCiAgIGVhcmxleS1ib3llciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIuMjYwNSstMi4wODczICAgICA/ICAg
ICA1Mi4yNzQ4Ky0xLjUwNTEgICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0Mi41MzYzKy0zLjAwMjAgICAgICAgICAgIDQxLjk3OTcr
LTMuMDE2MSAgICAgICAgICBtaWdodCBiZSAxLjAxMzN4IGZhc3RlcgogICByZWdleHAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjYyMDQrLTEuMzMxNSAgICAg
PyAgICAgNzUuODc3OCstMi40MTEzICAgICAgICA/CiAgIHJpY2hhcmRzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNjkuOTEzNistMi41Njc0ICAgICAgICAgICA2OC44
MDMyKy03LjI3ODkgICAgICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIKICAgc3BsYXkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS4zMTIzKy0xLjUxOTMg
ICAgICAgICAgIDUxLjMwMTgrLTEuMDQ0NiAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjM2MzQrLTEuMTk5NyAgICAgPyAgICAg
NjEuMTQyOSstMi4zMDM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyOXggc2xvd2VyCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Ug
ICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIApPY3RhbmU6CiAgIGVuY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4xOTk1OSstMC4wMDMzOSAgICA/ICAgICAwLjIwMTg2Ky0wLjAwMjgzICAg
ICAgID8gbWlnaHQgYmUgMS4wMTE0eCBzbG93ZXIKICAgZGVjcnlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU4ODk3Ky0wLjA4NjA2ICAgICAgICAgIDMuNTc3
OTErLTAuMDc4NzUgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgICAgMC4xNjI4MistMC4wMTE0MiAgICAgICAgICAwLjE2MTM1Ky0wLjAwNjAy
ICAgICAgIAogICBlYXJsZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMzczNTUrLTAuMDA3NjUgICAgICAgICAgMC4zNjkwMystMC4wMDQ3MCAgICAgICAgIG1p
Z2h0IGJlIDEuMDEyM3ggZmFzdGVyCiAgIGJveWVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi41MjA0NistMC4yMDYyNyAgICAgICAgICA2LjQxNDI2Ky0wLjEx
MTc1ICAgICAgICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgbmF2aWVyLXN0b2tlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICA2LjYzODkzKy0wLjA1MDc0ICAgICAgICAg
IDYuNTkzMTQrLTAuMDczMzkgICAgICAgCiAgIHJheXRyYWNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDIgICAgICAgMS4wNTQyNystMC4wMjE0MSAgICAgICAgICAxLjA0Mzg2Ky0w
LjAwODQ2ICAgICAgIAogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgIDAuMTI2NDMrLTAuMDAxMjQgICAgPyAgICAgMC4xMjY5MSstMC4wMDE5MSAgICAg
ICA/CiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAg
MC40OTA5NistMC4wMTQxMyAgICAgICAgICAwLjQ4ODI5Ky0wLjAwOTc3ICAgICAgIAogICByZWdl
eHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjQuMTQ5OTErLTAu
MzI3MzggICAgPyAgICAyNC4yNDgzMistMC4yMDEyNyAgICAgICA/CiAgIHBkZmpzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICA2NS4yMzc1NystMjguODA2NTMgICAg
ICAgIDUzLjg5MTUzKy0wLjYxNzIwICAgICAgICAgbWlnaHQgYmUgMS4yMTA1eCBmYXN0ZXIKICAg
bWFuZHJlZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDY4LjE3MjE4
Ky0wLjU4NDQ3ICAgICAgICAgNjguMTQ2NzYrLTAuNjIwOTUgICAgICAgCiAgIGdiZW11ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICA0OC43NjEwNCstMC44NTYxOSAg
ICA/ICAgIDQ5LjA3MzE5Ky0yLjA5NzI2ICAgICAgID8KICAgY2xvc3VyZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY1NTMzKy0wLjAxMjM5ICAgICAgICAgIDAu
NjUwMjUrLTAuMDAxNDQgICAgICAgCiAgIGpxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS4wODg4MystMC4xNDY3NCAgICAgICAgICA5LjA2NTU2Ky0wLjEy
NzczICAgICAgIAogICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgy
ICAgICAgMTMuMTIwOTgrLTAuNTQ5NTggICAgPyAgICAxMy4xNjM3MistMC4zODQ1MyAgICAgICA/
CiAgIHpsaWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDQyNy4w
MDYyNCstMy43MjYxMSAgICAgICAgNDI2LjE5MDIxKy0zLjM3MDYxICAgICAgIAogICB0eXBlc2Ny
aXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICA5NzEuNTM5MzUrLTE4LjU3
NTM2ICAgPyAgIDk5My45NzQ2OSstMzAuODI2MDQgICAgICA/IG1pZ2h0IGJlIDEuMDIzMXggc2xv
d2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDcuMTIyMTUrLTAuMTYxMzcgICAgICAgICAgNy4wNTI1MSstMC4wMzYzMCAgICAgICAgIG1pZ2h0
IGJlIDEuMDA5OXggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAgIGFpLWFzdGFyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4LjgxOCstMy40MjIgICAg
ICAgICAgICAxMjUuODcxKy0yLjEyMyAgICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBmYXN0ZXIK
ICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQu
OTc3Ky0xLjU3NyAgICAgID8gICAgICA1NS4yMTArLTAuNjEzICAgICAgICAgPwogICBhdWRpby1k
ZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OS4wOTMrLTEuNzg3
ICAgICAgICAgICAgMTQ3LjAwOSstNC45NzYgICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MnggZmFz
dGVyCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM5Ljc1MCstMC41NDYgICAgICA/ICAgICAgNDEuMDA1Ky0yLjE0NSAgICAgICAgID8gbWlnaHQg
YmUgMS4wMzE2eCBzbG93ZXIKICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjAuMzMzKy0wLjc0MSAgICAgID8gICAgICA2MS4wMTcrLTMuMTM5ICAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMTN4IHNsb3dlcgogICBpbWFnaW5nLWRhcmtyb29tICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MS4yMDUrLTAuOTAwICAgICAgICAgICAgIDgw
LjQwMystMi45OTIgICAgICAgICAKICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNzMuOTE5Ky0yLjIzMCAgICAgID8gICAgICA4Mi44MTArLTE3LjEz
MiAgICAgICAgPyBtaWdodCBiZSAxLjEyMDN4IHNsb3dlcgogICBpbWFnaW5nLWdhdXNzaWFuLWJs
dXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5Mi4yNDgrLTEzLjg3MCAgICAgICAgICAg
IDg2LjA3NSstMy43MzYgICAgICAgICAgIG1pZ2h0IGJlIDEuMDcxN3ggZmFzdGVyCiAgIGpzb24t
cGFyc2UtZmluYW5jaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjkzMystMC40
ODEgICAgICA/ICAgICAgNDYuMDQ1Ky0xLjY5NyAgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ3eCBz
bG93ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjYuNDQ5Ky0wLjc1NiAgICAgID8gICAgICAyNi45MzQrLTAuNzA1ICAgICAgICAgPyBtaWdo
dCBiZSAxLjAxODN4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0OC44MDUrLTIuNDI2ICAgICAgICAgICAgIDQ3Ljk5MistMS41OTQg
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MHggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1jY20g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0Ljc4NistNi4yODggICAgICAgICAgICAg
NDMuMjgwKy0xLjkwNyAgICAgICAgICAgbWlnaHQgYmUgMS4wMzQ4eCBmYXN0ZXIKICAgc3RhbmZv
cmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTUuNjU2Ky0zNy45
ODAgICAgICAgICAgICA4Mi42MjArLTUuMDU1ICAgICAgICAgICBtaWdodCBiZSAxLjE1Nzh4IGZh
c3RlcgogICBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAg
ICAyNi45NDcrLTEuNzExICAgICAgICAgICAgIDI2LjUxMistMS4xNzEgICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE2NHggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2OS4xMzcrLTIuNTI1ICAgICAgICAgICAgIDY4LjA1NistMC45MDQg
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1OXggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAg
ICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApUYWlsQmVu
Y2g6CiAgIG4tYm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw
NzEuNDk3MCstOS45MjI4ICAgICAgICAgMTA3MS4yOTU3Ky01LjkwOTkgICAgICAgIAogICBtZXJn
ZS1zb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzEwLjAxODArLTcu
MTg3MyAgICAgPyAgICA3MTUuMjcyOSstNi44MjI4ICAgICAgICA/CiAgIG1lcmdlLXNvcnQtY3Bz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODIuMDE1MSstMS45NjM5ICAgICA/
ICAgICA4OS4yOTAwKy0xMi41Mzg0ICAgICAgID8gbWlnaHQgYmUgMS4wODg3eCBzbG93ZXIKICAg
YmYtaW50ZXJwcmV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwMi43NzE0
Ky03LjgyNzMgICAgID8gICAgNDA3LjYzOTYrLTEwLjY0OTkgICAgICAgPyBtaWdodCBiZSAxLjAx
MjF4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM5OC4xMjIzKy0zLjE3MjIgICAgID8gICAgNDA4LjExMjIrLTEzLjQzMjAgICAgICAg
PyBtaWdodCBiZSAxLjAyNTF4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5l
dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTWljcm9iZW5jaG1hcmtz
OgogICBuZWdhdGl2ZS16ZXJvLW1vZHVsbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjY0NzErLTAuMDYzNCAgICAgICAgICAgIDAuNjI1OCstMC4wMjM2ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDM0MHggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAg
ICAgICAgICAgICAgIDUuNDgyOCstMC45ODc1ICAgICA/ICAgICAgNS41MzY5Ky0xLjE4MDcgICAg
ICAgID8KICAgb2JqZWN0LXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0NC41NjE1Ky0xLjQ2MTAgICAgID8gICAgIDQ2LjEwNDcrLTMuMDYzNyAgICAgICAgPyBtaWdo
dCBiZSAxLjAzNDZ4IHNsb3dlcgogICBkaXJlY3QtdGFpbC1jYWxsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDgwLjMxNTcrLTIuOTM4NyAgICAgPyAgICAgODIuMjQ1MCstMS42ODQy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0MHggc2xvd2VyCiAgIGludC1vci1vdGhlci1taW4tdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDcuMDQ3MystMC43MjEyICAgICAgICAgICAg
Ni42NTQzKy0xLjA0NTIgICAgICAgICAgbWlnaHQgYmUgMS4wNTkxeCBmYXN0ZXIKICAgaGFzLW93
bi1wcm9wZXJ0eS1uYW1lLWNhY2hlICAgICAgICAgICAgICAgICAgICAgICA3Mi4zNzUwKy0wLjgx
NjEgICAgID8gICAgIDczLjg5MjkrLTIuNDQ4NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTB4IHNs
b3dlcgogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjQ5NjMrLTAuMDQ0MSAgICAgPyAgICAgIDAuNTU1MSstMC4xNzM2ICAgICAgICA/IG1pZ2h0
IGJlIDEuMTE4M3ggc2xvd2VyCiAgIG9iamVjdC1pbnQtc3ViICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTkuMDk0NistMC45MTM2ICAgICA/ICAgICAxOS4yMDM5Ky0xLjEyMzYg
ICAgICAgID8KICAgaW50LW9yLW90aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAg
ICAgICAgNi43Nzc3Ky0xLjg4NTYgICAgICAgICAgICA2LjI0NzIrLTAuMzk4OSAgICAgICAgICBt
aWdodCBiZSAxLjA4NDl4IGZhc3RlcgogICBudW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVj
dGlvbiAgICAgICAgICAgICAgICA2Ljg0ODgrLTAuMzIxOSAgICAgPyAgICAgIDcuMzc2NystMC42
NzI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc3MXggc2xvd2VyCiAgIGRvdWJsZS1wb2xsdXRpb24t
Z2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDUwMistMC41Njg0ICAgICAgICAg
ICAgOS43MDAyKy0wLjY1MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMzYxeCBmYXN0ZXIKICAgbWFw
LWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NDkwKy0w
LjYwNTcgICAgICAgICAgICAyLjczMzkrLTAuMjg1NiAgICAgICAgICBtaWdodCBiZSAxLjA0MjF4
IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1kZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAg
ICAgIDE1LjcwOTkrLTAuODExOSAgICAgICAgICAgMTUuNjY3MistMS4xMjY1ICAgICAgICAKICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI3NjYrLTEuMTM4
MCAgICAgPyAgICAgIDMuNTc3MSstMS42OTIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxN3ggc2xv
d2VyCiAgIGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMjg1OCstMC4xODMzICAgICA/ICAgICAgMy41NjUyKy0wLjIxNjIgICAgICAgID8gbWlnaHQg
YmUgMS4wODUweCBzbG93ZXIKICAgaXMtYm9vbGVhbi1mb2xkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy42NjQxKy0wLjU2MTQgICAgICAgICAgICAzLjUxNTIrLTAuMzA3OCAg
ICAgICAgICBtaWdodCBiZSAxLjA0MjR4IGZhc3RlcgogICBzaW1wbGUtZ2V0dGVyLWFjY2VzcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjA5OTIrLTAuNTcwOSAgICAgICAgICAgMjEu
OTQ3MSstMC41NzkwICAgICAgICAKICAgcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNi42MTUwKy0wLjk3NjcgICAgICAgICAgIDE2LjUxMjIrLTAuMzQ5
OCAgICAgICAgCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3Ytbm8taW5saW5lICAgICAg
ICAgICAgIDUuMDUwNystMC43MzA1ICAgICA/ICAgICAgNS4wODE4Ky0wLjYwMTQgICAgICAgID8K
ICAgZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44
NDM4Ky0wLjg3MzkgICAgID8gICAgICA4LjI0ODYrLTEuNDczMSAgICAgICAgPyBtaWdodCBiZSAx
LjIwNTN4IHNsb3dlcgogICBzdHJpbmctY2hhci1jb2RlLWF0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIyLjA4MjQrLTAuNzE5NyAgICAgPyAgICAgMjIuMjc5NistMS4zMTQ5ICAgICAg
ICA/CiAgIGRpcmVjdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NzguNjA5NSstMi44NTQ0ICAgICAgICAgICA3NS4zNzgwKy00LjkwNzkgICAgICAgICAgbWlnaHQg
YmUgMS4wNDI5eCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC10cmVlICAgICAgICAgICAg
ICAgICAgICAgICAgICAyNS40MDA1Ky0xLjEyOTEgICAgID8gICAgIDI1LjY1NzErLTIuNTUyNSAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMDF4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuNDc1MSstMC4yMTcwICAgICA/ICAgICAgMS44MTk1
Ky0wLjM3NTkgICAgICAgID8gbWlnaHQgYmUgMS4yMzM1eCBzbG93ZXIKICAgcmVnZXhwLXNldC1s
YXN0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy42MTQxKy0wLjc4ODkgICAg
ID8gICAgIDE0LjA0NDgrLTEuMjU4MiAgICAgICAgPyBtaWdodCBiZSAxLjAzMTZ4IHNsb3dlcgog
ICB0YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1LjI0
NDUrLTIuMjM1MCAgICAgICAgICAgOTQuODc5NystMi40MzMxICAgICAgICAKICAgaW5mZXItb25l
LXRpbWUtY2xvc3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgOS44ODUxKy0xLjEyMjQg
ICAgID8gICAgIDEwLjMzMzIrLTAuNTMwMyAgICAgICAgPyBtaWdodCBiZSAxLjA0NTN4IHNsb3dl
cgogICB0by1udW1iZXItbnVtYmVyLXN0cmluZy1udW1iZXItc3RyaW5nICAgICAgICAgICAgICA0
LjkwNjgrLTAuOTgwMSAgICAgICAgICAgIDQuNTQzMistMC41ODE1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDgwMHggZmFzdGVyCiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIuMTk4OCstMS40MjgzICAgICA/ICAgICAzMi42NjY5Ky0xLjA1ODkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93ZXIKICAgY3VzdG9tLXNldHRlci1nZXR0ZXItYXMt
cHV0LWdldC1ieS1pZCAgICAgICAgICAgICAgMS4wMTc5Ky0wLjI5ODkgICAgICAgICAgICAwLjg2
MjIrLTAuMDM5OCAgICAgICAgICBtaWdodCBiZSAxLjE4MDZ4IGZhc3RlcgogICBtYWtlLWluZGV4
ZWQtc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjcxMjgrLTAuMzIwNyAg
ICAgICAgICAgIDQuNjY1MSstMC40NjU4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMnggZmFzdGVy
CiAgIG9iamVjdC1pbnQtYWRkLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcu
MzM4MCstMS42MTI0ICAgICAgICAgICAxNy4xMDc1Ky0wLjY0NTYgICAgICAgICAgbWlnaHQgYmUg
MS4wMTM1eCBmYXN0ZXIKICAgYXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNy41MzIyKy0wLjQzMzkgICAgID8gICAgICA4LjY1MjMrLTEuMTUxOSAgICAg
ICAgPyBtaWdodCBiZSAxLjE0ODd4IHNsb3dlcgogICBsYXJnZS1pbnQtbmVnICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjYwNzkrLTAuNzQ1OCAgICAgICAgICAgMTYuMTc3
OSstMS4wOTgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2NnggZmFzdGVyCiAgIGlzLW9iamVjdC1v
ci1udWxsLXRyaWNreS1mdW5jdGlvbiAgICAgICAgICAgICAgICAgIDUuMzAwNistMC40Nzg1ICAg
ICAgICAgICAgNS4wMDE1Ky0wLjM4OTAgICAgICAgICAgbWlnaHQgYmUgMS4wNTk4eCBmYXN0ZXIK
ICAgZ2NzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43
OTE1Ky0wLjYxMzUgICAgID8gICAgICA1LjgxNjIrLTAuMzIzNCAgICAgICAgPwogICBmb2xkLWdl
dC1ieS1pZC10by1tdWx0aS1nZXQtYnktb2Zmc2V0LXJhcmUtaW50ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNDc3NCstMS43Mjg4ICAg
ICA/ICAgICAxMy41MzgxKy0yLjIzMTggICAgICAgID8KICAgYXJyYXktcHVzaC0yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOS4zNDY3Ky0yLjE5MDAgICAgID8gICAgMTE5
LjQ2NjYrLTEuNjQ0MyAgICAgICAgPwogICBhYmMtc2tpcHB5LWxvb3AgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI4LjIyNDcrLTEuNjc0MSAgICAgICAgICAgMjcuMTkwNSstMS4z
NzI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4MHggZmFzdGVyCiAgIGlubGluZS1hcmd1bWVudHMt
YWxpYXNlZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAgIDUuNTg5MystMS4wOTMwICAgICA/ICAg
ICAgNi4xNjU5Ky0xLjYxMjYgICAgICAgID8gbWlnaHQgYmUgMS4xMDMyeCBzbG93ZXIKICAgaXMt
YXJyYXktZm9yLW5vbi1hcnJheS1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgMy40ODk5Ky0w
Ljc2NjAgICAgICAgICAgICAzLjI0NzQrLTAuNDAwMCAgICAgICAgICBtaWdodCBiZSAxLjA3NDd4
IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI2LjQwNjkrLTAuNTAwNSAgICAgPyAgICAgMjYuNDQ1MistMC41ODg0ICAgICAgICA/CiAg
IHN3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTUy
NSstMS4wNTcyICAgICAgICAgICAxMy42NTQwKy0wLjU5MDIgICAgICAgICAgbWlnaHQgYmUgMS4w
MzY1eCBmYXN0ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWNsYXNzLW1ldGhvZCAgICAgICAg
ICAgICAgICAgOS4wMjk3Ky0wLjkwODQgICAgID8gICAgICA5LjQ3NzcrLTMuMDUwMyAgICAgICAg
PyBtaWdodCBiZSAxLjA0OTZ4IHNsb3dlcgogICBzdHJpbmctc2xpY2UtZW1wdHkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLjI2NTcrLTMuMTY0MyAgICAgICAgICAgMTAuNTMxOCst
MS43NDEyICAgICAgICAgIG1pZ2h0IGJlIDEuMDY5N3ggZmFzdGVyCiAgIHN0cmluZy1jb25jYXQt
cGFpci1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjIwMSstMC45MDE1ICAgICAg
ICAgICAgNC41MzQzKy0wLjY0MjMgICAgICAgICAgbWlnaHQgYmUgMS4wMTg5eCBmYXN0ZXIKICAg
Zm9yLW9mLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy41NzE3
Ky0wLjk3MTggICAgID8gICAgIDIzLjY4NzkrLTEuODkzMiAgICAgICAgPwogICBzdHJpbmctcHJv
dG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjIwNDgrLTAuMjE1NiAgICAg
PyAgICAgIDEuMjM1NCstMC4yMjMwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1NXggc2xvd2VyCiAg
IHZhcmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNTMx
NistMC43MDMxICAgICA/ICAgICAxMS4zODcyKy0xLjE3NjUgICAgICAgID8gbWlnaHQgYmUgMS4w
ODEyeCBzbG93ZXIKICAgc3RyaW5nLXZhci1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzMy4wMjEyKy0yLjM4MzkgICAgICAgICAgIDMyLjI3MTUrLTAuNzM4NCAgICAgICAg
ICBtaWdodCBiZSAxLjAyMzJ4IGZhc3RlcgogICB0by1udW1iZXItb25seS1udW1iZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjI5MDQrLTAuODg0OSAgICAgICAgICAgIDAuOTIwMyst
MC4wOTM4ICAgICAgICAgIG1pZ2h0IGJlIDEuNDAyMnggZmFzdGVyCiAgIGZ1bmN0aW9uLXRlc3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTk5MCstMC41MDcxICAgICAg
ICAgICAgMy45OTM1Ky0wLjMyMjQgICAgICAgICAgbWlnaHQgYmUgMS4wNTE0eCBmYXN0ZXIKICAg
dW5wcm9maWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4wNDI2
Ky0wLjM5NjYgICAgICAgICAgICA4LjI2MjYrLTAuNDUzNiAgICAgICAgICBtaWdodCBiZSAxLjA5
NDR4IGZhc3RlcgogICBzdHJpbmctY29ucy10b3dlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3Ljg0NjYrLTEuMDU3NyAgICAgICAgICAgIDcuMTk5OCstMC40MDIyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDg5OHggZmFzdGVyCiAgIEludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0
aCAgICAgICAgICAgICAgICAgICAgIDUuMzkyNSstMC40NTk0ICAgICAgICAgICAgNS4zMTUwKy0w
LjM0MDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ2eCBmYXN0ZXIKICAgaW5saW5lZC1wdXQtYnkt
dmFsLXdpdGgtc3RyaW5nLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1OC4yMTUyKy0wLjk3MzMgICAgID8gICAgIDU4LjM0
ODUrLTEuMDQyMSAgICAgICAgPwogICBsaWNtLWRyYWdvbnMtb3ZlcmZsb3cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI0LjkxNDUrLTEuMjc5MiAgICAgPyAgICAgMjUuMjM0MCstMi4yNTQ0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyOHggc2xvd2VyCiAgIHZhcmFyZ3MtY29uc3RydWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuNzI5NCstMS42NTU1ICAgICAgICAgICAy
NS4wMDMwKy0wLjU3MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMjkxeCBmYXN0ZXIKICAgbW9kLWJv
b2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42OTk1Ky0wLjY4
NjEgICAgID8gICAgICA2Ljk2NDYrLTAuMzQ5NCAgICAgICAgPyBtaWdodCBiZSAxLjAzOTZ4IHNs
b3dlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAgICAg
MTY3LjQzOTIrLTEuOTkwMiAgICAgPyAgICAxNjkuOTcyNistNC42ODYzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE1MXggc2xvd2VyCiAgIHNpbmstaHVnZS1hY3RpdmF0aW9uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTMuNDkxNSstMS41MTgzICAgICAgICAgICAxMi43NTM1Ky0wLjUxODMg
ICAgICAgICAgbWlnaHQgYmUgMS4wNTc5eCBmYXN0ZXIKICAgdmFyYXJncy1jYWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi4yMzQ5Ky0xNC4zNjY3ICAgICAgICAgIDE2
LjY2MzQrLTEuMjk4MyAgICAgICAgICBtaWdodCBiZSAxLjMzNDR4IGZhc3RlcgogICBzaW1wbGUt
cmVnZXhwLXRlc3QtZm9sZGluZy13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMDY5MCstMC41NDkwICAg
ICA/ICAgICAxNi45OTY1Ky02Ljg5ODYgICAgICAgID8gbWlnaHQgYmUgMS4zMDA1eCBzbG93ZXIK
ICAgaW11bC1pbnQtb25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy40
NTUwKy0wLjE1OTEgICAgICAgICAgICA3LjI4ODcrLTEuMzM4NyAgICAgICAgICBtaWdodCBiZSAx
LjAyMjh4IGZhc3RlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMtc2ltcGxlICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjY3ODgrLTAuMzU3NyAgICAgICAgICAgIDMuNjUwNistMC4zNzU0ICAgICAg
ICAKICAgYWRhcHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
OS42MTYwKy0xLjAyNzYgICAgICAgICAgIDE4LjYxOTQrLTAuNTY1MyAgICAgICAgICBtaWdodCBi
ZSAxLjA1MzV4IGZhc3RlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjg1NjgrLTAuMTQ0NiAgICAgPyAgICAgIDQuNDA3NCstMS4zMTcxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMTQyOHggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctc2hvcnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNDQ2MCstMC44NTQyICAgICA/ICAgICAxNC4z
MDA2Ky0xLjcxMDggICAgICAgID8gbWlnaHQgYmUgMS4wNjM2eCBzbG93ZXIKICAgaXMtYXJyYXkt
Zm9yLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40NDAyKy0wLjM0MTgg
ICAgID8gICAgICAzLjY4NzgrLTAuMzQzMCAgICAgICAgPyBtaWdodCBiZSAxLjA3MjB4IHNsb3dl
cgogICBvYmplY3QtZW50cmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIz
LjY3NTMrLTQyLjIyNzEgICAgICAgICAxMDcuMTE2MCstMi4xMDAxICAgICAgICAgIG1pZ2h0IGJl
IDEuMTU0NnggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDMyQXJyYXktYnl0ZU9mZnNldCAgICAg
ICAgICAgICAgICAgIDUuMTYxNistMC40NTcwICAgICA/ICAgICAgNS44OTMwKy0xLjA0MTEgICAg
ICAgID8gbWlnaHQgYmUgMS4xNDE3eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVu
LXB1dC10by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMi43MDU0Ky0wLjg0OTAgICAgICAgICAgIDEyLjU3MTAr
LTEuMTc4MyAgICAgICAgICBtaWdodCBiZSAxLjAxMDd4IGZhc3RlcgogICB2YXJhcmdzLWNvbnN0
cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjQyNjUrLTAuNTYyMCAgICAg
PyAgICAgMjQuNjc2OSstNy43MjM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMTUxN3ggc2xvd2VyCiAg
IGdldC1ieS12YWwtd2l0aC1zdHJpbmctcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1p
bmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1LjY5MzIrLTAuNjkyNyAgICAgICAgICAgIDUuNTM1MistMC42NDc3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI4NXggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNzY4MystMS4wMjQyICAgICAgICAgICAxMy40
NTA5Ky0wLjY4ODggICAgICAgICAgbWlnaHQgYmUgMS4wMjM2eCBmYXN0ZXIKICAgc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjczODYrLTAu
MDY2MCAgICAgICAgICAgIDAuNzE1NystMC4wMjAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyMHgg
ZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LXVuaWNvZGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC42NDAzKy0wLjA0NjMgICAgICAgICAgICAwLjYyODMrLTAuMDQxOSAgICAgICAg
ICBtaWdodCBiZSAxLjAxOTJ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0YW5kICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTcxLjkwMTcrLTIuMzkwMiAgICAgPyAgICAxNzUuMjA2NCst
Mi44MzEyICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5Mnggc2xvd2VyCiAgIGNzZS1uZXctYXJyYXkt
YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTU3NSstMC43MzA4ICAgICA/
ICAgICAgNC4wNjE4Ky0xLjI0NTEgICAgICAgID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIKICAg
c3BsaWNlLXRvLXJlbW92ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC4yOTgx
Ky05LjcxOTcgICAgICAgICAgIDE5LjYxMjcrLTAuNTE1MCAgICAgICAgICBtaWdodCBiZSAxLjIz
ODl4IGZhc3RlcgogICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjg4MjgrLTAuNDQwNCAgICAgICAgICAgIDMuNzE2MCstMC4xNjY4ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDQ0OXggZmFzdGVyCiAgIEludDE2QXJyYXktdG8tSW50MzJBcnJheS1zZXQg
ICAgICAgICAgICAgICAgICAgICAgNTAuMDkwOSstMi4yOTY4ICAgICA/ICAgICA1Mi40MTMxKy0y
Ljc2NzUgICAgICAgID8gbWlnaHQgYmUgMS4wNDY0eCBzbG93ZXIKICAgZm9yLW9mLWl0ZXJhdGUt
YXJyYXkta2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgNy40MTMyKy0xLjE4NTEgICAgICAg
ICAgICA2Ljg1NDIrLTEuMDM2NyAgICAgICAgICBtaWdodCBiZSAxLjA4MTZ4IGZhc3RlcgogICBt
YWtlLXJvcGUtY3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE0OTgr
LTEuNTkxMCAgICAgICAgICAgIDQuODg4MistMS4yMTU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUz
NXggZmFzdGVyCiAgIHJlc3QtcGFyYW1ldGVyLWFsbG9jYXRpb24tZWxpbWluYXRpb24gICAgICAg
ICAgICAyNDcuNzY0NCstNC43NzM4ICAgICAgICAgIDI0Ni40OTAyKy0xLjk3NTEgICAgICAgIAog
ICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjMw
MDUrLTAuMDUwMSAgICAgPyAgICAgIDMuNzE4MystMC40ODI3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MTI2Nnggc2xvd2VyCiAgIERhdGFWaWV3LWN1c3RvbS1wcm9wZXJ0aWVzICAgICAgICAgICAgICAg
ICAgICAgICAgNzAuNjA2MCstMi43MDUwICAgICA/ICAgICA3Mi4xOTgwKy0yLjE5ODMgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjI1eCBzbG93ZXIKICAgbmV3LWFycmF5LWJ1ZmZlci1kZWFkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5MS4zMTE3Ky0yLjc1MTQgICAgICAgICAgIDg5LjY4NDgr
LTAuNjM1NiAgICAgICAgICBtaWdodCBiZSAxLjAxODF4IGZhc3RlcgogICBwcm90b3R5cGUtYWNj
ZXNzLXdpdGgtbXV0YXRpbmctcHJvdG90eXBlICAgICAgICAgICA3LjA5MzQrLTEuMzE1NCAgICAg
PyAgICAgIDcuMjM0NistMS4zNTI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5OXggc2xvd2VyCiAg
IGFsbG9jYXRlLWJpZy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuOTQx
MistMS41MjkyICAgICAgICAgICAgMy45OTUwKy0wLjk5MzQgICAgICAgICAgbWlnaHQgYmUgMS4y
MzY5eCBmYXN0ZXIKICAgZGlyZWN0LWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICA4Mi42MTkxKy0xLjQ1MjMgICAgICAgICAgIDgwLjk2MDArLTEuMzA1MCAgICAgICAg
ICBtaWdodCBiZSAxLjAyMDV4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXByb3Rv
LW9yLXNlbGYgICAgICAgICAgICAgIDE1LjQwOTErLTEuMzQ3NyAgICAgPyAgICAgMTYuMjIwNSst
Mi44NDE3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUyN3ggc2xvd2VyCiAgIGdldC1ieS1pZC1iaW1v
cnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMTc2OSstMC44MDkxICAgICA/ICAg
ICAgNy4yOTQ0Ky0wLjg0MjcgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0eCBzbG93ZXIKICAgbWFw
LWNvbnN0YW50LWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMy43NjE4Ky04
LjM4NjIgICAgICAgICAgMjAyLjczMTcrLTMuNTEyNyAgICAgICAgCiAgIGRlbHRhLWJsdWUtdHJ5
LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzIuMzI5NSstMi42NzA3ICAgICAg
ICAgICA3MS4xOTUwKy0yLjExMzcgICAgICAgICAgbWlnaHQgYmUgMS4wMTU5eCBmYXN0ZXIKICAg
YXJyYXktcHVzaC0zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxMy43NDg4
Ky0xLjE3OTUgICAgID8gICAgMjE3Ljg5MTYrLTExLjI3OTUgICAgICAgPyBtaWdodCBiZSAxLjAx
OTR4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjcwNjcrLTAuMDM2OSAgICAgICAgICAgIDAuNzA2MystMC4wMTU3ICAgICAgICAKICAg
bm8taW5saW5lLWNvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC42MjMz
Ky0wLjkzNTcgICAgID8gICAgIDMwLjYzMTUrLTEuNDU0MSAgICAgICAgPwogICBudW1iZXItdG8t
c3RyaW5nLXdpdGgtYWRkLWVtcHR5ICAgICAgICAgICAgICAgICAgIDExLjE2NjIrLTEuMTE2MiAg
ICAgPyAgICAgMTIuMjU0OCstMi44MjMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDk3NXggc2xvd2Vy
CiAgIGNtcGVxLW9iai10by1vYmotb3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEu
OTc1NCstMC42OTMwICAgICAgICAgICAxMS44NjkzKy0wLjc4NzkgICAgICAgIAogICBwb2x5LXBy
b3RvLXB1dC10cmFuc2l0aW9uLXNwZWVkICAgICAgICAgICAgICAgICAgIDIzLjIwMjkrLTAuODAy
MSAgICAgPyAgICAgMjcuNDkzMistOC4wNjQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMTg0OXggc2xv
d2VyCiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAg
MjAuNjQ5NCstMC40Mzk0ICAgICA/ICAgICAyMS4zNDM4Ky0wLjgxMTQgICAgICAgID8gbWlnaHQg
YmUgMS4wMzM2eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVy
ZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC40MTY0Ky0wLjQ2NDcgICAgID8gICAgICA0LjU0MzIrLTAu
MzQzNiAgICAgICAgPyBtaWdodCBiZSAxLjAyODd4IHNsb3dlcgogICBpbi10d28tY2FzZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjM2OTMrLTEuMTQ4MCAgICAgICAg
ICAgMTEuNjU5OSstMC43NDA3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwOHggZmFzdGVyCiAgIHN0
cmluZy1hZGQtY29uc3RhbnQtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAyMTIuOTUyNCst
Mi45NjE3ICAgICAgICAgIDIxMC44MDIzKy0zLjY2MTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTAy
eCBmYXN0ZXIKICAgc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOC45MzYxKy0wLjgxNjYgICAgID8gICAgIDEwLjIxMDkrLTEuNTY3NCAgICAgICAgPyBt
aWdodCBiZSAxLjE0Mjd4IHNsb3dlcgogICBvYmplY3QtaXRlcmF0ZS1zeW1ib2xzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LjI3MzQrLTAuMjY0MyAgICAgPyAgICAgIDQuNTc1OCstMC41
MzA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcwOHggc2xvd2VyCiAgIGluZmVyLWNsb3N1cmUtY29u
c3QtdGhlbi1tb3YgICAgICAgICAgICAgICAgICAgICAgMTEuNDExNystMS4xNDk4ICAgICAgICAg
ICAxMS4zMjQ3Ky0xLjA5MDcgICAgICAgIAogICBzdHJpbmctZXF1YWxpdHkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE2LjgyNjQrLTQuNjUxNCAgICAgICAgICAgMTQuNDQzMSst
MS4wMTQzICAgICAgICAgIG1pZ2h0IGJlIDEuMTY1MHggZmFzdGVyCiAgIGludC1vci1vdGhlci1u
ZWctdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgMjguNTU2NCstMS4yODIzICAgICAg
ICAgICAyOC40OTAwKy0xLjAxNTUgICAgICAgIAogICBzdXBlci1nZXQtYnktaWQtd2l0aC10aGlz
LW1vbm9tb3JwaGljICAgICAgICAgICAgIDI1LjIzNDIrLTMuNTA2MSAgICAgICAgICAgMjMuMDU1
NistMC44NDcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDk0NXggZmFzdGVyCiAgIGFiYy1wb3N0Zml4
LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgMzkuOTcxNCstMC43NTUwICAg
ICAgICAgICAzOS43MDMzKy0xLjYwNjIgICAgICAgIAogICBhYnMtYm9vbGVhbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc4NjArLTAuMTg1MSAgICAgICAgICAgIDMu
Njc3OSstMC4yODk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5NHggZmFzdGVyCiAgIGZpeGVkLXR5
cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4ICAgICAgICAgICAgICAgIDIuMzg2OSstMC4yNzQ2
ICAgICA/ICAgICAgMi44MTE0Ky0wLjY5NzkgICAgICAgID8gbWlnaHQgYmUgMS4xNzc4eCBzbG93
ZXIKICAgc3RyaW5nLXJlcGxhY2UtZ2VuZXJpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
Mi43NjMyKy0wLjM3NTEgICAgID8gICAgIDYzLjUwMjgrLTIuNzk1NiAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMTh4IHNsb3dlcgogICBzaW5nbGV0b24tc2NvcGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDYwLjI2MzcrLTIuMzMyNSAgICAgICAgICAgNTkuNDYxMystMi4yNDU2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIGRpdi1ib29sZWFuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzMxNSstMC42NjExICAgICA/ICAgICAgOS44
OTA5Ky0wLjY4MTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0eCBzbG93ZXIKICAgcHV0LWJ5LWlk
LXNsaWdodGx5LXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgMy45NTA4Ky0wLjMyOTkg
ICAgID8gICAgICA0LjA2NTcrLTEuMDQzNCAgICAgICAgPyBtaWdodCBiZSAxLjAyOTF4IHNsb3dl
cgogICBzdXBlci1nZXQtYnktdmFsLXdpdGgtdGhpcy1wb2x5bW9ycGhpYyAgICAgICAgICAgIDI2
LjY1MDArLTAuNzgzMCAgICAgPyAgICAgMjcuMzc3OCstMS40MTkwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI3M3ggc2xvd2VyCiAgIGFycmF5LXNwbGljZS1jb250aWd1b3VzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjguOTQwNystMC43ODk1ICAgICAgICAgICAyOC4wODc1Ky0wLjgxNzEgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzA0eCBmYXN0ZXIKICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLXJh
ZGl4ICAgICAgICAgICAgICAgICAgICAgICAxNC4xOTkwKy0wLjQ0MzYgICAgID8gICAgIDE0LjM4
MjQrLTAuNTU2NiAgICAgICAgPyBtaWdodCBiZSAxLjAxMjl4IHNsb3dlcgogICBwb2x5LWNoYWlu
LWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcy1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zNDE4Ky0xLjAyOTUgICAgICAg
ICAgICA0LjExMTQrLTAuMjI5NiAgICAgICAgICBtaWdodCBiZSAxLjA1NjB4IGZhc3RlcgogICBn
bG9iYWwtdmFyLWNvbnN0LWluZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjMwMzQr
LTAuMTUxNiAgICAgPyAgICAgIDEuNzk5NistMS40NjQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMzgw
N3ggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAgICAg
ICAgICAgMTcuNDkyMSstMC41NzQ4ICAgICA/ICAgICAxOC4zOTczKy0xLjQ0OTYgICAgICAgID8g
bWlnaHQgYmUgMS4wNTE3eCBzbG93ZXIKICAgZGVsdGFibHVlLXZhcmFyZ3MgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyOS44OTM3Ky01LjQ3NzUgICAgICAgICAgIDI3LjA3MTErLTEu
NjI1NiAgICAgICAgICBtaWdodCBiZSAxLjEwNDN4IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJs
ZS1tdWwtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICA2LjgzNzQrLTAuODUwOCAgICAgICAg
ICAgIDYuNDE1OSstMC4yNjk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY1N3ggZmFzdGVyCiAgIGRp
cmVjdC10YWlsLWNhbGwtaW5saW5lZC1jYWxsZXItYXJpdHktbWlzbWF0Y2ggICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NS4yNjI3Ky01LjM5
ODkgICAgICAgICAgIDgyLjIxOTArLTEuNDI3OCAgICAgICAgICBtaWdodCBiZSAxLjAzNzB4IGZh
c3RlcgogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0gICAgICAgICAgICAgICAgICAg
ICA0LjcxOTkrLTAuMzkyNyAgICAgPyAgICAgIDQuODExNSstMC4xNTA0ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE5NHggc2xvd2VyCiAgIHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuMTEyNystMC42NTQ4ICAgICAgICAgICAgNy4wNTc2Ky0wLjY4NTEg
ICAgICAgIAogICBzdXBlci1nZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE4LjM2NTcrLTEuNzY4MSAgICAgICAgICAgMTcuMjQ2NSstMS4zMjQ3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDY0OXggZmFzdGVyCiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2
ZSAgICAgICAgICAgICAgICAgIDcuNDMwMCstMS4yMjQ4ICAgICA/ICAgICAgOC40Nzc1Ky0zLjQ0
NTUgICAgICAgID8gbWlnaHQgYmUgMS4xNDEweCBzbG93ZXIKICAgYnVnLTE1MzQzMSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43ODYzKy0wLjQ2MzUgICAgID8gICAg
ICA1Ljk5MTUrLTIuNjgzMCAgICAgICAgPyBtaWdodCBiZSAxLjI1MTh4IHNsb3dlcgogICBJbnQx
NkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1Ljg4NzYrLTEu
MzIzNSAgICAgPyAgICAgMjYuMDk3NistMS40MTUyICAgICAgICA/CiAgIHJlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjI5OSstMC4wMzk0ICAgICAgICAg
ICAgMC42MTU2Ky0wLjAyNTggICAgICAgICAgbWlnaHQgYmUgMS4wMjMyeCBmYXN0ZXIKICAgcG9s
eS1wcm90by1hbmQtbm9uLXBvbHktcHJvdG8tc2FtZS1pYyAgICAgICAgICAgICAzNC4xNjUzKy0w
LjgxOTQgICAgID8gICAgIDM0LjI5MzIrLTEuMjI1MyAgICAgICAgPwogICBldmFsLWNvZGUtZnRs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3LjA0NTIrLTEuMTQ4OCAgICAg
PyAgICAgNTcuOTI4OCstMS41OTA2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NXggc2xvd2VyCiAg
IGNoYWluLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNDc5
NistMS4xODc0ICAgICA/ICAgICAxNS43Njk5Ky0xLjMzNzYgICAgICAgID8gbWlnaHQgYmUgMS4w
MTg3eCBzbG93ZXIKICAgbmV3LWFycmF5LWJ1ZmZlci12ZWN0b3ItcHJvZmlsZSAgICAgICAgICAg
ICAgICAgICAyNy4yOTI1Ky0wLjQ5NTUgICAgID8gICAgIDI4LjQ5NzYrLTEuNzU5MSAgICAgICAg
PyBtaWdodCBiZSAxLjA0NDJ4IHNsb3dlcgogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjUwMDQrLTUuNDI1NSAgICAgICAgICAgIDcuMTU1Nist
MC41NjA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMzI3N3ggZmFzdGVyCiAgIGRmZy1pbnRlcm5hbC1m
dW5jdGlvbi1jb25zdHJ1Y3QgICAgICAgICAgICAgICAgICAgIDEuMDg0MistMC4xMDYyICAgICA/
ICAgICAgMS4xMDgwKy0wLjA4MzIgICAgICAgID8gbWlnaHQgYmUgMS4wMjE5eCBzbG93ZXIKICAg
YXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zNDY2
Ky0wLjAxODcgICAgID8gICAgICAxLjM5NjUrLTAuMDY1NSAgICAgICAgPyBtaWdodCBiZSAxLjAz
NzB4IHNsb3dlcgogICBhcnJheS1wcm90b3R5cGUtZXZlcnkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM4LjU5MDcrLTEuNDYyOCAgICAgICAgICAgMzguNTQ1NCstMS41NDcwICAgICAgICAK
ICAgaW50LW9yLW90aGVyLWFicy10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAxMC44
NTkzKy0wLjcyMDMgICAgID8gICAgIDExLjAyOTErLTAuNzk3MCAgICAgICAgPyBtaWdodCBiZSAx
LjAxNTZ4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtbHNoaWZ0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjEyLjE5ODArLTIuNjA3NCAgICAgPyAgICAyMTcuMTA1MystMTEuMTk0NyAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIzMXggc2xvd2VyCiAgIGNvbnRpZ3VvdXMtYXJyYXktdG8tc3RyaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgMzcuNjMyMSstMS40MTMzICAgICA/ICAgICAzOC43ODQz
Ky0wLjg5MDkgICAgICAgID8gbWlnaHQgYmUgMS4wMzA2eCBzbG93ZXIKICAgZm9sZC1nZXQtYnkt
aWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAgICAgICAgICAxMS45MzMzKy0yLjA5MjggICAg
ID8gICAgIDEzLjE2OTUrLTIuMzA1NSAgICAgICAgPyBtaWdodCBiZSAxLjEwMzZ4IHNsb3dlcgog
ICBpcy1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcx
MzUrLTAuNTIzOCAgICAgPyAgICAgIDIuNzE1MistMC42NjI4ICAgICAgICA/CiAgIGludGVnZXIt
bW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjI3MCstMC4zMTY0
ICAgICA/ICAgICAgMy43NTE4Ky0wLjQ5MTIgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ0eCBzbG93
ZXIKICAgaW50LW9yLW90aGVyLWRpdi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAg
Ni4wNTIyKy0wLjM0ODIgICAgICAgICAgICA1LjU1NzUrLTAuNDkwMCAgICAgICAgICBtaWdodCBi
ZSAxLjA4OTB4IGZhc3RlcgogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tcG9seS1nZXQt
Ynktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDkuNTIwNSstMi42MjA0ICAgICAgICAgICAgOC45MDIzKy0yLjk0NTIgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjk0eCBmYXN0ZXIKICAgb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3lt
Ym9scy1vbi1sYXJnZS1hcnJheSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjY1OTArLTAuMjI3NiAgICAgICAgICAgIDEuNTcxOCstMC4y
MTAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDU1NXggZmFzdGVyCiAgIG1hbnktZm9yZWFjaC1jYWxs
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTIxNystMS41NTc2ICAgICAgICAg
ICAgMi45OTM1Ky0wLjI5NzcgICAgICAgICAgbWlnaHQgYmUgMS4wNDI4eCBmYXN0ZXIKICAgaXMt
b2JqZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRyaWNreSAgICAgICAgICAgICAgICAgNC45MTQ4Ky0w
LjI3NzcgICAgICAgICAgICA0Ljg4ODMrLTAuMzA2OSAgICAgICAgCiAgIGlzLW51bWJlci1mb2xk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODM5MistMC40OTg1ICAgICAg
ICAgICAgMy40NjUwKy0wLjQyNjQgICAgICAgICAgbWlnaHQgYmUgMS4xMDgweCBmYXN0ZXIKICAg
Zm9yLW9mLWl0ZXJhdGUtYXJyYXktdmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgNi4zNzcy
Ky0wLjc3MzQgICAgICAgICAgICA2LjE0ODcrLTAuNTgwMCAgICAgICAgICBtaWdodCBiZSAxLjAz
NzJ4IGZhc3RlcgogICByaWNoYXJkcy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAg
ICAgICAgIDc2LjYwNDcrLTIuMDQwNCAgICAgPyAgICAgOTMuMDk3MistMzAuMDA0NiAgICAgICA/
IG1pZ2h0IGJlIDEuMjE1M3ggc2xvd2VyCiAgIGdlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuMTk1OCstMC44NzUwICAgICA/ICAgICAgNi44NDg3Ky0y
LjY2ODUgICAgICAgID8gbWlnaHQgYmUgMS4xMDU0eCBzbG93ZXIKICAgc3dpdGNoLWNoYXItY29u
c3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yNjk3Ky0wLjYxNjkgICAgID8g
ICAgICAzLjM0MTcrLTAuMzUyNCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjB4IHNsb3dlcgogICBs
b2dpY2FsLW5vdC13ZWlyZC10eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk0MDUr
LTAuMzgwNCAgICAgPyAgICAgIDMuOTUxMCstMC4yOTA1ICAgICAgICA/CiAgIHN0cmluZy1yZXBs
YWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuOTE0OCstMC45MDcwICAg
ICA/ICAgICAxNS42OTY1Ky00Ljg5MzUgICAgICAgID8gbWlnaHQgYmUgMS4zMTc0eCBzbG93ZXIK
ICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgMi4x
NDYwKy0wLjgzNDggICAgICAgICAgICAxLjk2MjYrLTAuMjcwNSAgICAgICAgICBtaWdodCBiZSAx
LjA5MzR4IGZhc3RlcgogICBvYmplY3QtY2xvc3VyZS1jYWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA4LjYwMTcrLTIuMjEzNCAgICAgPyAgICAgIDkuMTUyMistMS41MDUxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDY0MHggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xp
Z2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC42MzY0Ky0wLjQ2MjUgICAgID8gICAgICA0LjgxODQrLTAuNDU2
MCAgICAgICAgPyBtaWdodCBiZSAxLjAzOTJ4IHNsb3dlcgogICBtYXRoLXdpdGgtb3V0LW9mLWJv
dW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAgICAgIDQwLjQzODkrLTEuNjI3MCAgICAgPyAgICAg
NDIuMzg4MystNi41NjQwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4Mnggc2xvd2VyCiAgIEludDhB
cnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzIxNistMC40
MTk0ICAgICA/ICAgICAgNS40Mzc5Ky0wLjU0MDkgICAgICAgID8gbWlnaHQgYmUgMS4wMjE5eCBz
bG93ZXIKICAgYmlnc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyOS44ODYzKy0xLjQ3MDAgICAgID8gICAgIDMwLjU1ODMrLTIuNjExNSAgICAgICAgPyBtaWdo
dCBiZSAxLjAyMjV4IHNsb3dlcgogICBpcy11bmRlZmluZWQtZm9sZC10cmlja3kgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjQ3NTIrLTAuMjQ5NyAgICAgICAgICAgIDQuNDUzOSstMC4yMzk4
ICAgICAgICAKICAgZGlyZWN0LXRhaWwtY2FsbC1pbmxpbmVkLWNhbGxlciAgICAgICAgICAgICAg
ICAgICA3Ni4zODM0Ky0yLjQ1NTEgICAgICAgICAgIDc1Ljg3NjkrLTEuODIxMyAgICAgICAgCiAg
IHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDQuNzM2
OSstMC4yNTk2ICAgICA/ICAgICAgNi4wNzQxKy0yLjk1OTMgICAgICAgID8gbWlnaHQgYmUgMS4y
ODIzeCBzbG93ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICA1Ni41MTg5Ky0xLjQ1NDQgICAgID8gICAgIDU3LjAzMTcrLTAuOTUwOCAgICAgICAg
PwogICBpbmxpbmUtZ2V0LXNjb3BlZC12YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjAwNjMrLTAuMjg3NCAgICAgICAgICAgIDMuODQxNistMC4zNDk5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQyOXggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVzdGVkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDYuNDgzNSstMC45MDg2ICAgICAgICAgICAgNi4xNzMwKy0wLjMzOTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTAzeCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFs
bG9jICAgICAgICAgICAgICAgICAgICAgICAxOC41NTIwKy0wLjQ2NzEgICAgID8gICAgIDE5LjEx
MjErLTAuODA4MCAgICAgICAgPyBtaWdodCBiZSAxLjAzMDJ4IHNsb3dlcgogICBzZXQtZm9yLW9m
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjY2MTUrLTAuODU4OCAg
ICAgPyAgICAgIDcuMjE0OCstMS43NTUyICAgICAgICA/IG1pZ2h0IGJlIDEuMDgzMXggc2xvd2Vy
CiAgIGZyZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgu
Mzg0NSstMS4yMDMyICAgICAgICAgICAxNy44MzAwKy0wLjk4NDggICAgICAgICAgbWlnaHQgYmUg
MS4wMzExeCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuOTI0NSstMC4wOTU1ICAgICA/ICAgICAgMC45NzEzKy0wLjE4NzYgICAgICAgID8g
bWlnaHQgYmUgMS4wNTA2eCBzbG93ZXIKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5cyAg
ICAgICAgICAgICAgICAgICAgICAzMy40MzY5Ky0xLjM1NzEgICAgID8gICAgIDM0LjQwOTErLTEu
NDA4NiAgICAgICAgPyBtaWdodCBiZSAxLjAyOTF4IHNsb3dlcgogICBzdHJpbmctZ2V0LWJ5LXZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM3OTQrLTAuNTA1OSAgICAgICAg
ICAgIDMuMjQwOCstMC4yMjEyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyOHggZmFzdGVyCiAgIHNp
bmstZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNDcxOCst
MS44MTU1ICAgICAgICAgICAgOC45MjI5Ky0xLjI3NjEgICAgICAgICAgbWlnaHQgYmUgMS4wNjE1
eCBmYXN0ZXIKICAgc3BhcnNlLWNvbmRpdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS43NzcxKy0wLjAzNTIgICAgICAgICAgICAxLjc2ODcrLTAuMDY3NSAgICAgICAgCiAg
IGZ1bmN0aW9uLXdpdGgtZXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjYuNzI0
NSstMjMuNjYxMyAgICAgICAgICA1OS4wMzA2Ky01LjI1ODggICAgICAgICAgbWlnaHQgYmUgMS4x
MzAzeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZVJpZ2h0ICAgICAgICAgICAgICAg
ICAgICAgICA0My43Njk1Ky0zLjMzOTAgICAgICAgICAgIDQwLjkyODIrLTMuNDcwMCAgICAgICAg
ICBtaWdodCBiZSAxLjA2OTR4IGZhc3RlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgt
Y3NlICAgICAgICAgICAgICAgICAgICA2LjE0MjErLTAuMDQ0MiAgICAgPyAgICAgIDcuOTg5OSst
Mi4zMzk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMzAwOHggc2xvd2VyCiAgIGV2YWwtbm90LWV2YWwt
Y29tcHV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuMTE1OCstMS4zMDE0ICAgICA/
ICAgICAzMi40NTQ5Ky0xLjgxNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMTA2eCBzbG93ZXIKICAg
ZG9udC1jb25mdXNlLXN0cnVjdHVyZXMtZnJvbS1kaWZmZXJlbnQtZXhlY3V0YWJsZS1hcy1wb2x5
LXByb3RvICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNjQuODAwMCstMi43MzI5ICAgICA/ICAgICA2NS4zMzY0Ky0yLjE5NzcgICAgICAgID8K
ICAgcG9seS1wcm90by1zZXR0ZXItc3BlZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4w
Mjc4Ky0wLjM2MzkgICAgICAgICAgICA0LjkwNDcrLTAuMjUyMyAgICAgICAgICBtaWdodCBiZSAx
LjAyNTF4IGZhc3RlcgogICBuZXctYXJyYXktcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2LjUxNTArLTMuMDM0OSAgICAgPyAgICAgIDYuNTcwNCstMi4zMTg0ICAgICAg
ICA/CiAgIHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAg
IDUuNjY1NistMC4yOTA2ICAgICA/ICAgICAgNS43NTI4Ky0wLjYwMjggICAgICAgID8gbWlnaHQg
YmUgMS4wMTU0eCBzbG93ZXIKICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIxNC44NzEzKy03LjY5NDEgICAgICAgICAgMjEyLjM3NjYrLTYuNjM4NSAg
ICAgICAgICBtaWdodCBiZSAxLjAxMTd4IGZhc3RlcgogICByZWdleHAtbGFzdC1pbmRleCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjE3MDYrLTEuNDMyMiAgICAgICAgICAgMTYu
MDcwNistMC42NzA5ICAgICAgICAKICAgbWluLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy42MDYxKy0wLjMwMTkgICAgID8gICAgICAzLjY2NzArLTAuMjE3
NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNjl4IHNsb3dlcgogICBwb2x5bW9ycGhpYy1wdXQtYnkt
dmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgIDMyLjg5NDErLTEuNDExMCAgICAgICAgICAg
MzIuNzA4NistMC43NjY1ICAgICAgICAKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1zZWxmLW9y
LXByb3RvICAgICAgICAgICAgICAxNi4yMzQwKy0xLjA4NjQgICAgICAgICAgIDE1LjkwNTArLTEu
MjY2NCAgICAgICAgICBtaWdodCBiZSAxLjAyMDd4IGZhc3RlcgogICBwdXQtYnktdmFsLW1hY2hp
bmUtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc0NTUrLTAuMjgxNiAgICAgICAg
ICAgIDQuNDc2OCstMC40ODI3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwMHggZmFzdGVyCiAgIG9i
amVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMgICAgICAgICAgICAgICAgICAgMjkuNzIyMCst
MC40NzkwICAgICA/ICAgICAyOS44MjY4Ky0wLjU5MjMgICAgICAgID8KICAgaW11bC1taXhlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zOTAwKy0wLjk1NTAgICAg
ID8gICAgICA2LjgyNzIrLTAuOTE0NSAgICAgICAgPyBtaWdodCBiZSAxLjA2ODR4IHNsb3dlcgog
ICBnY3NlLXBvbHktZ2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjEz
NDUrLTEuMTkwOSAgICAgPyAgICAgMjEuMjExMSstMS4wOTgxICAgICAgICA/CiAgIGZvbGQtZG91
YmxlLXRvLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuMzMyNCstMC41ODkx
ICAgICA/ICAgICAxNy41OTQwKy0wLjk3MTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTUxeCBzbG93
ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktbnVtYmVyICAgICAgICAgICAgICAgICAg
MC45OTY0Ky0wLjA2NzQgICAgID8gICAgICAxLjAwMTYrLTAuMDc4NiAgICAgICAgPwogICB0ZW1w
bGF0ZS1zdHJpbmctYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjgwMzkrLTMu
MDAwNyAgICAgICAgICAgIDguMzgwNystMS41ODIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDUwNXgg
ZmFzdGVyCiAgIGluLWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjIuMzI3MSstMi4yNTI3ICAgICAgICAgICAyMi4yMDg5Ky0yLjc0MDMgICAgICAgIAogICBp
bnQtb3Itb3RoZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQ1NTUr
LTAuODg4NCAgICAgPyAgICAgIDYuNjIxNSstMC42Mzk2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1
N3ggc2xvd2VyCiAgIHBvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzICAgICAg
ICAgICAgIDMuOTIwMCstMC4zNzE0ICAgICA/ICAgICAgMy45OTA4Ky0wLjQzNTQgICAgICAgID8g
bWlnaHQgYmUgMS4wMTgxeCBzbG93ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13aXRoLXRoaXMtbW9u
b21vcnBoaWMgICAgICAgICAgICAzMC4wMTcyKy0wLjgzMjUgICAgID8gICAgIDMyLjUzMDMrLTQu
MDU0MiAgICAgICAgPyBtaWdodCBiZSAxLjA4Mzd4IHNsb3dlcgogICBkb3VibGUtdG8taW50MzIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTczLjA2MDMrLTIuNjczOCAgICAgICAg
ICAxNzEuNzUzNSstNS4yNzM0ICAgICAgICAKICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyNi41NjAyKy0wLjYyOTkgICAgID8gICAgIDI2LjU4Nzcr
LTAuNzIxNiAgICAgICAgPwogICBzdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcgICAgICAg
ICAgICAgICAgICAgIDExLjk2NDArLTMuMTUyNCAgICAgICAgICAgMTAuNDQ0NystMC4wNzc1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMTQ1NXggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNr
aWVyLWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTYuMTAxNSstNS4xNDc3ICAgICAgICAgICAxMy43NzQ5Ky0x
LjMzNTYgICAgICAgICAgbWlnaHQgYmUgMS4xNjg5eCBmYXN0ZXIKICAgZm9sZC1wdXQtYnktdmFs
LXdpdGgtc3ltYm9sLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi42MTIwKy01LjkyMTMgICAgICAg
ICAgIDE0LjAwNDYrLTEuNDkyMSAgICAgICAgICBtaWdodCBiZSAxLjE4NjJ4IGZhc3RlcgogICBB
cnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbGFyZ2UtbG9uZy1saXZlZCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwLjUwNTErLTExLjA4
MjggICAgICAgICAgNjUuODM3MistMi4xNTAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDcwOXggZmFz
dGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNDQyOSstMC40ODc3ICAgICA/ICAgICAgNC40NDk5Ky0wLjMyODIgICAgICAgID8KICAgc3Ry
aW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAzNS40NTc3Ky0x
Ljc2MTMgICAgID8gICAgIDM2LjgzNTMrLTEuNTkwNiAgICAgICAgPyBtaWdodCBiZSAxLjAzODl4
IHNsb3dlcgogICBzdXBlci1nZXQtYnktaWQtd2l0aC10aGlzLXBvbHltb3JwaGljICAgICAgICAg
ICAgIDIwLjIyMjcrLTEuMDA4OCAgICAgPyAgICAgMjAuMzc2MCstMC45NzMwICAgICAgICA/CiAg
IHN3aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNTcx
OCstMS4wNzg5ICAgICAgICAgICAxNC4wNTIyKy0wLjY5NjUgICAgICAgICAgbWlnaHQgYmUgMS4w
MzcweCBmYXN0ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0OS42NTE0Ky0yLjM4OTMgICAgICAgICAgIDQ3LjY1OTUrLTEuMjkzNiAgICAgICAg
ICBtaWdodCBiZSAxLjA0MTh4IGZhc3RlcgogICB1bmRlZmluZWQtcHJvcGVydHktYWNjZXNzICAg
ICAgICAgICAgICAgICAgICAgICAgMjg3LjE3NDUrLTEzLjg1MzIgICAgICAgICAyNzguMjM1NCst
My43NzYxICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyMXggZmFzdGVyCiAgIGV2YWwtbm90LWV2YWwt
Y29tcHV0ZS1hcmdzICAgICAgICAgICAgICAgICAgICAgICAgMzAuOTA4NCstMC41OTY2ICAgICA/
ICAgICAzMS41Njk4Ky0xLjQzOTIgICAgICAgID8gbWlnaHQgYmUgMS4wMjE0eCBzbG93ZXIKICAg
YnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAxNC43MTA2
Ky0wLjgxMTkgICAgID8gICAgIDE1LjcxNjIrLTEuMDAxMSAgICAgICAgPyBtaWdodCBiZSAxLjA2
ODR4IHNsb3dlcgogICB0by1udW1iZXItc3RyaW5nLW51bWJlci1zdHJpbmctbnVtYmVyICAgICAg
ICAgICAgICA0LjU4MTkrLTAuNDcxNyAgICAgICAgICAgIDQuMjA4MCstMC4yOTYzICAgICAgICAg
IG1pZ2h0IGJlIDEuMDg4OXggZmFzdGVyCiAgIGFycm93ZnVuY2l0b24tcmVmZXJlbmNlLWFyZ3Vt
ZW50cyAgICAgICAgICAgICAgICAgIDEuMTI5NystMC4zMzAzICAgICAgICAgICAgMS4wMTI5Ky0w
LjExNTYgICAgICAgICAgbWlnaHQgYmUgMS4xMTUzeCBmYXN0ZXIKICAgbG9jYWxlLWNvbXBhcmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy43MjEzKy0wLjgzNjAgICAgICAg
ICAgIDI3LjA3ODUrLTEuMDQ0MCAgICAgICAgICBtaWdodCBiZSAxLjAyMzd4IGZhc3RlcgogICBn
ZXR0ZXItbm8tYWN0aXZhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE0MTYr
LTAuNzg1MiAgICAgICAgICAgIDQuNzkzMSstMC40MTU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDcy
N3ggZmFzdGVyCiAgIGRlbHRhYmx1ZS1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTcuNzgwMSstMy4zMDUzICAgICA/ICAgICA1OS40MDA4Ky0zLjA4NzggICAgICAgID8g
bWlnaHQgYmUgMS4wMjgweCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1sb25nLWNvbnZlcnQgICAg
ICAgICAgICAgICAgICAgICAgICA5Mi41MzY3Ky0xLjkwOTUgICAgICAgICAgIDkyLjE2MzMrLTEu
MDE1OCAgICAgICAgCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFjZS1hbmQtdHJhbnNp
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE1LjYzNjkrLTIuMjY5OSAgICAgICAgICAgMTUuMjg5NCstMS4yNzAzICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIyN3ggZmFzdGVyCiAgIHZhcmFyZ3Mtc3RyaWN0LW1vZGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuNDY0MCstMC44NTEyICAgICAgICAgICAxMC4xNzY1Ky0wLjY5
NTUgICAgICAgICAgbWlnaHQgYmUgMS4xMjY1eCBmYXN0ZXIKICAgbG90cy1vZi1maWVsZHMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4zNDMyKy0wLjk5OTcgICAgID8gICAg
IDE0LjAyNTYrLTQuODg4MCAgICAgICAgPyBtaWdodCBiZSAxLjA1MTF4IHNsb3dlcgogICB0ZWFy
LW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE2MzIrLTEu
MjYxMSAgICAgICAgICAgIDQuNTIwMCstMC41NjM5ICAgICAgICAgIG1pZ2h0IGJlIDEuMTQyM3gg
ZmFzdGVyCiAgIGlzLWFycmF5LWZvci1taXhlZC1jYXNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDcuMjY5MystMS4yMDcxICAgICAgICAgICAgNy4wODA2Ky0wLjczNzggICAgICAgICAgbWln
aHQgYmUgMS4wMjY2eCBmYXN0ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC10YWtlbiAgICAgICAg
ICAgICAgICAgICAgICAgICA0OS43MzgxKy0xNi4yMTI2ICAgICAgICAgIDQzLjU5MDIrLTIuNjM1
OSAgICAgICAgICBtaWdodCBiZSAxLjE0MTB4IGZhc3RlcgogICBkb3VibGUtdG8tdWludDMyLXR5
cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICA0LjAzMDMrLTAuMTQ2MiAgICAgICAgICAg
IDQuMDIxOSstMC4yODI3ICAgICAgICAKICAgc3RyaW5nLWNvbmNhdC1sb25nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1NS4xODgxKy0yLjE2MjggICAgID8gICAgIDU1Ljg2MTArLTEu
OTQ2MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjJ4IHNsb3dlcgogICBnZXQtYnktaWQtYmltb3Jw
aGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NDczKy0wLjQ2MzYgICAg
ICAgICAgICAzLjczMTArLTAuMzM3OSAgICAgICAgICBtaWdodCBiZSAxLjA1ODB4IGZhc3Rlcgog
ICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgIDE1LjAx
ODYrLTEuMDEwNiAgICAgPyAgICAgMTUuMjgzNCstMS4xMjU2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE3Nnggc2xvd2VyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0ICAgICAgICAgICAg
ICAgICAgICAgMTkuNTg3MSstMC43MjYzICAgICAgICAgICAxOS4zMTA0Ky0wLjg0NTQgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTQzeCBmYXN0ZXIKICAgaXMtbnVtYmVyLWZvbGQtdHJpY2t5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS4wMjYyKy0wLjIwMjYgICAgICAgICAgICA0LjkzMDAr
LTAuODgxMiAgICAgICAgICBtaWdodCBiZSAxLjAxOTV4IGZhc3RlcgogICBzdHJpbmctc2xpY2Ut
b25lLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjc2MzgrLTAuNjE1NSAgICAg
PyAgICAgMTAuODk0OCstMC43NDAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMnggc2xvd2VyCiAg
IGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAgIDYuMjg3
NystMC45ODYzICAgICAgICAgICAgNi4wOTIyKy0wLjM3NTUgICAgICAgICAgbWlnaHQgYmUgMS4w
MzIxeCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXJlcGxhY2Utb3ItdHJh
bnNpdGlvbi1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTMuOTgyNistMi4zMjI3ICAgICA/ICAgICAxNS43MDg4Ky04
LjY2MjEgICAgICAgID8gbWlnaHQgYmUgMS4xMjM1eCBzbG93ZXIKICAgb2J2aW91cy1zaW5rLXBh
dGhvbG9neSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi40Mzg4Ky0xLjMwMjUgICAgID8g
ICAgIDIyLjc2ODkrLTAuNTM1MiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDd4IHNsb3dlcgogICBs
YXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjI3MTIr
LTEuMjA1NiAgICAgICAgICAgMTQuMDc1MystMC44ODc1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEz
OXggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAg
ICAgICAgMzUuNDIxNCstMC44ODI0ICAgICA/ICAgICAzNy40ODQwKy0zLjUxMDAgICAgICAgID8g
bWlnaHQgYmUgMS4wNTgyeCBzbG93ZXIKICAgb2JqZWN0LWtleXMtbWFwLXZhbHVlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1OS4xNzEyKy0yLjc2NzkgICAgID8gICAgIDYwLjA4MzUrLTQu
NzEwNiAgICAgICAgPyBtaWdodCBiZSAxLjAxNTR4IHNsb3dlcgogICBkZmctaW50ZXJuYWwtZnVu
Y3Rpb24tbm90LWhhbmRsZWQtY29uc3RydWN0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTQ5NistMC42ODU0ICAgICAgICAgICAgMS43
MDI5Ky0wLjA2MzUgICAgICAgICAgbWlnaHQgYmUgMS4xNDQ5eCBmYXN0ZXIKICAgd2Vhay1tYXAt
a2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS41OTU5Ky0yLjE3MjIg
ICAgID8gICAgIDUxLjE3MDErLTMuNTQ2NiAgICAgICAgPyBtaWdodCBiZSAxLjAzMTd4IHNsb3dl
cgogICBkZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjg2
NDkrLTAuMDYyNyAgICAgICAgICAgIDAuODAzNCstMC4wNDI5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDc2NnggZmFzdGVyCiAgIGdldF9jYWxsZWVfcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuNDc3NSstMS4wMTM5ICAgICAgICAgICAgOS44NTE0Ky0wLjg0ODQgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjM2eCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy1zd2FwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy4wMjU5Ky0wLjUyNTYgICAgICAgICAgICA2Ljc1MDMr
LTAuODU1OCAgICAgICAgICBtaWdodCBiZSAxLjA0MDh4IGZhc3RlcgogICBlbGlkYWJsZS1uZXct
b2JqZWN0LXJvZmxjb3B0ZXIgICAgICAgICAgICAgICAgICAgIDI1LjU4NjgrLTAuNzc1MCAgICAg
PyAgICAgMjUuOTcxNCstMS40Nzc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1MHggc2xvd2VyCiAg
IHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDYuODgw
NCstMC45MDQ4ICAgICA/ICAgICAgNy4zNzYyKy0xLjMwNjIgICAgICAgID8gbWlnaHQgYmUgMS4w
NzIxeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtaWdub3JlQ2FzZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjY4MjUrLTAuMDczOCAgICAgPyAgICAgIDAuNzEzNystMC4yMzY5
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ1N3ggc2xvd2VyCiAgIGV4aXQtbGVuZ3RoLW9uLXBsYWlu
LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgMTUuNjU2MCstMS43ODMwICAgICA/ICAgICAx
Ny43NTE1Ky04LjIxMzggICAgICAgID8gbWlnaHQgYmUgMS4xMzM4eCBzbG93ZXIKICAgb2JqZWN0
LWludC1zdWItYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi41NzQ1Ky0wLjk3
NzQgICAgICAgICAgIDE2LjQzNzUrLTAuNTg2NyAgICAgICAgCiAgIGZvbGQtcHV0LXN0cnVjdHVy
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguOTA2OSstMi41NTY0ICAgICA/ICAg
ICAgOS4zMTE4Ky0zLjA4ODEgICAgICAgID8gbWlnaHQgYmUgMS4wNDU1eCBzbG93ZXIKICAgYmln
c3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICAgICAgICAgICA5OC4xMzM0Ky0x
My4zODA2ICAgICAgICAgIDk0LjAzODMrLTEuODk3MCAgICAgICAgICBtaWdodCBiZSAxLjA0MzV4
IGZhc3RlcgogICBwb2x5bW9ycGhpYy1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE3LjYyODQrLTAuOTg4MyAgICAgICAgICAgMTYuNjgxNCstMC43MjU0ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDU2OHggZmFzdGVyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10by1t
dWx0aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYuMjM3NSstMS4yMTI2ICAgICAgICAgICAxMy43MjIwKy0xLjcz
NzMgICAgICAgICAgbWlnaHQgYmUgMS4xODMzeCBmYXN0ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJy
YXktZW50cmllcyAgICAgICAgICAgICAgICAgICAgICAxMS44MjQzKy0xLjI4OTMgICAgICAgICAg
IDExLjAyNTUrLTEuNDM3NyAgICAgICAgICBtaWdodCBiZSAxLjA3MjV4IGZhc3RlcgogICBmYWtl
LWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQgICAgICAgICAgMTEwLjgxMTcrLTcu
MTg2NyAgICAgICAgICAxMDkuMjM3OCstNS4zNTg0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NHgg
ZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjAy
NDMrLTAuMzk4NiAgICAgICAgICAgIDkuNTE2OSstMC40MDI5ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDUzM3ggZmFzdGVyCiAgIHN0cmluZy10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuOTM2NCstMS40MDI4ICAgICAgICAgICAgNC4wMDAwKy0wLjM1NzAgICAgICAg
ICAgbWlnaHQgYmUgMS4yMzQxeCBmYXN0ZXIKICAgc3RyaW5nYWxsb2MgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExOC4yMTQ4Ky0yLjQ5MjIgICAgID8gICAgMTE5LjAzMDgr
LTIuMzA3MiAgICAgICAgPwogICBwb2x5LWNoYWluLWFjY2Vzcy1zaW1wbGVyICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjA3MjErLTAuNTg2NyAgICAgICAgICAgIDQuMDA1OCstMC4zNTE5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE2NnggZmFzdGVyCiAgIGRpcmVjdC1hcmd1bWVudHMtcG9zc2li
bHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOS41MzkyKy0wLjUzODMgICAgID8gICAgIDEwLjE1ODUrLTEu
MDE1NiAgICAgICAgPyBtaWdodCBiZSAxLjA2NDl4IHNsb3dlcgogICBnbG9iYWwtY29kZS1mdGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3LjIwMDArLTEuODg3MSAgICAgICAg
ICAgNDUuOTEyMCstMS40OTEwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4MXggZmFzdGVyCiAgIGZ0
bC1wb2x5bW9ycGhpYy1iaXR4b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzIuNzEzNyst
Mi41NzI4ICAgICA/ICAgIDE3NC4yODc0Ky0yLjE3NjkgICAgICAgID8KICAgZG91YmxlLWFycmF5
LXRvLXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OC43NjQ0Ky00LjAzNjcgICAg
ICAgICAgIDc2LjEyODYrLTEuMzc1NyAgICAgICAgICBtaWdodCBiZSAxLjAzNDZ4IGZhc3Rlcgog
ICBwdXQtYnktdmFsLWRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjYz
MDUrLTAuMDI3NyAgICAgPyAgICAgIDAuNjczMistMC4wNjM1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDY3N3ggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFjZS1hbmQtdHJhbnNp
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE0Ljg4MTMrLTAuNTgzNiAgICAgPyAgICAgMTguMDc2NCstNy41MzIzICAgICAgICA/IG1p
Z2h0IGJlIDEuMjE0N3ggc2xvd2VyCiAgIGNhcHR1cmVkLWFzc2lnbm1lbnRzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNzE2NistMC4wNDU3ICAgICAgICAgICAgMC42OTIwKy0wLjA1
NDkgICAgICAgICAgbWlnaHQgYmUgMS4wMzU1eCBmYXN0ZXIKICAgY2FsbC1vci1ub3QtY2FsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MS41MDQyKy0yLjAyNDUgICAgID8gICAg
IDQ4LjcwMjYrLTE3LjMzNTMgICAgICAgPyBtaWdodCBiZSAxLjE3MzR4IHNsb3dlcgogICBmdGwt
cG9seW1vcnBoaWMtdXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgMjU5LjEwMDIrLTgx
Ljk4NjIgICAgICAgICAyMzAuOTMxOSstNi45Mzk5ICAgICAgICAgIG1pZ2h0IGJlIDEuMTIyMHgg
ZmFzdGVyCiAgIG1hcnNhZ2xpYS1sYXJnZXItaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODUuNjk0NSstMS44NDM0ICAgICA/ICAgICA4Ni4zNTEyKy0xLjgwODggICAgICAgID8KICAg
aXMtZnVuY3Rpb24tZm9sZC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy44MzAyKy0wLjYzMTYg
ICAgID8gICAgIDE0LjI4MzArLTAuODA5MSAgICAgICAgPyBtaWdodCBiZSAxLjAzMjd4IHNsb3dl
cgogICBtYXRoLXRydW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
LjkzNDQrLTEuMDE4NSAgICAgICAgICAgIDguMDM3OCstMC4zNTMwICAgICAgICAgIG1pZ2h0IGJl
IDEuMTExNXggZmFzdGVyCiAgIG9iamVjdC1pbnQtYW5kLWFycmF5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTYuMjM4MCstMC45MDYzICAgICA/ICAgICAxNi41ODE5Ky0xLjEzMDAgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjEyeCBzbG93ZXIKICAgZG91YmxlLXBvbGx1dGlvbi1wdXRieW9m
ZnNldCAgICAgICAgICAgICAgICAgICAgICAgNS41NzEwKy0wLjE4NjQgICAgID8gICAgICA2Ljk1
MzkrLTIuODY1OCAgICAgICAgPyBtaWdodCBiZSAxLjI0ODJ4IHNsb3dlcgogICBhc3NpZ24tY3Vz
dG9tLXNldHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgIDE2LjM4ODUrLTAuNTIxMSAg
ICAgPyAgICAgMTYuOTEwNCstMC43NzY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxOHggc2xvd2Vy
CiAgIG1vZC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAu
MTI2OSstMC43MDA1ICAgICA/ICAgICAxMC4xNjk3Ky0wLjcxMjQgICAgICAgID8KICAgaXMtZnVu
Y3Rpb24tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS40OTE3Ky0xLjM5
OTkgICAgICAgICAgICA1LjE0ODcrLTAuMjI3NCAgICAgICAgICBtaWdodCBiZSAxLjA2NjZ4IGZh
c3RlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtMTAgICAgICAgICAgICAgICAgICAg
ICAxLjc3NzgrLTAuMDM1MiAgICAgICAgICAgIDEuNzMxNCstMC4wMjQ2ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDI2OHggZmFzdGVyCiAgIGFwcGx5LW5vdC1hcHBseSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuMDQ5NCstMC41NzAyICAgICAgICAgICAgNi44NTQ3Ky0wLjcyNzYg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjg0eCBmYXN0ZXIKICAgSGFzaE1hcC1zdHJpbmctcHV0LWdl
dC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAzNi45MTE3Ky0xLjcyODAgICAgICAgICAgIDM1
LjIzMjUrLTEuNjQ0OSAgICAgICAgICBtaWdodCBiZSAxLjA0Nzd4IGZhc3RlcgogICBtdWwtYm9v
bGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ0OTArLTAuMjYz
MiAgICAgPyAgICAgIDMuNjk3NCstMC40MjUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDcyMHggc2xv
d2VyCiAgIHNjb3BlZC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAgICAgICAgICAgICAg
IDkuNjI2NistMC43OTc1ICAgICAgICAgICAgOS41MDY1Ky0wLjY3NTkgICAgICAgICAgbWlnaHQg
YmUgMS4wMTI2eCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10d28tdmFycyAgICAg
ICAgICAgICAgICAgICAgOS4wNTk3Ky0wLjU2NDMgICAgID8gICAgICA5LjExNTIrLTAuOTM2OSAg
ICAgICAgPwogICBzaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4Ljg1MjIrLTAuNDM1NyAgICAgPyAgICAgIDkuNzAyOSstMS4zNTc3ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDk2MXggc2xvd2VyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuODgwNCstMC4yNTQ2ICAgICA/ICAgICAgNi4zNjU1Ky0wLjc1
OTMgICAgICAgID8gbWlnaHQgYmUgMS4wODI1eCBzbG93ZXIKICAgdG8taW50MzItYm9vbGVhbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi43NjYzKy0xLjE0NTEgICAgID8gICAg
IDE5LjM1OTQrLTQuNDI2NiAgICAgICAgPyBtaWdodCBiZSAxLjE1NDd4IHNsb3dlcgogICB0cnkt
Y2F0Y2gtd29yZC1jb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLjcyMTIrLTEu
MDIwOCAgICAgPyAgICAgNDMuODk1NSstMi42MzkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3NXgg
c2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYuNTUzOCstMC40NTUzICAgICA/ICAgICAxNi44MTM5Ky0wLjM0MDMgICAgICAgID8gbWln
aHQgYmUgMS4wMTU3eCBzbG93ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXB1dC1i
eS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNy45MzQ5Ky0yLjU1OTkgICAgICAgICAgICA2LjM2NTIrLTAuOTc1NyAgICAgICAg
ICBtaWdodCBiZSAxLjI0NjZ4IGZhc3RlcgogICBzaW1wbGUtcG9seS1jYWxsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjk2OTQrLTAuMDg1OSAgICAgPyAgICAgIDEuOTk1NSst
MC4xNDg2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzM3ggc2xvd2VyCiAgIG9idmlvdXMtc2luay1w
YXRob2xvZ3ktdGFrZW4gICAgICAgICAgICAgICAgICAgICAxMjQuNTU5MistMi40ODU4ICAgICAg
ICAgIDEyMi41ODczKy0yLjM2NzUgICAgICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIKICAg
bWFyc2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi45ODYz
Ky0xLjMyMDYgICAgICAgICAgIDIyLjQ2NjArLTAuNDg0OSAgICAgICAgICBtaWdodCBiZSAxLjAy
MzJ4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1
Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNS4wNTQyKy0xLjI0OTcgICAgICAgICAgIDEzLjk1NzUrLTAuOTgw
NCAgICAgICAgICBtaWdodCBiZSAxLjA3ODZ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtc3Vi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjA1LjY2ODUrLTMuOTE5MyAgICAgPyAgICAy
MDcuNzUxNystMy43Mzg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCiAgIG1ldGhv
ZC1vbi1udW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNDE5NSstMC44
OTUyICAgICA/ICAgICAyMC45NjE4Ky0xLjQ2MDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjY2eCBz
bG93ZXIKICAgZ2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExMy42MTM3Ky02Ljg3NTQgICAgID8gICAgMTE0LjA0NzYrLTYuMTY3NyAgICAgICAgPwogICBh
cnJheS1wcm90b3R5cGUtc29tZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjQ0Mzkr
LTEzLjg2MTEgICAgPyAgICAgNDguNzM3NSstMjcuNzE0NSAgICAgICA/IG1pZ2h0IGJlIDEuMTIx
OHggc2xvd2VyCiAgIHR5cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAg
ICAgICAgMjcuMzc1MystMC40Mjg3ICAgICA/ICAgICAyOC4wNzQyKy0yLjE5MDcgICAgICAgID8g
bWlnaHQgYmUgMS4wMjU1eCBzbG93ZXIKICAgdW50eXBlZC1zdHJpbmctZnJvbS1jaGFyLWNvZGUg
ICAgICAgICAgICAgICAgICAgICAxNC41MTIyKy0xLjAzNzggICAgICAgICAgIDE0LjI4NzIrLTEu
MzIxMiAgICAgICAgICBtaWdodCBiZSAxLjAxNTd4IGZhc3RlcgogICBJbnQzMkFycmF5LWFsbG9j
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM3MjIrLTMuOTQzNiAgICAgICAg
ICAgIDYuMjU1NSstMS41MzQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMTc4NXggZmFzdGVyCiAgIGJh
c2ljLXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMjUwOSst
MS42ODE2ICAgICA/ICAgICAxMS4zNDk5Ky0xLjk2MzkgICAgICAgID8gbWlnaHQgYmUgMS4xMDcy
eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtbm90LXJlc29sdmluZyAgICAgICAgICAg
ICAgICAxMC4yNTM1Ky0wLjQzMjUgICAgID8gICAgIDEwLjUxODArLTAuMzQ2NCAgICAgICAgPyBt
aWdodCBiZSAxLjAyNTh4IHNsb3dlcgogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LjE2MzkrLTEuMDYxOSAgICAgPyAgICAgIDQuMTg0OCstMC4z
ODM0ICAgICAgICA/CiAgIGdldHRlci1wcm90b3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcuNTE5NistMC42MjgyICAgICAgICAgICAgNy4zOTM0Ky0wLjc4MjkgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTcxeCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNzY5NSstMC4xMjE4ICAgICAgICAgICAgMC43MTU4Ky0w
LjA2MDcgICAgICAgICAgbWlnaHQgYmUgMS4wNzUweCBmYXN0ZXIKICAgaW5saW5lLWFyZ3VtZW50
cy1sb2NhbC1lc2NhcGUgICAgICAgICAgICAgICAgICAgICAgNy42NjQzKy01LjA3MzkgICAgICAg
ICAgICA1LjE3MDcrLTAuNjY0NSAgICAgICAgICBtaWdodCBiZSAxLjQ4MjN4IGZhc3RlcgogICBs
YXp5LWFycmF5LXNwZWNpZXMtd2F0Y2hwb2ludHMgICAgICAgICAgICAgICAgICAgIDI3LjI0Mzgr
LTEuMTQ1NSAgICAgICAgICAgMjYuMTc5NistMC42MTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQw
NnggZmFzdGVyCiAgIGFyZ3VtZW50cy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTMuNzMxNistMC42NDE1ICAgICA/ICAgICAxNC4xNjY5Ky0xLjA0MjcgICAgICAgID8g
bWlnaHQgYmUgMS4wMzE3eCBzbG93ZXIKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIyNy4yMjU3Ky01Ljg2OTIgICAgID8gICAgMjI4LjE0OTArLTcu
MTU4NiAgICAgICAgPwogICB0by1udW1iZXItb25seS1zdHJpbmcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjQ0OTYrLTAuMjEzNyAgICAgPyAgICAgIDIuNzIwMystMC41MTcwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMTEwNXggc2xvd2VyCiAgIHNpbXBsZS1hY3RpdmF0aW9uLWRlbW8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjIuNzI0MistMC44MDAzICAgICA/ICAgICAyNS44MTcw
Ky0yLjM5NjEgICAgICAgID8gbWlnaHQgYmUgMS4xMzYxeCBzbG93ZXIKICAgRmxvYXQ2NEFycmF5
LXRvLUludDE2QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICA2OS4wOTU3Ky03Ljk1NTcgICAg
ICAgICAgIDY2LjI3MjYrLTIuMjA1MSAgICAgICAgICBtaWdodCBiZSAxLjA0MjZ4IGZhc3Rlcgog
ICByZWdleHAtcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41Nzgy
Ky0wLjAxMzggICAgID8gICAgICAwLjkxNDkrLTAuODY1NSAgICAgICAgPyBtaWdodCBiZSAxLjU4
MjN4IHNsb3dlcgogICBnbG9iYWwtaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE4Ljg3NDYrLTQuMDYzMSAgICAgICAgICAgMTcuMzIxNCstMi40NDQyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDg5N3ggZmFzdGVyCiAgIG9iamVjdC1pbnQtYWRkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTguNjQwNCstMS4yMzY5ICAgICA/ICAgICAxOS42NzA1Ky0x
LjAyMTMgICAgICAgID8gbWlnaHQgYmUgMS4wNTUzeCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50
cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgMS40NzQ3Ky0wLjIwMzMgICAgICAg
ICAgICAxLjQ2OTYrLTAuMDkzMSAgICAgICAgCiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkuNzAzNSstMC43OTM2ICAgICA/ICAgICAxMC4xODM1
Ky0xLjE5NTggICAgICAgID8gbWlnaHQgYmUgMS4wNDk1eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVh
dC1zbWFsbC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgNS4wNjkxKy0xLjM0NjkgICAg
ICAgICAgICA1LjAwNTIrLTEuMTcxMSAgICAgICAgICBtaWdodCBiZSAxLjAxMjh4IGZhc3Rlcgog
ICBvYmplY3Qtb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjIw
NjMrLTAuNzE0MiAgICAgPyAgICAgIDcuNjkzMistMC43ODA5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDY3Nnggc2xvd2VyCiAgIGltcGxpY2l0LWJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAg
ICAgICAgICAgNjUuODMxNCstMC43MTAwICAgICAgICAgICA2NS4zMTM4Ky0xLjM5MDMgICAgICAg
IAogICBjcmVhdGUtbG90cy1vZi1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
Ljk0MDUrLTMuNDU1NSAgICAgICAgICAgMTAuMzYyMSstMC4zNjIyICAgICAgICAgIG1pZ2h0IGJl
IDEuMTUyM3ggZmFzdGVyCiAgIHBvbHltb3JwaGljLXB1dC1ieS1pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIuODU4OSstMi42ODYxICAgICAgICAgICAzMS43NzgyKy0wLjQzMzkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzQweCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzE1MystMC4yNDgwICAgICAgICAgICAg
MC42NDU1Ky0wLjA0NzQgICAgICAgICAgbWlnaHQgYmUgMS4xMDgxeCBmYXN0ZXIKICAgb2JqZWN0
LXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4yMTY0Ky0wLjQx
MzYgICAgID8gICAgICA3LjYzNDQrLTEuMDAwMCAgICAgICAgPyBtaWdodCBiZSAxLjA1Nzl4IHNs
b3dlcgogICBwbHVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjczNzcrLTAuOTQ2MyAgICAgICAgICAgIDMuNTY1MSstMS4wMDEyICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ4NHggZmFzdGVyCiAgIG1hcC1oYXMtZ2V0LWNzZS1vcHBvcnR1bml0eSAgICAgICAg
ICAgICAgICAgICAgICAxMDIuMTU1MystMi43NjQ5ICAgICAgICAgIDEwMS44MDA2Ky0yLjA1Njkg
ICAgICAgIAogICByYXl0cmFjZS13aXRoLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEzLjIxNDIrLTEuOTEwMyAgICAgICAgICAgMTMuMTUwOSstMS44ODQ0ICAgICAgICAKICAg
Ym91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICA5NS4yOTAy
Ky0yLjM5OTkgICAgID8gICAgIDk2LjE1MjUrLTEuNjE5OSAgICAgICAgPwogICBvYmplY3QtbHNo
aWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjAzMTQrLTAuOTE1NyAg
ICAgICAgICAgIDcuNTM1NCstMC43Mzk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY1OHggZmFzdGVy
CiAgIHNpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAgICAgMjgu
OTUyNCstNi40MDQwICAgICAgICAgICAyNS42NDA1Ky0wLjQxMDQgICAgICAgICAgbWlnaHQgYmUg
MS4xMjkyeCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtaW5jcmVtZW50ICAgICAgICAgICAg
ICAgICAgICAgICAgNC44NDczKy0wLjI0MTYgICAgID8gICAgICA1LjAzNzYrLTAuMTgyNiAgICAg
ICAgPyBtaWdodCBiZSAxLjAzOTN4IHNsb3dlcgogICBhcnJheS1wcm90b3R5cGUtbWFwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjA5MzYrLTQuNjMxNiAgICAgPyAgICAgNDUuNjAz
OCstNC45MzIwICAgICAgICA/IG1pZ2h0IGJlIDEuMDU4M3ggc2xvd2VyCiAgIHNvcnRpbmctYmVu
Y2htYXJrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNzk0NCstMC43NzA4ICAg
ICA/ICAgICAyNS4yNzYyKy0wLjc5NzQgICAgICAgID8gbWlnaHQgYmUgMS4wMTk0eCBzbG93ZXIK
ICAgRmxvYXQzMkFycmF5LXRvLUZsb2F0NjRBcnJheS1zZXQgICAgICAgICAgICAgICAgICA0OS45
ODYzKy0zLjU3NzcgICAgICAgICAgIDQ3LjM4NjgrLTIuMDcyMyAgICAgICAgICBtaWdodCBiZSAx
LjA1NDl4IGZhc3RlcgogICBzcHJlYWQtbGFyZ2UtYXJyYXkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTc2LjM5MzUrLTIuOTg3OCAgICAgPyAgICAxNzguMjA4MSstMi42NDI0ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEwM3ggc2xvd2VyCiAgIGJvdW5kLWZ1bmN0aW9uLWNhbGwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTMuOTU4MCstMS4yODg4ICAgICAgICAgICAxMy43Nzg3
Ky0wLjYwMzMgICAgICAgICAgbWlnaHQgYmUgMS4wMTMweCBmYXN0ZXIKICAgbmV3LWFycmF5LWJ1
ZmZlci1wdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44NzkxKy0wLjg3MzcgICAg
ID8gICAgICA3Ljk0OTErLTEuNjA5MyAgICAgICAgPyBtaWdodCBiZSAxLjE1NTV4IHNsb3dlcgog
ICBzd2l0Y2gtc3RyaW5nLWJhc2ljLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjEw
NDArLTEuNDI0OSAgICAgPyAgICAgMTguNjMwMCstMi4wMjg1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI5MXggc2xvd2VyCiAgIHJlcGVhdC1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICAg
ICAgICAgICAgMjEuMzEzMistMS45NTk4ICAgICA/ICAgICAyMi4xOTMwKy0xLjgxMjIgICAgICAg
ID8gbWlnaHQgYmUgMS4wNDEzeCBzbG93ZXIKICAgaXMtYXJyYXktZm9yLXByb3h5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS4xNTE1Ky0wLjk2NzAgICAgICAgICAgICA0LjkzOTEr
LTAuNjcyNiAgICAgICAgICBtaWdodCBiZSAxLjA0MzB4IGZhc3RlcgogICBkb3VibGUtZ2V0LWJ5
LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICA3LjAyNTUrLTEuMDcxNCAgICAg
PyAgICAgIDcuMDgyNystMC43MjYyICAgICAgICA/CiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNo
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjc3OTkrLTAuMjIwNyAgICAgPyAgICAgIDAuODM3
MystMC4yNjE2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDczNnggc2xvd2VyCiAgIG1lZ2Ftb3JwaGlj
LWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYuNzMyOSstMS45MzkxICAg
ICA/ICAgICA0MS4wODYxKy0xNC45MDk1ICAgICAgID8gbWlnaHQgYmUgMS4xMTg1eCBzbG93ZXIK
ICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAgICAgICAgICAyOC45
MjkwKy0wLjU4NTggICAgID8gICAgIDI5LjU4NDQrLTEuODYxMyAgICAgICAgPyBtaWdodCBiZSAx
LjAyMjd4IHNsb3dlcgogICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIxLjQxMzErLTAuOTgzNCAgICAgPyAgICAgMjEuNzQzMSstMC45MzA2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE1NHggc2xvd2VyCiAgIGZvbGQtcHV0LWJ5LWlkLXRvLW11bHRpLXB1
dC1ieS1vZmZzZXQgICAgICAgICAgICAgMTQuNzU0OCstMi4wNzg4ICAgICAgICAgICAxMy4yOTc0
Ky0yLjYyMjYgICAgICAgICAgbWlnaHQgYmUgMS4xMDk2eCBmYXN0ZXIKICAgc3RyaW5nLXRyYW5z
Y29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS42MjcxKy0xLjA5NzYgICAg
ID8gICAgIDExLjcwOTYrLTMuMjcxMiAgICAgICAgPyBtaWdodCBiZSAxLjIxNjN4IHNsb3dlcgog
ICB3ZWlyZC1pbmxpbmluZy1jb25zdC1wcm9wICAgICAgICAgICAgICAgICAgICAgICAgICAzLjcy
OTErLTAuNDcwNyAgICAgICAgICAgIDMuNjEwMSstMC45NDM0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMzMHggZmFzdGVyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcuOTk4NSstMC44NzYwICAgICAgICAgICAgNy4yMjUzKy0wLjU4NjYgICAgICAg
ICAgbWlnaHQgYmUgMS4xMDcweCBmYXN0ZXIKICAgbWlzYy1zdHJpY3QtZXEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyOC45MzU1Ky0wLjk0NTYgICAgID8gICAgIDI5LjA2MzIr
LTEuNDQ4NyAgICAgICAgPwogICBwb2x5LXByb3RvLWNsZWFyLWpzLWZ1bmN0aW9uLWFsbG9jYXRp
b24tcHJvZmlsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIwLjY5ODIrLTAuNDU5MCAgICAgPyAgICAgMjEuNzgzNSstMS41NjE2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDUyNHggc2xvd2VyCiAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwtdHlw
ZXMgICAgICAgICAgICAgICAgICAgICAxMjYuMzM3NistMjEuMjM3NSAgICA/ICAgIDEzOC43NzA4
Ky0yNS45ODcwICAgICAgID8gbWlnaHQgYmUgMS4wOTg0eCBzbG93ZXIKICAgc3RyaW5nLWhhc2gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wOTc0Ky0wLjMwNjkgICAg
ID8gICAgICAzLjQ3NDkrLTEuMjQ0NyAgICAgICAgPyBtaWdodCBiZSAxLjEyMTl4IHNsb3dlcgog
ICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICA0LjM2
NTYrLTEuNjEwMSAgICAgICAgICAgIDMuNTUwMystMC4zNjExICAgICAgICAgIG1pZ2h0IGJlIDEu
MjI5NnggZmFzdGVyCiAgIGluZmVyLWNvbnN0YW50LWdsb2JhbC1wcm9wZXJ0eSAgICAgICAgICAg
ICAgICAgICAgIDQuMjU1MystMC41MzQzICAgICAgICAgICAgNC4wNzE3Ky0wLjQxNjYgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDUxeCBmYXN0ZXIKICAgY2FsbC11c2luZy1zcHJlYWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMi41MTg4Ky0wLjY2NjcgICAgID8gICAgIDEzLjA5OTQr
LTAuNjA3NiAgICAgICAgPyBtaWdodCBiZSAxLjA0NjR4IHNsb3dlcgogICBpbnQ1Mi1zcGlsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjgxNTIrLTAuOTk0MSAgICAg
ICAgICAgIDcuNDM4NSstMS4xOTg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUwNnggZmFzdGVyCiAg
IGdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjM5
NistMC40NDcxICAgICA/ICAgICAgNi4wMTg2Ky0wLjYxNTUgICAgICAgID8gbWlnaHQgYmUgMS4w
NjcyeCBzbG93ZXIKICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy44MjM2Ky0wLjU4MjIgICAgICAgICAgICAzLjYzMTgrLTAuNjQwMSAgICAgICAg
ICBtaWdodCBiZSAxLjA1Mjh4IGZhc3RlcgogICBsYXJnZS1pbnQtY2FwdHVyZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ljc1NTcrLTEuNDQ4MCAgICAgPyAgICAgIDUuNzk3OSst
MS4zMzA0ICAgICAgICA/CiAgIHNpbmthYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDkuODEyOSstMC42MzcyICAgICA/ICAgICA1MS4yODQ5Ky0zLjg2NjggICAg
ICAgID8gbWlnaHQgYmUgMS4wMjk2eCBzbG93ZXIKICAgZXZhbC1jb21wdXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNC4wMTIzKy0yLjY0OTEgICAgICAgICAgIDMyLjM1
NTgrLTAuMzc5MyAgICAgICAgICBtaWdodCBiZSAxLjA1MTJ4IGZhc3RlcgogICBzd2l0Y2gtc3Ry
aW5nLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgICAgIDE3Ljg5NjgrLTAuNjgwOCAg
ICAgPyAgICAgMTguMzA4MystMC45NDk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzMHggc2xvd2Vy
CiAgIGFycm93ZnVuY2l0b24tZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgIDEu
NTIyOSstMC4xNDMwICAgICAgICAgICAgMS40NTA2Ky0wLjAzODEgICAgICAgICAgbWlnaHQgYmUg
MS4wNDk4eCBmYXN0ZXIKICAgaG9pc3QtbWFrZS1yb3BlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi42OTQ1Ky0xLjY5NzIgICAgICAgICAgICA2LjE3OTMrLTAuODYxNiAgICAg
ICAgICBtaWdodCBiZSAxLjA4MzR4IGZhc3RlcgogICBlbXB0eS1zdHJpbmctcGx1cy1pbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3LjgwMTMrLTEuNTgwOSAgICAgICAgICAgIDYuODM3
MystMC4xNDU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTQxMHggZmFzdGVyCiAgIHY4LXJlZ2V4cC1z
ZWFyY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzAuNTk4MCstMi42NDQ3ICAg
ICAgICAgICA3MC4wNTM1Ky0zLjIxNjYgICAgICAgIAogICBzeW1ib2wtdG9zdHJpbmd0YWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc2OTcrLTAuMzI5MiAgICAgICAgICAgIDMu
Njk3NCstMC4yMjQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5NXggZmFzdGVyCiAgIHN0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcxNjArLTAu
MDMxNiAgICAgPyAgICAgIDAuNzUwNCstMC4xMDg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4MXgg
c2xvd2VyCiAgIHBvbHktcHJvdG8tYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjUuNDIwMystMi4yODgxICAgICA/ICAgICA2OC43Nzg1Ky00LjA0MDYgICAgICAgID8gbWln
aHQgYmUgMS4wNTEzeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2Ug
ICAgICAgICAgICAgICAgICAgMC43MjIyKy0wLjExMzggICAgICAgICAgICAwLjY2ODErLTAuMDIx
MiAgICAgICAgICBtaWdodCBiZSAxLjA4MTF4IGZhc3RlcgogICByZWdleHAtbmVzdGVkLW5vbnpl
cm8tbWluLWNvdW50ZWQtcGFyZW5zICAgICAgICAgICAwLjU2OTMrLTAuMTczMyAgICAgICAgICAg
IDAuNTE1MystMC4wMjU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTA0N3ggZmFzdGVyCiAgIGluZGV4
ZWQtcHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDQuMjMwNystMC4z
ODgzICAgICA/ICAgICAgNC42ODQ1Ky0wLjQyNDkgICAgICAgID8gbWlnaHQgYmUgMS4xMDczeCBz
bG93ZXIKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgNy45MDA4Ky0wLjYzMjcgICAgID8gICAgICA4Ljg0NDIrLTEuNTQxNyAgICAgICAgPyBtaWdo
dCBiZSAxLjExOTR4IHNsb3dlcgogICByYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgICAgICA3LjUyMTErLTIuMDg4NyAgICAgPyAgICAgIDkuNDgzNCstMi4wODk2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMjYwOXggc2xvd2VyCiAgIGludC1vci1vdGhlci1tdWwtdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDguMDE2NSstMC45MTgzICAgICAgICAgICAg
Ny45OTM2Ky0wLjY1OTkgICAgICAgIAogICB0ZW1wb3JhbC1zdHJ1Y3R1cmUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE1Ljg3NjIrLTAuODI4MyAgICAgPyAgICAgMTUuOTU5NistMC4z
MTYxICAgICAgICA/CiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTguMjE3NystMS40MDQ2ICAgICAgICAgICAxNy44ODU1Ky0xLjExNzAgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTg2eCBmYXN0ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ni4yMDkwKy0xLjQ2NzcgICAgICAgICAgIDU1LjMzNzAr
LTAuNDI2NSAgICAgICAgICBtaWdodCBiZSAxLjAxNTh4IGZhc3RlcgogICBkaXJlY3QtYXJndW1l
bnRzLWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQ4ODQrLTAuODkxMSAgICAg
PyAgICAgMTEuMzc3MCstMi43MjczICAgICAgICA/IG1pZ2h0IGJlIDEuMTk5MXggc2xvd2VyCiAg
IGNlbGwtYXJndW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDA1
NCstMC4zNDcxICAgICAgICAgICAgNC4zNTQ3Ky0wLjU1MTggICAgICAgICAgbWlnaHQgYmUgMS4w
MTE2eCBmYXN0ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAg
ICAgICAgICAgNS43NTQ5Ky0wLjM3MjcgICAgID8gICAgICA2LjM0NDErLTEuMjM3MyAgICAgICAg
PyBtaWdodCBiZSAxLjEwMjR4IHNsb3dlcgogICBzdHJpbmctb3V0LW9mLWJvdW5kcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEzLjQwMTUrLTAuNTE2NiAgICAgPyAgICAgMTMuNDk0Nyst
MS4wNDQ4ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJpbmdGcm9tQ2hhckNvZGUgICAg
ICAgICAgICAgICAgNjAuMDEwMistNC4zNTcyICAgICAgICAgICA1Ny44NjM5Ky0yLjU5NTcgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzcxeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLWZvckVhY2gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNy45MTIzKy0xLjYzODEgICAgID8gICAgIDM4LjE0
MzQrLTEuMTk5OSAgICAgICAgPwogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZy1mYWlsICAg
ICAgICAgICAgICAgICAgICA2LjY3MzMrLTEuNTY2OCAgICAgICAgICAgIDUuODE5OCstMC45NDI1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTQ2N3ggZmFzdGVyCiAgIGludC1vci1vdGhlci1tb2QtdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDYuMTk4MCstMS42MzYwICAgICAgICAgICAg
Ni4xODE0Ky0wLjU4MzUgICAgICAgIAogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC43MzMyKy0wLjA0OTYgICAgID8gICAgICAwLjc0
MjArLTAuMDQ1MSAgICAgICAgPyBtaWdodCBiZSAxLjAxMjB4IHNsb3dlcgogICBzdHJpbmctcmVw
ZWF0LW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICA2LjUzODkrLTIuNzk0MiAg
ICAgICAgICAgIDYuMDE1OCstMS42NjI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg3MHggZmFzdGVy
CiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAu
NjQ5NystMS4xMjU4ICAgICA/ICAgICAzMC44ODk0Ky0xLjI0NDMgICAgICAgID8KICAgcHV0LWJ5
LXZhbC13aXRoLXN5bWJvbC1zbGlnaHRseS1wb2x5bW9ycGhpYyAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjAwNDkrLTAuMzcyMyAgICAg
ICAgICAgIDQuNTQ3OCstMC4zNzc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTAwNXggZmFzdGVyCiAg
IE51bWJlci1pc05hTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNTA5
MSstMS41MTU5ICAgICAgICAgICAxNi45MjU3Ky0wLjU5MzMgICAgICAgICAgbWlnaHQgYmUgMS4w
MzQ1eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhpYy1jaGVjay1z
dHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuOTUyMCstMS4xODAzICAgICA/ICAgICAgNi4w
NDc1Ky0wLjgxOTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTYweCBzbG93ZXIKICAgdHJ5LWNhdGNo
LWdldC1ieS12YWwtc2NvcGVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNy4wMDAzKy0xLjM4Nzgg
ICAgID8gICAgICA3Ljc5MTErLTEuMzc2MCAgICAgICAgPyBtaWdodCBiZSAxLjExMzB4IHNsb3dl
cgogICBldmFsLWNhY2hlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIz
Ljc1NDcrLTAuNzkyOCAgICAgPyAgICAgMjQuMTY5NistMS4yMzAxICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE3NXggc2xvd2VyCiAgIGRpcmVjdC1jb25zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMTUuMTExNystMi40MDUxICAgICA/ICAgIDExNS45MjM0Ky0xLjU1MzkgICAg
ICAgID8KICAgcHJldmVudC1leHRlbnNpb25zLWFuZC1kby13b3JrICAgICAgICAgICAgICAgICAg
ICAxOC40MTkyKy0wLjk5ODcgICAgID8gICAgIDIxLjg2MjQrLTUuMjg2MCAgICAgICAgPyBtaWdo
dCBiZSAxLjE4Njl4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjY3NzArLTAuMTcwMCAgICAgPyAgICAgIDAuNjk2OSstMC4x
MTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5NHggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmpl
Y3QtdGhlbi1jYWxsICAgICAgICAgICAgICAgICAgICAgMjMuNTAwMystMS4zNTM5ICAgICAgICAg
ICAyMi41Njc4Ky0wLjM3ODUgICAgICAgICAgbWlnaHQgYmUgMS4wNDEzeCBmYXN0ZXIKICAgSW50
MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA2NS45Nzk4Ky0x
LjY4NDkgICAgICAgICAgIDY0LjEzMjQrLTMuMzgyMyAgICAgICAgICBtaWdodCBiZSAxLjAyODh4
IGZhc3RlcgogICBvYmplY3QtaW50LW11bC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE2LjIzOTcrLTEuMDAxOSAgICAgICAgICAgMTUuOTc1MSstMS4wNTM1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE2NnggZmFzdGVyCiAgIGdsb2JhbC1vYmplY3QtYWNjZXNzLXdpdGgtbXV0YXRp
bmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDcuNTIxMystMS4xNzM5ICAgICA/ICAgICAgNy43Mjg2Ky0xLjM0NzIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjc2eCBzbG93ZXIKICAgbG9hZC12YXJhcmdzLWVsaW1pbmF0aW9u
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNS4xMzA4Ky0wLjcyMDMgICAgID8gICAgIDE1LjMz
NzgrLTAuODY5MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzd4IHNsb3dlcgogICBudW1iZXItdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjMyNDYrLTAuMzAxNSAg
ICAgPyAgICAgIDQuNDU2NCstMC4yNDI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwNXggc2xvd2Vy
CiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3RoICAgICAgICAgICAgMjgu
MDc4MCstMS4yMzE0ICAgICAgICAgICAyNy4xOTc0Ky0yLjAzMTIgICAgICAgICAgbWlnaHQgYmUg
MS4wMzI0eCBmYXN0ZXIKICAgc3RyaWN0LW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMy43NzU5Ky0wLjg0MzEgICAgICAgICAgIDEzLjc3NTErLTAuNDA4OCAgICAg
ICAgCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1wdXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAg
IDIuOTQ4MistMC41MTI2ICAgICAgICAgICAgMi42ODM2Ky0wLjI0MTQgICAgICAgICAgbWlnaHQg
YmUgMS4wOTg2eCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0OS4xNTYwKy0xLjc1MzUgICAgID8gICAgIDQ5LjM2NzErLTIuMzIzNCAg
ICAgICAgPwogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDI2LjY1NzYrLTEuNTcyNyAgICAgICAgICAgMjYuMzU5NystMS4yNDA4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDExM3ggZmFzdGVyCiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEuMzM4NystMC4xNzM5ICAgICA/ICAgICAgMS41NTg1Ky0wLjgx
MzIgICAgICAgID8gbWlnaHQgYmUgMS4xNjQyeCBzbG93ZXIKICAgc2V0dGVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS44NDUzKy0wLjM0NTUgICAgID8gICAg
ICA2LjQ1NDArLTAuNzM2NCAgICAgICAgPyBtaWdodCBiZSAxLjEwNDF4IHNsb3dlcgogICBnZXRf
YnlfdmFsLUludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ5MTQrLTAu
ODE2OCAgICAgICAgICAgIDIuNDEwMCstMC44Njk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzOHgg
ZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVy
ZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEyLjI1NTMrLTEuMjE4MyAgICAgICAgICAgMTAuNzE3NystMi42MjcxICAg
ICAgICAgIG1pZ2h0IGJlIDEuMTQzNXggZmFzdGVyCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3Jo
cGljLWFjY2VzcyAgICAgICAgICAgICAgICAgMjYuNDMyNCstMS43MTc3ICAgICAgICAgICAyNi4w
NTc4Ky0xLjk2MzQgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBmYXN0ZXIKICAgYXJyYXktd2l0
aC1kb3VibGUtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMjMxKy0wLjU5OTYg
ICAgID8gICAgICA1LjQ2NjQrLTAuNTYzOCAgICAgICAgPyBtaWdodCBiZSAxLjAyNjl4IHNsb3dl
cgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
LjMxODArLTAuNDY5MiAgICAgPyAgICAgIDYuOTUyNCstMS40NDUyICAgICAgICA/IG1pZ2h0IGJl
IDEuMTAwNHggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1zdHJpbmctbnVtYmVyLXN0
cmluZy1udW1iZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC4yMTczKy0wLjI2NjUgICAgID8gICAgICA1LjA5NjkrLTAuODc5MiAgICAg
ICAgPyBtaWdodCBiZSAxLjIwODZ4IHNsb3dlcgogICBpbi1vbmUtY2FzZS1mYWxzZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDExLjkwNDIrLTAuNDEyMyAgICAgPyAgICAgMTIuMTk0
NistMS40MDQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0NHggc2xvd2VyCiAgIGFyZ3VtZW50cy1z
dHJpY3QtbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAuOTk0OSstMS45ODc5ICAg
ICA/ICAgICA1MS43MDE3Ky0yLjM1MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTM5eCBzbG93ZXIK
ICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQtYnVmZmVyICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuNDQxMyst
MS40MTUxICAgICA/ICAgICAzMC45NjQ0Ky00Ljk1NDggICAgICAgID8gbWlnaHQgYmUgMS4wMTcy
eCBzbG93ZXIKICAgbWFwLXJlaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOS40Nzg0Ky0xLjkwNjIgICAgICAgICAgICA5LjI2OTgrLTEuNzUyOCAgICAgICAgICBt
aWdodCBiZSAxLjAyMjV4IGZhc3RlcgogICBieS12YWwtZ2VuZXJpYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjk5MzMrLTEuNTgyOCAgICAgICAgICAgIDMuOTMzMSstMS4x
MTc4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1M3ggZmFzdGVyCiAgIGNhc3QtaW50LXRvLWRvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMTMzOSstMC41MDg0ICAgICA/ICAg
ICAgNy4yMzU2Ky0wLjQzMDkgICAgICAgID8gbWlnaHQgYmUgMS4wMTQzeCBzbG93ZXIKICAgZ2V0
LWJ5LWlkLXByb3RvLW9yLXNlbGYgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS41MzI1Ky0y
LjAwOTIgICAgID8gICAgIDEyLjk3NDcrLTMuMDYxNSAgICAgICAgPyBtaWdodCBiZSAxLjEyNTF4
IHNsb3dlcgogICBmcm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE0LjIxNTErLTAuNDIyMSAgICAgICAgICAgMTQuMTQ3MCstMC43NTI3ICAgICAgICAKICAg
SW50MzJBcnJheS1hbGxvYy1sYXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC40OTIx
Ky0xMS4yNTQ5ICAgICAgICAgIDE0LjM5NTUrLTAuODg4MiAgICAgICAgICBtaWdodCBiZSAxLjI4
NDZ4IGZhc3RlcgogICBpcy11bmRlZmluZWQtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjUyMjQrLTAuNDA3OSAgICAgICAgICAgIDMuMzgxNSstMC4zODc5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDQxN3ggZmFzdGVyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLWRpcmVjdC1h
cmd1bWVudHMgICAgICAgICAgICAgIDMuMzUxOCstMC4yNjM5ICAgICAgICAgICAgMy4zMjM2Ky0w
LjQ3OTUgICAgICAgIAogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgICA2LjM2MTArLTAuNzg0NCAgICAgICAgICAgIDYuMjkxNCstMC41NDgzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDExMXggZmFzdGVyCiAgIHN3aXRjaC1jb25zdGFudCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDguMTg3OSstMS4yNjI2ICAgICA/ICAgICAgOC45ODg2
Ky0xLjUzMTIgICAgICAgID8gbWlnaHQgYmUgMS4wOTc4eCBzbG93ZXIKICAgcG9seS1zdHJpY3Rl
cSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OS43MDg2Ky0zLjgxMzggICAg
ICAgICAgIDc4LjY5NjkrLTIuMTUzNiAgICAgICAgICBtaWdodCBiZSAxLjAxMjl4IGZhc3Rlcgog
ICBpcy1zdHJpbmctZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk4
NjgrLTAuMjEwNiAgICAgICAgICAgIDQuOTg2NSstMC41NDMyICAgICAgICAKICAgZG91YmxlLXRv
LXVpbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgMy43NTk1Ky0wLjQ1MTcg
ICAgICAgICAgICAzLjcxODkrLTAuNTcyMiAgICAgICAgICBtaWdodCBiZSAxLjAxMDl4IGZhc3Rl
cgogICBhYmMtZm9yd2FyZC1sb29wLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMx
LjA2NjQrLTAuOTQxNiAgICAgPyAgICAgMzIuNDM1NystNC45OTQzICAgICAgICA/IG1pZ2h0IGJl
IDEuMDQ0MXggc2xvd2VyCiAgIGlzLWJvb2xlYW4tZm9sZC10cmlja3kgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNTc4MystMC4zMDgxICAgICA/ICAgICAgNS4yMjEwKy0wLjkzNTEgICAg
ICAgID8gbWlnaHQgYmUgMS4xNDA0eCBzbG93ZXIKICAgYnVpbGQtbGFyZ2Utb2JqZWN0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NC45Mjc5Ky0xLjgxMDQgICAgID8gICAgIDQ2LjM3
NzkrLTQuMjYwMSAgICAgICAgPyBtaWdodCBiZSAxLjAzMjN4IHNsb3dlcgogICBzdHJpbmctcmVw
ZWF0LW5vdC1yZXNvbHZpbmctbm8taW5saW5lICAgICAgICAgICAgICA0Ljk1NTArLTAuNDcxMCAg
ICAgPyAgICAgIDUuOTE1NSstMi40NTk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMTkzOXggc2xvd2Vy
CiAgIGZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEu
NjI4MSstMC42NDczICAgICAgICAgICAxMS4xMDczKy0wLjkwNTcgICAgICAgICAgbWlnaHQgYmUg
MS4wNDY5eCBmYXN0ZXIKICAgZGZnLWludGVybmFsLWZ1bmN0aW9uLW5vdC1oYW5kbGVkLWNhbGwg
ICAgICAgICAgICAgOS41MzQ2Ky0xLjAzMzQgICAgICAgICAgICA5LjE4MDArLTAuNzI4NiAgICAg
ICAgICBtaWdodCBiZSAxLjAzODZ4IGZhc3RlcgogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnkt
YmxvY2sgICAgICAgICAgICAgICAgICAgICAyLjkyMDArLTAuMjYwOSAgICAgPyAgICAgIDMuMDY0
NystMC4zNTcwICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5NXggc2xvd2VyCiAgIGlzLW5vdC1jZWxs
LXNwZWN1bGF0aW9uLWZvci1lbXB0eS12YWx1ZSAgICAgICAgICAgMjMuMzcyNCstMS42ODE1ICAg
ICA/ICAgICAyOC43OTI5Ky0xNS42MzU2ICAgICAgID8gbWlnaHQgYmUgMS4yMzE5eCBzbG93ZXIK
ICAgYWJjLXNpbXBsZS1mb3J3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS42
OTE0Ky0xLjQzMjkgICAgID8gICAgIDMyLjE5NDkrLTEuOTkwMSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNTl4IHNsb3dlcgogICBnbG9iYWwtdmFyLWNvbnN0LWluZmVyLWZpcmUtZnJvbS1vcHQgICAg
ICAgICAgICAgICAxLjM5NDArLTAuMDg2OCAgICAgICAgICAgIDEuMzg3OSstMC4yMjc4ICAgICAg
ICAKICAgb2JqZWN0LWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny43NTU1Ky0xLjk2MDAgICAgICAgICAgICA3LjMzODIrLTAuMjMyMCAgICAgICAgICBtaWdodCBi
ZSAxLjA1Njl4IGZhc3RlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAg
ICAgICAgICAgICAgIDU5LjA5MjQrLTQuMTUyMyAgICAgICAgICAgNTcuNjUxOSstMy45Mjk2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI1MHggZmFzdGVyCiAgIGxvZ2ljYWwtbm90ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNzU4NystMC4xOTQ2ICAgICA/ICAgICAgNS45
MDcyKy0wLjQzMDAgICAgICAgID8gbWlnaHQgYmUgMS4wMjU4eCBzbG93ZXIKICAgZG91YmxlLXRv
LWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NC4xOTA1Ky0yLjYzMzUg
ICAgICEgICAgIDY5LjQ3NDcrLTIuMTE4MiAgICAgICAgISBkZWZpbml0ZWx5IDEuMDgyM3ggc2xv
d2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAg
MTUuODA2NCstMS4xODU3ICAgICAgICAgICAxNS40NTQwKy0wLjgwMzggICAgICAgICAgbWlnaHQg
YmUgMS4wMjI4eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuODAwNSstMC4yNzc1ICAgICAgICAgICAgMC43MjI5Ky0wLjA3MjAgICAg
ICAgICAgbWlnaHQgYmUgMS4xMDc1eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGxhY2UtZW1wdHkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMy40MzE1Ky0xLjI5NzQgICAgICAgICAgIDExLjk3
NDcrLTAuNjQ2NiAgICAgICAgICBtaWdodCBiZSAxLjEyMTd4IGZhc3RlcgogICBhbGlhc2VkLWFy
Z3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAxLjQwODArLTAuMDQ0MiAg
ICAgPyAgICAgIDEuNDA4NystMC4wNzI2ICAgICAgICA/CiAgIGFycm93ZnVuY3Rpb24tY2FsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuODE2MCstMC41NzU4ICAgICA/ICAgICAx
MS4xMzYxKy0wLjg5MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMjk2eCBzbG93ZXIKICAgZ2V0LWJ5
LWlkLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4xMjgzKy0wLjgz
NjcgICAgID8gICAgIDExLjczOTIrLTAuODY4NSAgICAgICAgPyBtaWdodCBiZSAxLjA1NDl4IHNs
b3dlcgogICBmdGwtcG9seW1vcnBoaWMtYml0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTczLjIwMjErLTEuODQ3MiAgICAgPyAgICAxNzYuNTI5OCstMy4xNjU0ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE5Mnggc2xvd2VyCiAgIEludDE2QXJyYXktbG9hZC1pbnQtbXVsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuODAwMistMC40MTMwICAgICAgICAgICAgMi41NTc3Ky0wLjAzMzMg
ICAgICAgICAgbWlnaHQgYmUgMS4wOTQ4eCBmYXN0ZXIKICAgZXZhbC1jb2RlLWZ0bC1yZWVudHJ5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOC4zMzY4Ky0xLjAxMDMgICAgID8gICAgIDM5
LjIyMjArLTEuNDEwNyAgICAgICAgPyBtaWdodCBiZSAxLjAyMzF4IHNsb3dlcgogICBmb2xkLW11
bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjM0NzMrLTEuODI0NyAgICAgICAg
ICAgIDguNzg4MCstMi4zODg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTc3NHggZmFzdGVyCiAgIGFy
Z3VtZW50cy1uYW1lZC1hbmQtcmVmbGVjdGl2ZSAgICAgICAgICAgICAgICAgICAgIDkuNDYzOCst
MC44MjEyICAgICAgICAgICAgOS4xODk2Ky0wLjgzMDYgICAgICAgICAgbWlnaHQgYmUgMS4wMjk4
eCBmYXN0ZXIKICAgaW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAxMS4yNDgwKy0wLjY1MDYgICAgID8gICAgIDExLjk4NzMrLTEuNjQ3OCAgICAgICAgPyBt
aWdodCBiZSAxLjA2NTd4IHNsb3dlcgogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDU4LjIxOTYrLTEuNDk0MyAgICAgICAgICAgNTcuMDU1OSstMC45
NzY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwNHggZmFzdGVyCiAgIGFycmF5LXB1c2gtMCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzEuNDMxNistMi42MzMxICAgICA/ICAg
IDEzMi40NzEwKy0xLjU1ODEgICAgICAgID8KICAgaGFyZC1vdmVyZmxvdy1jaGVjay1lcXVhbCAg
ICAgICAgICAgICAgICAgICAgICAgICAzMy42NDEyKy0zLjQ1NTAgICAgICAgICAgIDMyLjY4ODEr
LTMuMjgxMiAgICAgICAgICBtaWdodCBiZSAxLjAyOTJ4IGZhc3RlcgogICBzdHJpbmctY29ucy1y
ZXBlYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjM3MjgrLTEuMDYzMyAgICAg
PyAgICAgMTAuMTYyOCstMS4xOTU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg0M3ggc2xvd2VyCiAg
IG1hcC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMzE1
MistMS41MzkzICAgICA/ICAgICAxMS41MzUzKy0xLjI1MzYgICAgICAgID8gbWlnaHQgYmUgMS4w
MTk1eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0NC4yOTgyKy0xLjYxNTYgICAgICAgICAgIDQ0LjI1ODQrLTEuMTUwOSAgICAgICAg
CiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMjgu
NTY5NistMC44MzEwICAgICA/ICAgICAyOS4yMDA5Ky0xLjIzMTggICAgICAgID8gbWlnaHQgYmUg
MS4wMjIxeCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1jb252ZXJ0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA4NC44MTAzKy0xLjUwMDkgICAgICAgICAgIDgzLjgzODErLTIuNjc2MiAgICAg
ICAgICBtaWdodCBiZSAxLjAxMTZ4IGZhc3RlcgogICB2YXJhcmdzLWlubGluZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjEzNDIrLTEuMTk2NyAgICAgICAgICAgIDkuNzk2
NystMS4wMjU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NHggZmFzdGVyCiAgIGludC1vci1vdGhl
ci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTguNTgyOCstMC43Mzk1ICAg
ICA/ICAgICAxOS4zOTg2Ky0xLjI3NTcgICAgICAgID8gbWlnaHQgYmUgMS4wNDM5eCBzbG93ZXIK
ICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGls
aW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNjE1NSstMC4wMzA5ICAgICA/ICAgICAgMC42NDA5Ky0wLjA1MzAgICAgICAgID8gbWln
aHQgYmUgMS4wNDEzeCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ni42NDQxKy0wLjkyMjIgICAgID8gICAgIDQ3LjM4MDArLTIuMjA5
NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTh4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNl
YXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjk5NzMrLTAuMTUxMiAgICAgICAgICAgIDAu
ODg5MistMC4wMjcyICAgICAgICAgIG1pZ2h0IGJlIDEuMTIxNnggZmFzdGVyCiAgIGFiYy1zaW1w
bGUtYmFja3dhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuNDE0OSstMC45NjQ4
ICAgICAgICAgICAzMS4wOTIwKy0xLjQxNTkgICAgICAgICAgbWlnaHQgYmUgMS4wMTA0eCBmYXN0
ZXIKICAgc2V0LWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi42NzgwKy0wLjM1OTAgICAgICAgICAgICAyLjU4MjYrLTAuMTM1MiAgICAgICAgICBtaWdodCBi
ZSAxLjAzNjl4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1iaWctY2hhciAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjI2MzYrLTEuMTA3NCAgICAgPyAgICAgIDcuMzA2OCstMC43NDYzICAg
ICAgICA/CiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuOTQ2OSstMC43NTc2ICAgICA/ICAgICAgNC42MzcwKy0yLjg3MDMgICAgICAgID8gbWln
aHQgYmUgMS4xNzQ5eCBzbG93ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5n
ICAgICAgICAgICAgICAgICAgMi43MzE1Ky0wLjQ1NTggICAgICAgICAgICAyLjQ1NzYrLTAuMjEw
NyAgICAgICAgICBtaWdodCBiZSAxLjExMTV4IGZhc3RlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2lj
LWJpZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjIyNzkrLTEuMTIxNyAgICAgICAgICAg
MTQuOTc3NystMS4wODM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2N3ggZmFzdGVyCiAgIGZ1bmN0
aW9uLWRvdC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTQwMCstMC4y
OTk5ICAgICAgICAgICAgMy40ODk4Ky0wLjQzMzggICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBm
YXN0ZXIKICAgbXVsLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4yNjMzKy0wLjM4NzIgICAgICAgICAgICA0LjExMDcrLTAuMzM2MSAgICAgICAgICBtaWdo
dCBiZSAxLjAzNzF4IGZhc3RlcgogICBkb3VibGUtcmVhbC11c2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMyLjY4NDUrLTEuNzAxMSAgICAgPyAgICAgMzMuMDQ0MistMS45MTY2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExMHggc2xvd2VyCiAgIGNmZy1zaW1wbGlmeSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTY5MSstMC4zMTUwICAgICA/ICAgICAg
NC4yMDIxKy0wLjM1NzkgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1zZWxmLW9y
LXByb3RvICAgICAgICAgICAgICAxNi40NDg1Ky0wLjg2NzIgICAgID8gICAgIDE2LjU5MzMrLTAu
ODcwMyAgICAgICAgPwogICBpbnQtb3Itb3RoZXItbmVnLXplcm8tdGhlbi1nZXQtYnktdmFsICAg
ICAgICAgICAgIDE3Ljk0NjYrLTAuODI1OSAgICAgPyAgICAgMTguNTc0OSstMC43NzExICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDM1MHggc2xvd2VyCiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDcuOTgwMSstMS42NDk0ICAgICAgICAgICA0Ny4xMDE0
Ky0xLjk1ODIgICAgICAgICAgbWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjQ1MystMC4wNTU3
ICAgICA/ICAgICAgMC42NDg5Ky0wLjA2NDggICAgICAgID8KICAgaW5zdGFuY2VvZi1ib3VuZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi44ODY4Ky0wLjUyOTMgICAgID8gICAg
IDI3LjIxMzIrLTEuNjk1NSAgICAgICAgPyBtaWdodCBiZSAxLjAxMjF4IHNsb3dlcgogICBkaXJl
Y3QtY29uc3RydWN0LWFyaXR5LW1pc21hdGNoICAgICAgICAgICAgICAgICAgMTMxLjE0MzIrLTMu
MTczNyAgICAgPyAgICAxMzIuNjkzMystMy4xMTY5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOHgg
c2xvd2VyCiAgIGRpcmVjdC10YWlsLWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAg
ICAgODguMjYzMCstMS42OTY3ICAgICA/ICAgIDEwMS42NTY3Ky0zNC4zNDg5ICAgICAgID8gbWln
aHQgYmUgMS4xNTE3eCBzbG93ZXIKICAgc3Vic3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3Mi40NTk0Ky00LjUxOTkgICAgICAgICAgIDY5Ljk2NjUrLTEuNzE1
OSAgICAgICAgICBtaWdodCBiZSAxLjAzNTZ4IGZhc3RlcgogICBzdHJpbmctZnJvbS1jaGFyLWNv
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjkyNDIrLTIuMDQ0NCAgICAgICAgICAg
IDguOTQxMystMC44Nzg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTA5OXggZmFzdGVyCiAgIHVuZGVm
aW5lZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODE0MSstMC43
ODAzICAgICAgICAgICAgNC40MDkxKy0wLjM0MjAgICAgICAgICAgbWlnaHQgYmUgMS4wOTE4eCBm
YXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICAg
ICAyNS43Njk3Ky0xLjM1MjYgICAgID8gICAgIDI2LjA3NDQrLTAuNzEzNyAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTh4IHNsb3dlcgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEzLjk4MjQrLTMuMjMxMyAgICAgPyAgICAgMTQuMDcxMystMi4zMDQ5
ICAgICAgICA/CiAgIGRpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAgICAgICAg
ICAgICAgIDkuMTYwMSstMC43MzU0ICAgICAgICAgICAgOS4xMjQyKy0wLjU3NTMgICAgICAgIAog
ICBzdHJ1Y3R1cmUtaG9pc3Qtb3Zlci10cmFuc2l0aW9ucyAgICAgICAgICAgICAgICAgICA0LjAy
MjcrLTAuMzM3NiAgICAgICAgICAgIDMuODYxNSstMC41OTQ4ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQxN3ggZmFzdGVyCiAgIGludC1vci1vdGhlci1hZGQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguOTE5NSstMi40Nzg4ICAgICAgICAgICAgOC4zNTQ3Ky0xLjc4NDAgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjc2eCBmYXN0ZXIKICAgRmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy40NzI1Ky0wLjg1MzEgICAgICAgICAgICA3LjMxNDgr
LTAuMzU1MyAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZhc3RlcgogICBzdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuODczMystMC4y
NjIzICAgICAgICAgICAgMC43NjgxKy0wLjE1NDMgICAgICAgICAgbWlnaHQgYmUgMS4xMzcxeCBm
YXN0ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMi40NjgzKy0xLjQ2OTYgICAgID8gICAgIDIzLjQ5MDMrLTMuMzg5NSAgICAgICAgPyBtaWdo
dCBiZSAxLjA0NTV4IHNsb3dlcgogICBleHRlcm5hbC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAg
ICAgICAgICAgICAgICAgICAxLjUyMzgrLTAuMDgxOSAgICAgPyAgICAgIDEuNjE3NCstMC4yMDIx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYxNHggc2xvd2VyCiAgIGNhbGwtc3ByZWFkLWNhbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuNzE2MystMS4yMTYwICAgICA/ICAgICAz
My40ODAzKy0zLjEzNTggICAgICAgID8gbWlnaHQgYmUgMS4wMjMzeCBzbG93ZXIKICAgaG9pc3Qt
cG9seS1jaGVjay1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgMy41OTA1Ky0wLjYy
MjQgICAgID8gICAgICAzLjcyNTcrLTAuNDY4MCAgICAgICAgPyBtaWdodCBiZSAxLjAzNzd4IHNs
b3dlcgogICBjb25jYXQtYXBwZW5kLW9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExLjUzNTcrLTEuMzc5MiAgICAgPyAgICAgMTIuNDU3NistMS4xNTI5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDc5OXggc2xvd2VyCiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQuNDEwOSstMS40NzM2ICAgICAgICAgICAgMy44NzU5Ky0xLjMzMzgg
ICAgICAgICAgbWlnaHQgYmUgMS4xMzgweCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC13aXRoLXN0cmlu
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy4wNjIzKy0wLjU4ODQgICAgICAgICAgIDE2
LjY2MTcrLTAuMzMwMyAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3RlcgogICBkaXYtYm9v
bGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjczNjgrLTAuMjgw
OSAgICAgPyAgICAgIDUuOTQyMSstMC40NDA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1OHggc2xv
d2VyCiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAgICAx
MTQuMTE0NSstMS44NjUyICAgICAgICAgIDExMC4wMDQwKy0zLjM0MjQgICAgICAgICAgbWlnaHQg
YmUgMS4wMzc0eCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbGFyZ2UtbG9u
Zy1saXZlZCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDY1LjEzMDcrLTEuNzIxMCAgICAgPyAgICAgNjYuNzA1OCstMC43NDEzICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI0Mnggc2xvd2VyCiAgIG5lZ2F0aXZlLXplcm8tbmVnYXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNTg4MSstMC4wMTgxICAgICA/ICAgICAgMC42MDg2Ky0w
LjAzMDcgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ5eCBzbG93ZXIKICAgdHlwZWQtYXJyYXktc3Vi
YXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ni4xMTA4Ky0zMS40NDUzICAgICAg
ICAgIDUxLjY4ODErLTIuNzQ3NSAgICAgICAgICBtaWdodCBiZSAxLjI3OTB4IGZhc3RlcgogICBj
YWxsLXNwcmVhZC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjUwNTUr
LTEuMzUzNyAgICAgPyAgICAgMzQuMDY2MistMC42ODgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2
N3ggc2xvd2VyCiAgIGlzLXN5bWJvbC1taXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuMTc1MistMC43MzE0ICAgICAgICAgICAgNi44ODk4Ky0xLjY2ODUgICAgICAgICAg
bWlnaHQgYmUgMS4wNDE0eCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRl
eGluZy1oZWFkZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNy4xNjkxKy0wLjg1NzMgICAgID8gICAgIDE3LjM2MTIrLTAuODIyMiAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMTJ4IHNsb3dlcgogICByZXN0LXBhcmFtZXRlci1jb25zdHJ1Y3Rp
b24tcGVyZm9ybWFuY2UgICAgICAgICAgIDMwLjAxODArLTEuMDA2NiAgICAgICAgICAgMjkuNTM0
OSstMC40OTk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NHggZmFzdGVyCiAgIHNlYWwtYW5kLWRv
LXdvcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNzU4OCstMC45OTYyICAg
ICA/ICAgICAxOC4zNDE0Ky0xLjIwNDEgICAgICAgID8gbWlnaHQgYmUgMS4wMzI4eCBzbG93ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3Mg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC43NDA4Ky0wLjA3NzUgICAgID8gICAgICAwLjg1NDQrLTAuMjE5MyAgICAgICAgPyBtaWdodCBi
ZSAxLjE1MzR4IHNsb3dlcgogICBudW1iZXItdG8tc3RyaW5nLXdpdGgtYWRkLWluLWxvb3AgICAg
ICAgICAgICAgICAgIDEyLjEyMjgrLTAuNDM2NSAgICAgPyAgICAgMTIuMjk3MCstMC4zMjEwICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE0NHggc2xvd2VyCiAgIHBvbHktY2hhaW4tYWNjZXNzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzUwNCstMC4zODE3ICAgICA/ICAgICAgMy44
MDU3Ky0wLjM1OTcgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ4eCBzbG93ZXIKICAgQXJyYXlCdWZm
ZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAyMC41MjIzKy0wLjcwNzgg
ICAgID8gICAgIDIwLjYwMTgrLTAuNTU5NSAgICAgICAgPwogICBkb3VibGUtdG8taW50MzItdHlw
ZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgICA0LjMwNTMrLTAuMjkxOSAgICAgICAgICAg
IDQuMjIxNistMC40MDgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5OHggZmFzdGVyCiAgIHN3aXRj
aC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMjQuMTY2NystMC44
NTgyICAgICA/ICAgICAyNC42ODM1Ky0wLjM3MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjE0eCBz
bG93ZXIKICAgb2JqZWN0LWl0ZXJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4wMzc2Ky0wLjUyMDIgICAgID8gICAgICA0LjI5OTkrLTAuNTA3NiAgICAgICAgPyBtaWdo
dCBiZSAxLjA2NTB4IHNsb3dlcgogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAzLjQ2MjArLTAuMTgzMiAgICAgPyAgICAgIDMuNzg1MCstMC41NzM0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDkzM3ggc2xvd2VyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMuODgwNSstNC41NTczICAgICAgICAgICAz
Mi4xNzgxKy0zLjA5NzggICAgICAgICAgbWlnaHQgYmUgMS4wNTI5eCBmYXN0ZXIKICAgSW50MzJB
cnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA3Ni4zNjQ3Ky0zLjA3
ODggICAgICAgICAgIDc1Ljg3MzIrLTMuMzUxMSAgICAgICAgCiAgIHN0cmluZy1yZXBlYXQtcmVz
b2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUuNTQ2MistMS42MjYzICAgICA/ICAg
ICAzNS41NTkyKy0wLjk2NjEgICAgICAgID8KICAgcG9seW1vcnBoaWMtZ2V0LWJ5LWlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy4xODg2Ky0wLjcxNTAgICAgID8gICAgICAzLjM0MDMr
LTEuMjQ3NCAgICAgICAgPyBtaWdodCBiZSAxLjA0NzZ4IHNsb3dlcgogICBzbG93LWFycmF5LXBy
b2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAzLjc3NDYrLTAuNTkxMSAgICAg
PyAgICAgIDQuNDI5OSstMi4wOTM2ICAgICAgICA/IG1pZ2h0IGJlIDEuMTczNnggc2xvd2VyCiAg
IGdldC1ieS12YWwtd2l0aC1zdHJpbmctY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMzQ0Ky0wLjQ5
ODQgICAgID8gICAgICAzLjE2MTIrLTAuNDMzMiAgICAgICAgPwogICB2OC1yYXl0cmFjZS13aXRo
LWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgIDY5LjU3MjErLTQuOTYwOCAgICAgPyAg
ICAgNzQuNDU5NistNC4zMDAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDcwM3ggc2xvd2VyCiAgIHNj
b3BlZC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC43OTMxKy0wLjYxNjcg
ICAgICAgICAgIDEwLjAyMDUrLTAuNjM5NyAgICAgICAgICBtaWdodCBiZSAxLjA3NzF4IGZhc3Rl
cgogICBvYmplY3Qta2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMw
LjcyMzErLTEuOTY1OCAgICAgICAgICAgMzAuNTQ3NSstMS41NDY1ICAgICAgICAKICAgc3dpdGNo
aW5nLXNpemUtY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MS4xODY4Ky0wLjkw
ODMgICAgID8gICAgIDQ5LjY3ODQrLTIxLjczNjcgICAgICAgPyBtaWdodCBiZSAxLjIwNjJ4IHNs
b3dlcgogICBGbG9hdDY0QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAg
IDkyLjA4NTkrLTIuOTUzNSAgICAgICAgICAgOTEuNDYyNistMS45NTA1ICAgICAgICAKICAgY29u
c3RhbnQtdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yNDQ0Ky0w
LjMwOTYgICAgID8gICAgICA2LjU1OTcrLTAuNjY5NSAgICAgICAgPyBtaWdodCBiZSAxLjA1MDV4
IHNsb3dlcgogICBpbnQtb3ZlcmZsb3ctbG9jYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2LjY2MzErLTAuOTkyNiAgICAgICAgICAgIDYuNDgzMCstMC4xMzA5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI3OHggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1jb25z
dHJ1Y3RvciAgICAgICAgICAgMTcuNzkwNCstMC45NDc4ICAgICAgICAgICAxNy40OTI4Ky0wLjY2
MTcgICAgICAgICAgbWlnaHQgYmUgMS4wMTcweCBmYXN0ZXIKICAgc2V0dGVyLXByb3RvdHlwZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy40MDU3Ky0xLjAzOTggICAgICAgICAg
ICA2Ljk3MDIrLTAuODU1OCAgICAgICAgICBtaWdodCBiZSAxLjA2MjV4IGZhc3RlcgogICBuZXct
YXJyYXktZGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjI1MDIrLTEu
MjEyOSAgICAgPyAgICAgMTEuMjYzOCstMS4zOTk3ICAgICAgICA/CiAgIHN0cmluZy1yb3BlLXdp
dGgtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuODM4NystMC41OTI4ICAgICA/
ICAgICAyNC4zMzgwKy0wLjcyNDEgICAgICAgID8gbWlnaHQgYmUgMS4wMjA5eCBzbG93ZXIKICAg
dG8tbnVtYmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjU1MzMr
LTIuMzA4MSAgICAgICAgICAgIDUuNzk3NystMC42MjA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMTMw
M3ggZmFzdGVyCiAgIGludDMyLWFycmF5LXRvLXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzcuMzE0OSstMS4yMTA1ICAgICA/ICAgICAzOC42NDUxKy0xLjgxODAgICAgICAgID8g
bWlnaHQgYmUgMS4wMzU2eCBzbG93ZXIKICAgYm9vbGVhbi10ZXN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS4wMTUyKy0wLjg5MDcgICAgICAgICAgICA0Ljc4ODgrLTEu
MTYzNCAgICAgICAgICBtaWdodCBiZSAxLjA0NzN4IGZhc3RlcgogICB0cnktZ2V0LWJ5LWlkLXBv
bHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjAyMzIrLTAuNjkxNiAgICAgPyAg
ICAgMTEuNTQxMistMS4wNDI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMTUxNHggc2xvd2VyCiAgIHN0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzI0MCstMC4w
NDMxICAgICA/ICAgICAgMC43MzQyKy0wLjA0NzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTQxeCBz
bG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAg
ICAyNS4wNzg1Ky05LjM1NTAgICAgICAgICAgIDIxLjYwNzUrLTAuNjYwMCAgICAgICAgICBtaWdo
dCBiZSAxLjE2MDZ4IGZhc3RlcgogICBtaW51cy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjY0MjcrLTAuODI4OCAgICAgICAgICAgIDMuMDg2NSstMC4xMDYx
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTgwMnggZmFzdGVyCiAgIHBvbHltb3JwaGljLWFycmF5LWNh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTY1MCstMC42MjA0ICAgICAgICAgICAg
Mi4wMjYxKy0wLjMxNDUgICAgICAgICAgbWlnaHQgYmUgMS4wNjg2eCBmYXN0ZXIKICAgdG8tbG93
ZXItY2FzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOC40NDE5Ky0yLjU4
ODkgICAgICAgICAgMTM4LjI2ODUrLTQuMzc3NyAgICAgICAgCiAgIHRyeS1nZXQtYnktaWQtYmFz
aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMDk0MistMS4xNTEyICAgICA/ICAg
ICAxMC40MjM1Ky0xLjY2NDEgICAgICAgID8gbWlnaHQgYmUgMS4wMzI2eCBzbG93ZXIKICAgZW1z
Y3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS40MDg1Ky0w
LjcwMDMgICAgID8gICAgIDMyLjkxNjUrLTMuMjY4NCAgICAgICAgPyBtaWdodCBiZSAxLjA0ODB4
IHNsb3dlcgogICBzdHJpbmctc2xpY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDM4Ljg5OTkrLTEuODIxNCAgICAgICAgICAgMzcuNzI3MistMC42NzU3ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDMxMXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjc0NjQrLTAuMDMxNiAgICAgICAgICAgIDAuNzExNist
MC4wMTc1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4OXggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hl
Y2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjA4NystMC4yOTQyICAgICA/ICAgICAgNS42
NzcwKy0wLjY3ODcgICAgICAgID8gbWlnaHQgYmUgMS4wODk5eCBzbG93ZXIKICAgcHV0LWJ5LXZh
bC1sYXJnZS1pbmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNDMyOCstMS44MTQ1ICAgICAgICAg
ICAgOC43OTIwKy0xLjIyOTIgICAgICAgICAgbWlnaHQgYmUgMS4wNzI5eCBmYXN0ZXIKICAgc3Vi
c3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS4yMzA1Ky0x
LjEwMzggICAgID8gICAgIDUxLjMzNDErLTEuMTgyMyAgICAgICAgPwogICBpbmxpbmVkLXB1dC1i
eS12YWwtd2l0aC1zeW1ib2wtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4Ljk5MjArLTIuNjYyNyAgICAgPyAgICAgNTku
MDQ1MCstMi4wMjUzICAgICAgICA/CiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMt
aW5zYW5lICAgICAgICAgICAgIDUuNDI2MCstMC4yNTA4ICAgICA/ICAgICAgNS42NDkzKy0wLjM2
MzMgICAgICAgID8gbWlnaHQgYmUgMS4wNDExeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10
ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjY3MTgrLTAuMTk1OSAgICAgICAgICAgIDAu
NTc3NCstMC4wMTgyICAgICAgICAgIG1pZ2h0IGJlIDEuMTYzNnggZmFzdGVyCiAgIHB1dC1ieS1p
ZC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgICAgICAgICAgICAgICAgMTAuMjA0OCstMS41OTAx
ICAgICA/ICAgICAxMC4zMDExKy0yLjE4MjQgICAgICAgID8KICAgbmVnYXRpdmUtemVyby1kaXZp
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41OTU1Ky0wLjAxODQgICAgID8gICAg
ICAwLjYyMjMrLTAuMDQwMSAgICAgICAgPyBtaWdodCBiZSAxLjA0NTB4IHNsb3dlcgogICBpbmZl
ci1jbG9zdXJlLWNvbnN0LXRoZW4tcmVlbnRlci1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS45NzEyKy0yLjY3NTAgICAg
ICAgICAgIDQ4LjAwNjIrLTEuMDY1MyAgICAgICAgICBtaWdodCBiZSAxLjA0MDl4IGZhc3Rlcgog
ICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLXdpdGgtaG9pc3RlZC1yZWdleHAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4y
MjA1Ky0yLjYxMTEgICAgICAgICAgIDEyLjk4ODMrLTEuMDU1MSAgICAgICAgICBtaWdodCBiZSAx
LjAxNzl4IGZhc3RlcgogICBpbmxpbmUtYXJndW1lbnRzLWFjY2VzcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2Ljg2ODErLTEuMzYxNiAgICAgICAgICAgIDYuMTk4NCstMS43NzE5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMTA4MHggZmFzdGVyCiAgIGRlbGF5LXRlYXItb2ZmLWFyZ3VtZW50cy1z
dHJpY3Rtb2RlICAgICAgICAgICAgICAgIDkuOTk4NSstMS4zODUyICAgICA/ICAgICAxMS42MjQ0
Ky01LjIyMjMgICAgICAgID8gbWlnaHQgYmUgMS4xNjI2eCBzbG93ZXIKICAgSW50MzJBcnJheS1J
bnQ4QXJyYXktdmlldy1hbGxvYyAgICAgICAgICAgICAgICAgICAxMi45NjQ1Ky0xLjM3NDcgICAg
ICAgICAgIDEyLjYwNDIrLTEuMzU2NSAgICAgICAgICBtaWdodCBiZSAxLjAyODZ4IGZhc3Rlcgog
ICBwcm90by1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjQ1
MTUrLTEuODQzMSAgICAgICAgICAgMTUuMjA0MistMC4zNzk2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE2M3ggZmFzdGVyCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAg
ICAgICAgICAgMzMuMzE5MSstMi43MDk1ICAgICAgICAgICAzMi44MTM1Ky0wLjc1NDcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTU0eCBmYXN0ZXIKICAgbmV3LWVycm9yICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0Mi41NjExKy0zLjM5NjcgICAgICAgICAgIDQyLjIyODQr
LTEuOTk4OCAgICAgICAgCiAgIHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAg
ICAgICAgICAgICAgMjEuNjQzNistMS43MzE3ICAgICAgICAgICAyMC44NjI3Ky0xLjE5MzEgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzc0eCBmYXN0ZXIKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1Ny41MTMxKy0xLjI0MjkgICAgID8gICAgIDU3LjYx
MTUrLTIuMTA2MyAgICAgICAgPwogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcG9seS1w
dXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDguNzI4OSstMy4wMDUyICAgICA/ICAgICAxMS4yNjk0Ky00LjYxMzYgICAg
ICAgID8gbWlnaHQgYmUgMS4yOTEweCBzbG93ZXIKICAgY3NlLW5ldy1hcnJheSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43MjY2Ky0wLjQ4OTggICAgICAgICAgICAzLjY3
NTkrLTAuNDIwNCAgICAgICAgICBtaWdodCBiZSAxLjAxMzh4IGZhc3RlcgogICBtYXAta2V5LXdl
bGwtdHlwZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5LjQ1MzgrLTMuNjkzMSAg
ICAgPyAgICAxMDkuNzg5OCstNC41MzkxICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zdHJp
bmctYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45MzY0Ky0w
LjU1MDEgICAgICAgICAgICA0LjQ1NDIrLTAuNjY0NCAgICAgICAgICBtaWdodCBiZSAxLjEwODN4
IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjg0OTArLTAuNzg0NyAgICAgICAgICAgIDMuNjY3OCstMC4yMTEyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDQ5NHggZmFzdGVyCiAgIGFycmF5LWFjY2Vzcy1wb2x5bW9ycGhpYy1zdHJ1Y3R1
cmUgICAgICAgICAgICAgICAgIDUuNjEyMistMS4zMjE0ICAgICA/ICAgICAgNi4zNjQwKy0yLjg4
NzQgICAgICAgID8gbWlnaHQgYmUgMS4xMzM5eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5
bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc0Mjkr
LTAuNjQ3MiAgICAgPyAgICAgIDQuODU0NCstMC4zNTAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIz
NXggc2xvd2VyCiAgIGdjc2UtcG9seS1nZXQtbGVzcy1vYnZpb3VzICAgICAgICAgICAgICAgICAg
ICAgICAgMjAuNzA4OSstMS4yODY0ICAgICA/ICAgICAyMS4xNTE2Ky0xLjExNjMgICAgICAgID8g
bWlnaHQgYmUgMS4wMjE0eCBzbG93ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbC1vci11
bmRlZmluZWQgICAgICAgICAgIDQyMi44NjAzKy02Ljk3NzcgICAgICEgICAgNDM1LjEzOTErLTQu
MTUxMCAgICAgICAgISBkZWZpbml0ZWx5IDEuMDI5MHggc2xvd2VyCiAgIG9iamVjdC14b3IgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuODEyNCstMC44MjI3ICAgICAg
ICAgICAgNy43ODU2Ky0xLjE0NDYgICAgICAgIAogICBhcnJheS1wdXNoLTEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTE2Ljc2NTMrLTMuNTQ1OCAgICAgICAgICAxMTUuMjEw
OSstMi44NTEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIHJlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjI5MystMC4wNjEwICAgICA/
ICAgICAgMC42OTQ3Ky0wLjExMjYgICAgICAgID8gbWlnaHQgYmUgMS4xMDM4eCBzbG93ZXIKICAg
YmlnLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44Njkz
Ky0wLjM2MDEgICAgID8gICAgICA1LjEyODkrLTAuNDQ4NCAgICAgICAgPyBtaWdodCBiZSAxLjA1
MzN4IHNsb3dlcgogICBpcy1zdHJpbmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjMzOTIrLTAuMjA4OCAgICAgPyAgICAgIDMuNDg2OCstMC4zNjc0ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDQ0Mnggc2xvd2VyCiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjAuMDY1MSstMS41Nzk0ICAgICA/ICAgICAyMC4zNDc3Ky0w
Ljk4NTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTQxeCBzbG93ZXIKICAgaXMtb2JqZWN0LW9yLW51
bGwtZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgNS4yMjkwKy0wLjMyMzMgICAgID8g
ICAgICA1LjczOTYrLTAuNzI2MSAgICAgICAgPyBtaWdodCBiZSAxLjA5Nzd4IHNsb3dlcgogICBy
ZWdpc3Rlci1wcmVzc3VyZS1mcm9tLW9zciAgICAgICAgICAgICAgICAgICAgICAgIDIyLjg2NzMr
LTguMTY3MCAgICAgICAgICAgMjAuMDc0NCstMS42MjUyICAgICAgICAgIG1pZ2h0IGJlIDEuMTM5
MXggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkuMDI3MCstMS4wMjAzICAgICA/ICAgICAgOS4zMjc2Ky0wLjU5MTggICAgICAgID8g
bWlnaHQgYmUgMS4wMzMzeCBzbG93ZXIKICAgbWFwLWhhcy1hbmQtc2V0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE3OC4xMjkwKy0yLjQ1MjEgICAgICAgICAgMTc3LjY0NTcrLTMu
NDE5NCAgICAgICAgCiAgIGxpY20tZHJhZ29ucy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAg
ICAgICAgICAgNDMuMTIyOCstMS4xMzY2ICAgICAgICAgICA0My4wMDY2Ky0xLjQxODkgICAgICAg
IAogICBzcGFyc2Utc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcz
LjcwNTgrLTEuOTI1MiAgICAgPyAgICAgNzQuMjIyMSstMS43MDYyICAgICAgICA/CiAgIHN0cmNh
dC1sZW5ndGgtY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNTI1NystMC45
MTIyICAgICA/ICAgICAgOC40MzI1Ky0yLjM3MDIgICAgICAgID8gbWlnaHQgYmUgMS4xMjA1eCBz
bG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAg
ICAyMy4wMjgxKy0wLjU5OTQgICAgICAgICAgIDIyLjg5NDMrLTAuNjg5NCAgICAgICAgCiAgIG51
bWJlci10by1zdHJpbmctd2l0aC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgMTEuOTcwNSst
MC44OTUwICAgICAgICAgICAxMS40NTAzKy0wLjU4MjMgICAgICAgICAgbWlnaHQgYmUgMS4wNDU0
eCBmYXN0ZXIKICAgcmFyZS1vc3ItZXhpdC1vbi1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxOS4yNjg3Ky01LjgyNjQgICAgICAgICAgIDE3LjQzOTcrLTEuMDA2MCAgICAgICAgICBt
aWdodCBiZSAxLjEwNDl4IGZhc3RlcgogICBvYmplY3QtdGVzdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LjAxNTQrLTAuNTg0MiAgICAgPyAgICAgIDQuMDM5NSstMC40
NDM5ICAgICAgICA/CiAgIGludDUyLWJhY2stYW5kLWZvcnRoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDkuNDg3MSstMC4yNDM1ICAgICA/ICAgICAgOS44NDQyKy0xLjE0ODkgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzc2eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1jaGVj
ay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOS4yMDE4Ky0wLjc2MjEgICAgICAgICAgICA4Ljc1ODUr
LTEuMzg5MCAgICAgICAgICBtaWdodCBiZSAxLjA1MDZ4IGZhc3RlcgogICBpbi1vbmUtY2FzZS10
cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjIxMDArLTAuNzkxMyAgICAg
PyAgICAgMTIuMjAyMystMS4wNjE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg4NXggc2xvd2VyCiAg
IHN0cmluZy1jb25jYXQtcGFpci1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDQ0
MCstMC4yODk2ICAgICA/ICAgICAgNC4xNjE0Ky0xLjIzNzYgICAgICAgID8gbWlnaHQgYmUgMS4y
MDgzeCBzbG93ZXIKICAgYXNtanNfYm9vbF9idWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC4xMjgxKy0xLjA2NzggICAgICAgICAgICA4LjA0NDYrLTAuNjgxMSAgICAgICAg
ICBtaWdodCBiZSAxLjAxMDR4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjg4ODgrLTAuNTc3MyAgICAgICAgICAgIDMuNTY3Nyst
MC4yNjIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDkwMHggZmFzdGVyCiAgIGFycmF5LXdpdGgtaW50
MzItYWRkLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNDIxOSstMC42NjQxICAgICA/
ICAgICAgOC4wMDM3Ky0wLjg4NjEgICAgICAgID8gbWlnaHQgYmUgMS4wNzg0eCBzbG93ZXIKICAg
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA3NDYrLTAu
Mjk5NCAgICAgICAgICAgIDIuMDE4MistMC4zMTUwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OXgg
ZmFzdGVyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDAuMjcxNSstMy41OTA1ICAgICA/ICAgICA0MS4xOTg1Ky0zLjU3NjMgICAgICAgID8gbWln
aHQgYmUgMS4wMjMweCBzbG93ZXIKICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOC4wNjI4Ky0xLjA3ODIgICAgICAgICAgICA2Ljk5ODUrLTAuMzYw
OSAgICAgICAgICBtaWdodCBiZSAxLjE1MjF4IGZhc3RlcgogICBnZXR0ZXItcmljaGFyZHMtdHJ5
LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgMTA1LjcyNjArLTMuNjIxOSAgICAgICAgICAx
MDUuMDU0MistMi4xMTYwICAgICAgICAKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMy43MjI5Ky0xLjUxOTcgICAgICAgICAgIDMzLjQ3NzQrLTEu
NjgwNSAgICAgICAgCiAgIG1pbnVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuNTkzOSstMC4yNzQzICAgICAgICAgICAgMy40MzYyKy0wLjA5ODYgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDU5eCBmYXN0ZXIKICAgZGZnLWludGVybmFsLWZ1bmN0aW9uLWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgMS4wNTQ1Ky0wLjAxNjUgICAgID8gICAgICAxLjA4NzIr
LTAuMTM0MSAgICAgICAgPyBtaWdodCBiZSAxLjAzMTB4IHNsb3dlcgogICB0aHJvdyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjkyNDkrLTAuOTc4NSAgICAg
PyAgICAgMTguMzUwOSstMS40MTk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzOHggc2xvd2VyCgog
ICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjY3
NTIrLTAuMDYyMSAgICAgPyAgICAgMTEuNjkxMistMC4wNDIxICAgICAgICA/IG1pZ2h0IGJlIDEu
MDAxNHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIApBc21CZW5jaDoKICAgRmxvYXRNTS5jICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2My42ODY2Ky03LjYxNTYgICAgID8g
ICAgODY2LjM4NTArLTUuODgwOCAgICAgICAgPwogICBkcnkuYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTU3LjQ5NDUrLTguMTEwNCAgICAgPyAgICA1NTkuMDE4
MSstMy4wMjI2ICAgICAgICA/CiAgIGNyYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MjguMDYyNCstMS43NDM4ICAgICA/ICAgIDUzMS44Nzg5Ky02LjczMDcg
ICAgICAgID8KICAgc3RlcGFub3ZfY29udGFpbmVyLmNwcCAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDk3MC44ODAxKy02OS45ODY3ICAgID8gICA0OTk2LjUwOTgrLTc0LjM3NTUgICAgICAgPwog
ICBuLWJvZHkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYwLjI1
MTUrLTQuNDc5NCAgICAgPyAgIDEwNjUuMDg1NSstOS45MDA2ICAgICAgICA/CiAgIGdjYy1sb29w
cy5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3OTMuNjYxNystMTguMjcw
MyAgICA/ICAgNDgxMy4wOTMzKy0yMy42MzU0ICAgICAgID8KICAgUXVpY2tzb3J0LmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxNC43OTUwKy05LjM1MjEgICAgID8gICAg
NTIzLjc0NTYrLTEwLjI2MzggICAgICAgPyBtaWdodCBiZSAxLjAxNzR4IHNsb3dlcgogICBUb3dl
cnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzI1LjI3ODIrLTIu
MzA0NyAgICAgPyAgICAzMjguODgyMistOS4zMDk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExMXgg
c2xvd2VyCiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2MzAuNDY5NSstOS4yMTYwICAgICAgICAgIDYyMy43NTc5Ky0xMC43NTUzICAgICAgICAgbWln
aHQgYmUgMS4wMTA4eCBmYXN0ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5NTcuNzI1NistMi40NzUzICAgICA/ICAgIDk2Mi40MjYyKy01LjAw
MjAgICAgICAgID8gbWlnaHQgYmUgMS4wMDQ5eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAg
ICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkNvbXBy
ZXNzaW9uQmVuY2g6CiAgIGh1ZmZtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzMuNDI1NSstMi45MTI5ICAgICAgICAgICAzMS44Nzg4Ky0zLjA3MDcgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDg1eCBmYXN0ZXIKICAgYXJpdGhtZXRpYy1zaW1wbGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMzOS45NDIxKy0zLjY5OTggICAgID8gICAgMzQyLjM2NzQr
LTguOTY0NCAgICAgICAgPwogICBhcml0aG1ldGljLXByZWNpc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzExLjYwODErLTEyLjUxNDkgICAgICAgICAzMDYuMzcyMistMTAuODQ1MyAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIGFyaXRobWV0aWMtY29tcGxleC1wcmVj
aXNlICAgICAgICAgICAgICAgICAgICAgICAzMTguNDQyNystMTguMjEwNSAgICA/ICAgIDMyMS4w
NDcwKy04LjMyMDAgICAgICAgID8KICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTAgICAgICAg
ICAgICAgICAgICAgICAgIDM1Ny45ODM1Ky0xNC4wNDk5ICAgID8gICAgMzU5Ljc0MzErLTEzLjg4
NTIgICAgICAgPwogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMSAgICAgICAgICAgICAgICAg
ICAgICAgMzg4LjQ1MjQrLTQuODc0MCAgICAgICAgICAzODMuNzYwMystNC40MjgyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDEyMnggZmFzdGVyCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRlci0yICAg
ICAgICAgICAgICAgICAgICAgICA0NjAuMjgzMSstMy43MTQ5ICAgICA/ICAgIDUzNy45OTE0Ky0y
MzEuMjkyOSAgICAgID8gbWlnaHQgYmUgMS4xNjg4eCBzbG93ZXIKICAgYXJpdGhtZXRpYy1zaW1w
bGUtb3JkZXItMSAgICAgICAgICAgICAgICAgICAgICAgIDQwNC44Mjg5Ky04LjQyMzggICAgICAg
ICAgMzk4LjM5MTgrLTYuMTgzMSAgICAgICAgICBtaWdodCBiZSAxLjAxNjJ4IGZhc3RlcgogICBh
cml0aG1ldGljLXNpbXBsZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAgNDc5LjcwMDkr
LTEzLjY1NTEgICAgPyAgICA0ODYuNTM0MystNC4zMDk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0
Mnggc2xvd2VyCiAgIGx6LXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNDUuMzk4NSstMTIuNjAxOSAgICA/ICAgIDM0NS40NTM3Ky03Ljc5NjMgICAgICAgID8K
CiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOTMu
OTUzNSstNS43MjY1ICAgICA/ICAgIDI5NS40MjUyKy05LjI4NDUgICAgICAgID8gbWlnaHQgYmUg
MS4wMDUweCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClNpeFNwZWVkOgogICB0ZW1wbGF0ZV9zdHJp
bmcuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Njg2LjM4NDYrLTMxLjUyODggICAg
PyAgIDg3MDUuODYzMystMjYyMC43MzY1ICAgICA/IG1pZ2h0IGJlIDEuMTMyNnggc2xvd2VyCiAg
IHRlbXBsYXRlX3N0cmluZy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5MjkuODM2
NCstODUuMTM4NCAgICAgICAgNDkxOC41MDU5Ky0xMDEuNTgxMiAgICAgIAogICBkZWZhdWx0cy5l
czUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMzLjA5MTArLTEyLjc3OTgg
ICAgPyAgICA0MzYuODA5OCstMTIuMDk2MyAgICAgICA/CiAgIGRlZmF1bHRzLmVzNiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NDAuNTYxMSstMTguMDU2NyAgICAgICAgIDQz
NS40NDQwKy05LjM3MzQgICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0ZXIKICAgbWFwLXNl
dC1sb29rdXAuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Mi4zNTkzKy0yLjk3
NTcgICAgID8gICAgIDgyLjUzMzArLTIuNDA1OCAgICAgICAgPwogICBtYXAtc2V0LWxvb2t1cC5l
czYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkwNDErLTEuMDA2MiAgICAgICAg
ICAgIDEuNTE1NSstMC41NTA1ICAgICAgICAgIG1pZ2h0IGJlIDEuMjU2NHggZmFzdGVyCiAgIHNw
cmVhZC5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguMjQ1NCst
MC44OTQyICAgICAgICAgICAxNy43NzEyKy0wLjg2MTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjY3
eCBmYXN0ZXIKICAgc3ByZWFkLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2NC4zMDc3Ky04LjM3MzUgICAgICAgICAgIDU5LjUwNTErLTIuNTA3OSAgICAgICAgICBt
aWdodCBiZSAxLjA4MDd4IGZhc3RlcgogICBvYmplY3QtYXNzaWduLmVzNSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzI4LjI5MjQrLTMuODMzNiAgICAgPyAgICAzMzAuMzAxMystNS40
ODcxICAgICAgICA/CiAgIG9iamVjdC1hc3NpZ24uZXM2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzNDIuNDQwMistMTMuODExOSAgICA/ICAgIDM0OC4xMjg1Ky0xNS4xMTQ1ICAgICAg
ID8gbWlnaHQgYmUgMS4wMTY2eCBzbG93ZXIKICAgc3ByZWFkLWxpdGVyYWwuZXM1ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMS41MjE0Ky0xLjM3NzcgICAgICAgICAgIDIwLjg1MzUr
LTAuMjYzNSAgICAgICAgICBtaWdodCBiZSAxLjAzMjB4IGZhc3RlcgogICBzcHJlYWQtbGl0ZXJh
bC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjQ4NzYrLTAuNDk1NyAgICAg
PyAgICAgMzMuMjQ4NSstMi4xNDA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzNHggc2xvd2VyCiAg
IG1hcC1zZXQuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMuNDYy
NSstMi4xMzM4ICAgICA/ICAgICAzNS4xNDg2Ky0yLjkyNzEgICAgICAgID8gbWlnaHQgYmUgMS4w
NTA0eCBzbG93ZXIKICAgbWFwLXNldC5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2NS45NzM2Ky0yLjQzMDggICAgID8gICAgMTcwLjMwMzMrLTMuMzkyNCAgICAgICAg
PyBtaWdodCBiZSAxLjAyNjF4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXNpbXBsZS5lczUgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkwLjUzNjArLTIwLjQ3MjMgICAgICAgICAgODUuMTU3Nist
OC4yOTI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYzMnggZmFzdGVyCiAgIGRlc3RydWN0dXJpbmct
c2ltcGxlLmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgOTIuMDQyNCstMi44OTAyICAgICAg
ICAgICA4Ny42NTg0Ky0zLjIxMjQgICAgICAgICAgbWlnaHQgYmUgMS4wNTAweCBmYXN0ZXIKICAg
c3VwZXIuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy44NzYx
Ky0xLjE0ODQgICAgID8gICAgIDE0LjE1NDArLTAuMzY5NCAgICAgICAgPyBtaWdodCBiZSAxLjAy
MDB4IHNsb3dlcgogICBzdXBlci5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMwLjI4ODUrLTEuODA5NSAgICAgPyAgICAgMzIuODkxMistNC40MTc4ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDg1OXggc2xvd2VyCiAgIGZvci1vZi1vYmplY3QuZXM1ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjQuNjYwNistMi43Mzg4ICAgICAgICAgICA2NC4yNDI4Ky0x
LjgzMDAgICAgICAgIAogICBmb3Itb2Ytb2JqZWN0LmVzNiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjM2LjIyODMrLTE3LjYzMTYgICAgICAgICAyMzAuNjg5NSstMy41NzM4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI0MHggZmFzdGVyCiAgIHJlc3QuZXM1ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjA0NistMC4zMzQ4ICAgICA/ICAgICAgMi4yMzEz
Ky0wLjIyNzggICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgcmVzdC5lczYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41ODg5Ky0wLjI5MTEgICAg
ICAgICAgICAyLjUxMDYrLTAuMjcwNyAgICAgICAgICBtaWdodCBiZSAxLjAzMTJ4IGZhc3Rlcgog
ICByZWdleC11LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LjY2
MDQrLTEuMTYzMiAgICAgPyAgICAgNTUuMzM5NCstMS43NTc4ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEyNHggc2xvd2VyCiAgIHJlZ2V4LXUuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOTkuNjEwNystNS4wNjI4ICAgICA/ICAgICA5OS44MzU5Ky0yLjg2MzMgICAgICAg
ID8KICAgYXJyb3cuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
MS40NjQ3Ky01LjgxNzAgICAgICAgICAgIDg4LjE0NTQrLTQuMDIyNyAgICAgICAgICBtaWdodCBi
ZSAxLjAzNzd4IGZhc3RlcgogICBhcnJvdy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDg5Ljg0MzYrLTIuOTAzMiAgICAgICAgICAgODcuOTQ0MCstMi41MjMzICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDIxNnggZmFzdGVyCiAgIGJpbmRpbmdzLWNvbXBvdW5kLmVzNSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgODguNTAwNystNC4zMjY4ICAgICA/ICAgICA5MC45
NTczKy01LjY5NjYgICAgICAgID8gbWlnaHQgYmUgMS4wMjc4eCBzbG93ZXIKICAgYmluZGluZ3Mt
Y29tcG91bmQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ni40NzQ0Ky04LjE2MTgg
ICAgID8gICAgIDg0LjM3NjcrLTUuODc2MCAgICAgICAgPyBtaWdodCBiZSAxLjEwMzN4IHNsb3dl
cgogICBjbGFzc2VzLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1
LjU2MDMrLTkuNzgwNSAgICAgICAgICAgOTMuMzA5MSstMy4yNjQ2ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDI0MXggZmFzdGVyCiAgIGNsYXNzZXMuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOTEuNjAzNCstMi4zMDg1ICAgICAgICAgICA5MS4xOTQzKy0xLjE0MDQgICAg
ICAgIAogICB0ZW1wbGF0ZV9zdHJpbmdfdGFnLmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAg
IDg0LjU0MzcrLTIuNDk2MiAgICAgICAgICAgODMuOTczNSstMi44NTIzICAgICAgICAKICAgdGVt
cGxhdGVfc3RyaW5nX3RhZy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgIDI0Mi41MzgxKy0x
MC44ODk4ICAgICAgICAgMjQwLjU4MDYrLTUuNjU5NSAgICAgICAgCiAgIG1hcC1zdHJpbmcuZXM1
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzMuMjk0OSstOC40MjQxICAgICAg
ICAgIDEyNi45MTM1Ky02LjUzOTcgICAgICAgICAgbWlnaHQgYmUgMS4wNTAzeCBmYXN0ZXIKICAg
bWFwLXN0cmluZy5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3Mi42Njkw
Ky01LjIwMzggICAgICAgICAgNTY5LjkzOTUrLTYuNjEwOSAgICAgICAgCiAgIGFycm93LWRlY2xh
cmUuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzMuMzAyNistNS4wMTMyICAg
ICA/ICAgIDEzNy45OTE4Ky0zLjc3OTUgICAgICAgID8gbWlnaHQgYmUgMS4wMzUyeCBzbG93ZXIK
ICAgYXJyb3ctZGVjbGFyZS5lczYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNC42
MjQ2Ky02LjA5MDEgICAgICAgICAgMTMyLjg3NzkrLTYuOTk4MyAgICAgICAgICBtaWdodCBiZSAx
LjAxMzF4IGZhc3RlcgogICBzcHJlYWQtZ2VuZXJhdG9yLmVzNSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTA3LjM2MjkrLTIuMDUxMyAgICAgICAgICAxMDUuMTkwNSstMC44MzczICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDIwN3ggZmFzdGVyCiAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMjIuMzIyOSstMTEuNjEwOCAgICAgICAgIDIxOS4wNzA2
Ky0zLjg3MTQgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ4eCBmYXN0ZXIKICAgb2JqZWN0LWxpdGVy
YWwtZXh0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC41NDk0Ky0wLjQzOTAgICAg
ID8gICAgIDI0Ljg1NzYrLTAuNjg3NyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjZ4IHNsb3dlcgog
ICBvYmplY3QtbGl0ZXJhbC1leHQuZXM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4Ljcy
MzMrLTEuMDIwNyAgICAgPyAgICAgMjkuMDM4MCstMS40MTA3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMHggc2xvd2VyCiAgIGdlbmVyYXRvci5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNDguNTY0MCstMC41NjAyICAgICA/ICAgIDE3NS4wODYxKy02Ni43ODk0ICAgICAg
ID8gbWlnaHQgYmUgMS4xNzg1eCBzbG93ZXIKICAgZ2VuZXJhdG9yLmVzNiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEzMC43Njk5Ky0zLjQwODEgICAgICAgICAgMTMwLjYwMzcr
LTQuNTA2OCAgICAgICAgCiAgIGFycm93LWFyZ3MuZXM1ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgODQuNTU4MCstOC42Njc1ICAgICA/ICAgICA4Ny45OTE2Ky04Ljc4MTQgICAg
ICAgID8gbWlnaHQgYmUgMS4wNDA2eCBzbG93ZXIKICAgYXJyb3ctYXJncy5lczYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4Mi40MzIwKy02LjU5MDcgICAgID8gICAgIDgyLjcx
MTUrLTUuNjk3MyAgICAgICAgPwogICBmb3Itb2YtYXJyYXkuZXM1ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjM5LjcwMjIrLTMuMjg4NiAgICAgPyAgICAyNDQuMzE3NistOS40Mzk4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5M3ggc2xvd2VyCiAgIGZvci1vZi1hcnJheS5lczYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNjkuNTcwOSstMy45MDgxICAgICA/ICAgIDI3
My4wODUxKy01Ljg4ODAgICAgICAgID8gbWlnaHQgYmUgMS4wMTMweCBzbG93ZXIKICAgYmluZGlu
Z3MuZXM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OC42NDQ0Ky0yLjc1
NjMgICAgICAgICAgIDg4LjA2NTgrLTQuNjIwNSAgICAgICAgCiAgIGJpbmRpbmdzLmVzNiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzkuMTQyNistMTAuNzUyMCAgICAgICAg
ICA3Ni4wNTgzKy02LjY0MDkgICAgICAgICAgbWlnaHQgYmUgMS4wNDA2eCBmYXN0ZXIKICAgZGVz
dHJ1Y3R1cmluZy5lczUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OC4zMjgxKy02
Ljg3ODcgICAgID8gICAgIDc5LjAxOTgrLTguMDM4NiAgICAgICAgPwogICBkZXN0cnVjdHVyaW5n
LmVzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2LjkzNjYrLTYuOTQzMyAgICAg
PyAgICAgODkuNDM5MystOS43MzM4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4OHggc2xvd2VyCiAg
IG1hcC1zZXQtb2JqZWN0LmVzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuMzQ2
NistMC42ODgyICAgICA/ICAgICAyNy43OTQ4Ky0wLjMwODMgICAgICAgID8gbWlnaHQgYmUgMS4w
MTY0eCBzbG93ZXIKICAgbWFwLXNldC1vYmplY3QuZXM2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3NC44MzQwKy00LjUzOTYgICAgID8gICAgMTg0LjY5MDcrLTIzLjAxNjYgICAgICAg
PyBtaWdodCBiZSAxLjA1NjR4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4OS43OTUxKy0wLjc3NDYgICAgID8gICAgIDkwLjAxMDgr
LTEuMDQ0OSAgICAgICAgPyBtaWdodCBiZSAxLjAwMjR4IHNsb3dlcgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAg
ICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
R2VvbWVhbiBvZiBwcmVmZXJyZWQgbWVhbnM6CiAgIDxzY2FsZWQtcmVzdWx0PiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgODEuMDE1MystMC41MTY5ICAgICA/ICAgICA4MS4yNDIw
Ky0wLjc5ODcgICAgICAgID8gbWlnaHQgYmUgMS4wMDI4eCBzbG93ZXIKCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>